[gnome-contacts] Flatpak: add devel tags and remove desktop suffix



commit 3c28940a16a3678f07300f73855477f43b23a33b
Author: Julian Sparber <julian sparber net>
Date:   Thu Jan 9 17:15:27 2020 +0100

    Flatpak: add devel tags and remove desktop suffix

 _build/.ninja_deps                                 |  Bin 0 -> 219992 bytes
 _build/.ninja_log                                  |   83 +
 _build/build.ninja                                 |  338 +
 _build/compile_commands.json                       |  242 +
 _build/config.h                                    |   27 +
 ...org.gnome.Contacts.Devel.SearchProvider.service |    3 +
 _build/data/org.gnome.Contacts.Devel.appdata.xml   |  727 ++
 _build/data/org.gnome.Contacts.Devel.desktop       |  215 +
 .../org.gnome.Contacts.Devel.search-provider.ini   |    5 +
 _build/data/org.gnome.Contacts.Devel.service       |    3 +
 _build/data/org.gnome.Contacts.appdata.xml.in      |  435 +
 _build/data/org.gnome.Contacts.c                   | 1449 ++++
 _build/data/org.gnome.Contacts.desktop.in          |   14 +
 _build/data/org.gnome.Contacts.h                   |    7 +
 _build/man/gnome-contacts.1                        |  110 +
 _build/meson-info/intro-benchmarks.json            |    1 +
 _build/meson-info/intro-buildoptions.json          |    1 +
 _build/meson-info/intro-buildsystem_files.json     |    1 +
 _build/meson-info/intro-dependencies.json          |    1 +
 _build/meson-info/intro-installed.json             |    1 +
 _build/meson-info/intro-projectinfo.json           |    1 +
 _build/meson-info/intro-targets.json               |    1 +
 _build/meson-info/intro-tests.json                 |    1 +
 _build/meson-info/meson-info.json                  |    1 +
 _build/meson-logs/install-log.txt                  |   17 +
 _build/meson-logs/meson-log.txt                    |  373 +
 _build/meson-private/build.dat                     |  Bin 0 -> 84239 bytes
 _build/meson-private/cleantrees.dat                |  Bin 0 -> 351 bytes
 _build/meson-private/cmd_line.txt                  |    7 +
 _build/meson-private/coredata.dat                  |  Bin 0 -> 65777 bytes
 _build/meson-private/install.dat                   |  Bin 0 -> 2410 bytes
 _build/meson-private/meson.lock                    |    0
 _build/meson-private/meson_benchmark_setup.dat     |  Bin 0 -> 6 bytes
 _build/meson-private/meson_test_setup.dat          |  Bin 0 -> 1145 bytes
 _build/meson-private/sanitycheckc.c                |    1 +
 _build/meson-private/sanitycheckc.exe              |  Bin 0 -> 20952 bytes
 _build/po/af.gmo                                   |  Bin 0 -> 5187 bytes
 _build/po/ar.gmo                                   |  Bin 0 -> 10868 bytes
 _build/po/as.gmo                                   |  Bin 0 -> 13444 bytes
 _build/po/ast.gmo                                  |  Bin 0 -> 5913 bytes
 _build/po/be.gmo                                   |  Bin 0 -> 12184 bytes
 _build/po/bg.gmo                                   |  Bin 0 -> 8727 bytes
 _build/po/bn_IN.gmo                                |  Bin 0 -> 13847 bytes
 _build/po/bs.gmo                                   |  Bin 0 -> 9701 bytes
 _build/po/ca.gmo                                   |  Bin 0 -> 12426 bytes
 _build/po/ca valencia gmo                          |  Bin 0 -> 9679 bytes
 _build/po/cs.gmo                                   |  Bin 0 -> 12105 bytes
 _build/po/da.gmo                                   |  Bin 0 -> 11782 bytes
 _build/po/de.gmo                                   |  Bin 0 -> 12414 bytes
 _build/po/el.gmo                                   |  Bin 0 -> 16193 bytes
 _build/po/en_CA.gmo                                |  Bin 0 -> 7673 bytes
 _build/po/en_GB.gmo                                |  Bin 0 -> 11535 bytes
 _build/po/eo.gmo                                   |  Bin 0 -> 10522 bytes
 _build/po/es.gmo                                   |  Bin 0 -> 12286 bytes
 _build/po/et.gmo                                   |  Bin 0 -> 8267 bytes
 _build/po/eu.gmo                                   |  Bin 0 -> 12047 bytes
 _build/po/fa.gmo                                   |  Bin 0 -> 14386 bytes
 _build/po/fi.gmo                                   |  Bin 0 -> 12148 bytes
 _build/po/fr.gmo                                   |  Bin 0 -> 12578 bytes
 _build/po/fur.gmo                                  |  Bin 0 -> 11870 bytes
 _build/po/ga.gmo                                   |  Bin 0 -> 5744 bytes
 _build/po/gd.gmo                                   |  Bin 0 -> 10538 bytes
 _build/po/gl.gmo                                   |  Bin 0 -> 12043 bytes
 _build/po/gu.gmo                                   |  Bin 0 -> 13895 bytes
 _build/po/he.gmo                                   |  Bin 0 -> 10991 bytes
 _build/po/hi.gmo                                   |  Bin 0 -> 12773 bytes
 _build/po/hr.gmo                                   |  Bin 0 -> 11943 bytes
 _build/po/hu.gmo                                   |  Bin 0 -> 12413 bytes
 _build/po/id.gmo                                   |  Bin 0 -> 11837 bytes
 _build/po/is.gmo                                   |  Bin 0 -> 11116 bytes
 _build/po/it.gmo                                   |  Bin 0 -> 11856 bytes
 _build/po/ja.gmo                                   |  Bin 0 -> 11996 bytes
 _build/po/kk.gmo                                   |  Bin 0 -> 14873 bytes
 _build/po/kn.gmo                                   |  Bin 0 -> 15567 bytes
 _build/po/ko.gmo                                   |  Bin 0 -> 12187 bytes
 _build/po/lt.gmo                                   |  Bin 0 -> 12142 bytes
 _build/po/lv.gmo                                   |  Bin 0 -> 12178 bytes
 _build/po/mjw.gmo                                  |  Bin 0 -> 5433 bytes
 _build/po/mk.gmo                                   |  Bin 0 -> 7306 bytes
 _build/po/ml.gmo                                   |  Bin 0 -> 14600 bytes
 _build/po/mr.gmo                                   |  Bin 0 -> 13422 bytes
 _build/po/nb.gmo                                   |  Bin 0 -> 9021 bytes
 _build/po/ne.gmo                                   |  Bin 0 -> 13857 bytes
 _build/po/nl.gmo                                   |  Bin 0 -> 12096 bytes
 _build/po/oc.gmo                                   |  Bin 0 -> 10283 bytes
 _build/po/or.gmo                                   |  Bin 0 -> 14349 bytes
 _build/po/pa.gmo                                   |  Bin 0 -> 12762 bytes
 _build/po/pl.gmo                                   |  Bin 0 -> 12452 bytes
 _build/po/pt.gmo                                   |  Bin 0 -> 10101 bytes
 _build/po/pt_BR.gmo                                |  Bin 0 -> 12485 bytes
 _build/po/ro.gmo                                   |  Bin 0 -> 12455 bytes
 _build/po/ru.gmo                                   |  Bin 0 -> 15214 bytes
 _build/po/sk.gmo                                   |  Bin 0 -> 12326 bytes
 _build/po/sl.gmo                                   |  Bin 0 -> 11876 bytes
 _build/po/sr.gmo                                   |  Bin 0 -> 15481 bytes
 _build/po/sr latin gmo                             |  Bin 0 -> 11875 bytes
 _build/po/sv.gmo                                   |  Bin 0 -> 11941 bytes
 _build/po/ta.gmo                                   |  Bin 0 -> 15450 bytes
 _build/po/te.gmo                                   |  Bin 0 -> 14238 bytes
 _build/po/tg.gmo                                   |  Bin 0 -> 12203 bytes
 _build/po/th.gmo                                   |  Bin 0 -> 14082 bytes
 _build/po/tr.gmo                                   |  Bin 0 -> 11881 bytes
 _build/po/ug.gmo                                   |  Bin 0 -> 10386 bytes
 _build/po/uk.gmo                                   |  Bin 0 -> 14800 bytes
 _build/po/vi.gmo                                   |  Bin 0 -> 10598 bytes
 _build/po/zh_CN.gmo                                |  Bin 0 -> 11398 bytes
 _build/po/zh_HK.gmo                                |  Bin 0 -> 9257 bytes
 _build/po/zh_TW.gmo                                |  Bin 0 -> 11360 bytes
 .../25a6634@@contacts@sta/contacts-avatar-utils.c  |  861 ++
 .../src/25a6634@@contacts@sta/contacts-esd-setup.c | 1461 ++++
 .../contacts-fake-persona-store.c                  | 2320 +++++
 .../25a6634@@contacts@sta/contacts-im-service.c    |  147 +
 _build/src/25a6634@@contacts@sta/contacts-store.c  | 2542 ++++++
 .../contacts-type-descriptor.c                     | 1283 +++
 .../src/25a6634@@contacts@sta/contacts-typeset.c   | 1570 ++++
 _build/src/25a6634@@contacts@sta/contacts-utils.c  | 5665 ++++++++++++
 .../contacts-vcard-type-mapping.c                  |  313 +
 .../meson-generated_contacts-avatar-utils.c.o      |  Bin 0 -> 37320 bytes
 .../meson-generated_contacts-esd-setup.c.o         |  Bin 0 -> 79768 bytes
 ...meson-generated_contacts-fake-persona-store.c.o |  Bin 0 -> 100792 bytes
 .../meson-generated_contacts-im-service.c.o        |  Bin 0 -> 15392 bytes
 .../meson-generated_contacts-store.c.o             |  Bin 0 -> 88536 bytes
 .../meson-generated_contacts-type-descriptor.c.o   |  Bin 0 -> 51736 bytes
 .../meson-generated_contacts-typeset.c.o           |  Bin 0 -> 64504 bytes
 .../meson-generated_contacts-utils.c.o             |  Bin 0 -> 194928 bytes
 ...meson-generated_contacts-vcard-type-mapping.c.o |  Bin 0 -> 16296 bytes
 .../contacts-shell-search-provider.c               | 3728 ++++++++
 ...on-generated_contacts-shell-search-provider.c.o |  Bin 0 -> 136464 bytes
 .../25a6634@@gnome-contacts@exe/cc-crop-area.c.o   |  Bin 0 -> 72688 bytes
 .../25a6634@@gnome-contacts@exe/cheese-flash.c.o   |  Bin 0 -> 63744 bytes
 .../contacts-accounts-list.c                       |  890 ++
 .../src/25a6634@@gnome-contacts@exe/contacts-app.c | 2855 ++++++
 .../contacts-avatar-selector.c                     | 1864 ++++
 .../25a6634@@gnome-contacts@exe/contacts-avatar.c  | 1192 +++
 .../contacts-contact-editor.c                      | 9114 ++++++++++++++++++++
 .../contacts-contact-form.c                        |  477 +
 .../contacts-contact-list.c                        | 2291 +++++
 .../contacts-contact-pane.c                        | 2732 ++++++
 .../contacts-contact-sheet.c                       | 2140 +++++
 .../contacts-crop-cheese-dialog.c                  |  570 ++
 .../contacts-in-app-notification.c                 |  377 +
 .../contacts-link-suggestion-grid.c                |  647 ++
 .../contacts-linked-personas-dialog.c              |  751 ++
 .../25a6634@@gnome-contacts@exe/contacts-linking.c | 9021 +++++++++++++++++++
 .../contacts-list-pane.c                           |  873 ++
 .../contacts-max-width-bin.c                       |  463 +
 .../contacts-settings.c                            |  302 +
 .../contacts-setup-window.c                        |  491 ++
 .../contacts-type-combo.c                          |  472 +
 .../contacts-ui-state.c                            |   91 +
 .../25a6634@@gnome-contacts@exe/contacts-window.c  | 3529 ++++++++
 _build/src/25a6634@@gnome-contacts@exe/main.c      |   98 +
 ...son-generated_.._.._data_org.gnome.Contacts.c.o |  Bin 0 -> 23272 bytes
 .../meson-generated_contacts-accounts-list.c.o     |  Bin 0 -> 80344 bytes
 .../meson-generated_contacts-app.c.o               |  Bin 0 -> 117448 bytes
 .../meson-generated_contacts-avatar-selector.c.o   |  Bin 0 -> 114984 bytes
 .../meson-generated_contacts-avatar.c.o            |  Bin 0 -> 81448 bytes
 .../meson-generated_contacts-contact-editor.c.o    |  Bin 0 -> 291216 bytes
 .../meson-generated_contacts-contact-form.c.o      |  Bin 0 -> 68240 bytes
 .../meson-generated_contacts-contact-list.c.o      |  Bin 0 -> 123264 bytes
 .../meson-generated_contacts-contact-pane.c.o      |  Bin 0 -> 132528 bytes
 .../meson-generated_contacts-contact-sheet.c.o     |  Bin 0 -> 112152 bytes
 ...meson-generated_contacts-crop-cheese-dialog.c.o |  Bin 0 -> 77848 bytes
 ...eson-generated_contacts-in-app-notification.c.o |  Bin 0 -> 62656 bytes
 ...son-generated_contacts-link-suggestion-grid.c.o |  Bin 0 -> 72912 bytes
 ...n-generated_contacts-linked-personas-dialog.c.o |  Bin 0 -> 74944 bytes
 .../meson-generated_contacts-linking.c.o           |  Bin 0 -> 258232 bytes
 .../meson-generated_contacts-list-pane.c.o         |  Bin 0 -> 85024 bytes
 .../meson-generated_contacts-max-width-bin.c.o     |  Bin 0 -> 59096 bytes
 .../meson-generated_contacts-settings.c.o          |  Bin 0 -> 30808 bytes
 .../meson-generated_contacts-setup-window.c.o      |  Bin 0 -> 69264 bytes
 .../meson-generated_contacts-type-combo.c.o        |  Bin 0 -> 69352 bytes
 .../meson-generated_contacts-ui-state.c.o          |  Bin 0 -> 11968 bytes
 .../meson-generated_contacts-window.c.o            |  Bin 0 -> 158088 bytes
 .../meson-generated_main.c.o                       |  Bin 0 -> 16136 bytes
 _build/src/contacts.h                              |  291 +
 _build/src/contacts.vapi                           |  159 +
 _build/src/gnome-contacts                          |  Bin 0 -> 1933856 bytes
 _build/src/gnome-contacts-search-provider          |  Bin 0 -> 505072 bytes
 _build/src/libcontacts.a                           |  Bin 0 -> 654560 bytes
 _build/tests/59830eb@@basic-test@exe/basic-test.c  |   90 +
 .../meson-generated_basic-test.c.o                 |  Bin 0 -> 17600 bytes
 _build/tests/basic-test                            |  Bin 0 -> 413344 bytes
 data/flatpak/org.gnome.Contacts.Devel.json         |    5 +-
 184 files changed, 65739 insertions(+), 1 deletion(-)
---
diff --git a/_build/.ninja_deps b/_build/.ninja_deps
new file mode 100644
index 0000000..13de620
Binary files /dev/null and b/_build/.ninja_deps differ
diff --git a/_build/.ninja_log b/_build/.ninja_log
new file mode 100644
index 0000000..d6f7cd6
--- /dev/null
+++ b/_build/.ninja_log
@@ -0,0 +1,83 @@
+# ninja log v5
+2      222     1578588488204498400     data/org.gnome.Contacts.h       8b8e0f8f3e8b5f3b
+1      252     1578588488232498387     data/org.gnome.Contacts.c       b32f79dfd5d098d0
+23     379     1578588488308498349     man/gnome-contacts.1    eb10229333fd13f4
+3      644     1578588488588498212     data/org.gnome.Contacts.Devel.desktop   1beccab63bb58c1a
+4      658     1578588488608498202     data/org.gnome.Contacts.Devel.appdata.xml       8674cc66f36ffe88
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-esd-setup.c  6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-fake-persona-store.c 
6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-im-service.c 6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-store.c      6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-typeset.c    6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-type-descriptor.c    
6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-utils.c      6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-avatar-utils.c       
6dc371628d91f8a5
+5      769     1578588488748498132     src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c 
6dc371628d91f8a5
+5      769     1578588488748498132     src/contacts.h  6dc371628d91f8a5
+5      769     1578588488748498132     src/contacts.vapi       6dc371628d91f8a5
+772    1072    1578588489052497983     src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o     
  f2265803c3ff9384
+773    1559    1578588489536497744     src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o    
3bf804c98b505c4a
+770    1692    1578588489668497679     
src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o       17f7b04530f6842b
+774    2125    1578588490100497466     
src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o  589d0b30634003cd
+1692   2241    1578588490220497408     
src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o       76ace47f47e9786b
+773    2300    1578588490280497377     src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o  
13fb6eefdfca38aa
+769    2876    1578588490856497093     src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o      
  be66c6fe2ba4c8e5
+2126   2910    1578588490888497077     
src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o       466772b173d830cc
+1560   2927    1578588490908497067     src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o   
  a763c152da5f1f71
+1073   3653    1578588491632496710     src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o    
26416b168288ecac
+3653   3716    1578588491700496677     src/libcontacts.a       1475cf69ad53b5d8
+2911   4037    1578588492008496524     
src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c        71900650c8f93cf
+2927   4055    1578588492028496514     tests/59830eb@@basic-test@exe/basic-test.c      c036ab74df104fbb
+2300   4133    1578588492092496483     src/25a6634@@gnome-contacts@exe/cheese-flash.c.o        ab519a86b96fd2
+2878   4251    1578588492224496418     src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o        
8db52850020b4383
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c        
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-app.c  9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-avatar.c       
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c      
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c       
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-contact-form.c 
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-contact-list.c 
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c 
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c        
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c   
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c  
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c 
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c     
  9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-linking.c      
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-list-pane.c    
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c        
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-settings.c     
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-setup-window.c 
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-type-combo.c   
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-ui-state.c     
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/contacts-window.c       
9cc75d37c592d75b
+2241   4352    1578588492324496369     src/25a6634@@gnome-contacts@exe/main.c  9cc75d37c592d75b
+4055   5759    1578588493736495672     tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o    
7ba6e6e8edd35004
+4038   6351    1578588494332495377     
src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o      
30ae76cd9aca1d75
+4352   6406    1578588494384495351     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o      8655dffe1b8a0ddd
+4353   6802    1578588494784495154     src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o      
  d0eeb8330c8a02f9
+4355   6938    1578588494920495086     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o    82e0cbb63d2b6dca
+4375   7246    1578588495224494936     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o     86c10957a455f208
+5759   8074    1578588496056494525     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o       c1183a03621a519c
+6352   8598    1578588496580494265     src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o   
  1411b9db9a5155f2
+6406   8766    1578588496744494183     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o       a5dd79ac0bdc874c
+6802   8984    1578588496964494074     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o       37200eb209a80c74
+8074   9254    1578588497236493940     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o        77045b03782843c7
+7246   9472    1578588497452493833     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o      5e8c4ff349c7d46
+6938   10065   1578588498044493540     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o 2749413f1332b6c3
+8766   10554   1578588498532493298     src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o        
f2fc6e479a640001
+9472   10625   1578588498604493263     src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o 
  ae5e6e66f6a4e66f
+9254   10743   1578588498724493203     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o      212786a388b40baf
+8985   10753   1578588498732493199     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o cf6f318d5259b2a6
+8598   11273   1578588499252492941     src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o   
  11d27af220dbdabb
+11273  11623   1578588499604492767     src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o 
  b5519caeb4298caf
+10065  12118   1578588500096492523     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o       d6a05888a39a487e
+10555  12642   1578588500620492262     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o     d318a1c47e0f2ba2
+11624  12684   1578588500664492240     tests/basic-test        d22c43a242e23b7b
+10743  12898   1578588500876492136     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o  89b42b78371f9b99
+10754  12970   1578588500952492098     
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o       9b210ef50e820209
+12118  13020   1578588501000492075     src/gnome-contacts-search-provider      9af2bc35f524bb81
+10626  13233   1578588501212491969     src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o  
  a086c55a2680f565
+13233  13769   1578588501748491703     src/gnome-contacts      1a629508b41eab69
+10     1000    0       meson-install   9bd7faa9472bf40f
+16     1062    0       meson-install   9bd7faa9472bf40f
diff --git a/_build/build.ninja b/_build/build.ninja
new file mode 100644
index 0000000..9443ad3
--- /dev/null
+++ b/_build/build.ninja
@@ -0,0 +1,338 @@
+# This is the build file for project "gnome-contacts"
+# It is autogenerated by the Meson build system.
+# Do not edit by hand.
+
+ninja_required_version = 1.5.1
+
+# Rules for compiling.
+
+rule c_COMPILER
+ command = ccache cc $ARGS -MD -MQ $out -MF '$DEPFILE' -o $out -c $in
+ deps = gcc
+ depfile = $DEPFILE
+ description = Compiling C object $out.
+
+rule vala_COMPILER
+ command = valac $ARGS $in
+ description = Compiling Vala source $in.
+ restat = 1
+
+# Rules for linking.
+
+rule STATIC_LINKER
+ command = rm -f $out && gcc-ar $LINK_ARGS $out $in
+ description = Linking static target $out.
+
+rule c_LINKER
+ command = ccache cc $ARGS -o $out $in $LINK_ARGS
+ description = Linking target $out.
+
+# Other rules
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+ restat = 1
+
+rule CUSTOM_COMMAND_DEP
+ command = $COMMAND
+ deps = gcc
+ depfile = $DEPFILE
+ description = $DESC
+ restat = 1
+
+rule REGENERATE_BUILD
+ command = /usr/bin/meson --internal regenerate /home/julian/playground/gnome-contacts 
/home/julian/playground/gnome-contacts/_build --backend ninja
+ description = Regenerating build files.
+ generator = 1
+
+# Phony build target, always out of date
+
+build PHONY: phony 
+
+# Build rules for targets
+
+build data/org.gnome.Contacts.c: CUSTOM_COMMAND_DEP ../data/contacts.gresource.xml
+ DEPFILE = data/org.gnome.Contacts.c.d
+ COMMAND = glib-compile-resources ../data/contacts.gresource.xml --sourcedir ../data --c-name resources 
--internal --generate --target data/org.gnome.Contacts.c --dependency-file data/org.gnome.Contacts.c.d
+ description = Generating$ org.gnome.Contacts_c$ with$ a$ custom$ command.
+
+build data/org.gnome.Contacts.h: CUSTOM_COMMAND ../data/contacts.gresource.xml
+ COMMAND = glib-compile-resources ../data/contacts.gresource.xml --sourcedir ../data --c-name resources 
--internal --generate --target data/org.gnome.Contacts.h
+ description = Generating$ org.gnome.Contacts_h$ with$ a$ custom$ command.
+
+build data/org.gnome.Contacts.Devel.desktop: CUSTOM_COMMAND data/org.gnome.Contacts.desktop.in
+ COMMAND = /usr/bin/meson --internal msgfmthelper data/org.gnome.Contacts.desktop.in 
data/org.gnome.Contacts.Devel.desktop desktop /home/julian/playground/gnome-contacts/po
+ description = Generating$ org.gnome.Contacts.Devel.desktop_data_merge$ with$ a$ custom$ command.
+
+build data/org.gnome.Contacts.Devel.appdata.xml: CUSTOM_COMMAND data/org.gnome.Contacts.appdata.xml.in
+ COMMAND = /usr/bin/meson --internal msgfmthelper data/org.gnome.Contacts.appdata.xml.in 
data/org.gnome.Contacts.Devel.appdata.xml xml /home/julian/playground/gnome-contacts/po
+ description = Generating$ org.gnome.Contacts.Devel.appdata.xml_data_merge$ with$ a$ custom$ command.
+
+build meson-gnome-contacts-pot: CUSTOM_COMMAND 
+ COMMAND = /usr/bin/meson --internal commandrunner /home/julian/playground/gnome-contacts 
/home/julian/playground/gnome-contacts/_build po /usr/bin/meson /usr/bin/meson --internal gettext pot 
--pkgname=gnome-contacts 
--extra-args=--keyword=g_dpgettext2:2c,3@@--keyword=g_dngettext:2,3@@--flag=g_strdup_printf:1:c-format@@--flag=g_sprintf:2:c-format@@--flag=g_string_printf:2:c-format@@--flag=g_error_new:3:c-format@@--flag=N_:1:pass-c-format@@--flag=g_log:3:c-format@@--add-comments@@--flag=g_print:1:c-format@@--flag=NC_:2:pass-c-format@@--flag=g_fprintf:2:c-format@@--flag=g_string_append_printf:2:c-format@@--flag=g_set_error:4:c-format@@--keyword=C_:1c,2@@--keyword=g_dcgettext:2@@--keyword=_@@--flag=g_printf:1:c-format@@--flag=g_dngettext:2:pass-c-format@@--flag=C_:2:pass-c-format@@--keyword=N_@@--from-code=UTF-8@@--keyword=NC_:1c,2@@--flag=g_markup_printf_escaped:1:c-format@@--flag=g_snprintf:3:c-format@@--flag=g_printerr:1:c-format
+ description = Running$ external$ command$ gnome-contacts-pot.
+ pool = console
+
+build gnome-contacts-pot: phony meson-gnome-contacts-pot
+
+build meson-gnome-contacts-gmo: CUSTOM_COMMAND 
+ COMMAND = /usr/bin/meson --internal commandrunner /home/julian/playground/gnome-contacts 
/home/julian/playground/gnome-contacts/_build po /usr/bin/meson /usr/bin/meson --internal gettext gen_gmo
+ description = Running$ external$ command$ gnome-contacts-gmo.
+ pool = console
+
+build gnome-contacts-gmo: phony meson-gnome-contacts-gmo
+
+build meson-gnome-contacts-update-po: CUSTOM_COMMAND 
+ COMMAND = /usr/bin/meson --internal commandrunner /home/julian/playground/gnome-contacts 
/home/julian/playground/gnome-contacts/_build po /usr/bin/meson /usr/bin/meson --internal gettext update_po 
--pkgname=gnome-contacts 
--extra-args=--keyword=g_dpgettext2:2c,3@@--keyword=g_dngettext:2,3@@--flag=g_strdup_printf:1:c-format@@--flag=g_sprintf:2:c-format@@--flag=g_string_printf:2:c-format@@--flag=g_error_new:3:c-format@@--flag=N_:1:pass-c-format@@--flag=g_log:3:c-format@@--add-comments@@--flag=g_print:1:c-format@@--flag=NC_:2:pass-c-format@@--flag=g_fprintf:2:c-format@@--flag=g_string_append_printf:2:c-format@@--flag=g_set_error:4:c-format@@--keyword=C_:1c,2@@--keyword=g_dcgettext:2@@--keyword=_@@--flag=g_printf:1:c-format@@--flag=g_dngettext:2:pass-c-format@@--flag=C_:2:pass-c-format@@--keyword=N_@@--from-code=UTF-8@@--keyword=NC_:1c,2@@--flag=g_markup_printf_escaped:1:c-format@@--flag=g_snprintf:3:c-format@@--flag=g_printerr:1:c-format
+ description = Running$ external$ command$ gnome-contacts-update-po.
+ pool = console
+
+build gnome-contacts-update-po: phony meson-gnome-contacts-update-po
+
+build src/gschemas.compiled: CUSTOM_COMMAND  | /usr/bin/glib-compile-schemas
+ COMMAND = /usr/bin/glib-compile-schemas --targetdir src ../src
+ description = Generating$ gsettings-compile-src$ with$ a$ custom$ command.
+
+build src/25a6634@@contacts@sta/contacts-esd-setup.c src/25a6634@@contacts@sta/contacts-fake-persona-store.c 
src/25a6634@@contacts@sta/contacts-im-service.c src/25a6634@@contacts@sta/contacts-store.c 
src/25a6634@@contacts@sta/contacts-typeset.c src/25a6634@@contacts@sta/contacts-type-descriptor.c 
src/25a6634@@contacts@sta/contacts-utils.c src/25a6634@@contacts@sta/contacts-avatar-utils.c 
src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c src/contacts.h src/contacts.vapi: vala_COMPILER 
../src/contacts-esd-setup.vala ../src/contacts-fake-persona-store.vala ../src/contacts-im-service.vala 
../src/contacts-store.vala ../src/contacts-typeset.vala ../src/contacts-type-descriptor.vala 
../src/contacts-utils.vala ../src/contacts-avatar-utils.vala ../src/contacts-vcard-type-mapping.vala
+ ARGS = -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg cheese-gtk --pkg 
cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg libebook-1.2 --pkg 
gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg gio-unix-2.0 --pkg 
gee-0.8 --pkg folks-eds --pkg folks --color=always --directory src/25a6634@@contacts@sta --basedir ../src 
--library contacts --header src/contacts.h --vapi ../contacts.vapi --target-glib=2.44 --pkg config --pkg 
custom -D HAVE_CHEESE
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-esd-setup.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-fake-persona-store.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-im-service.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-store.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-typeset.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-type-descriptor.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-utils.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-avatar-utils.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o: c_COMPILER 
src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c || src/contacts.h
+ DEPFILE = src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o.d
+ ARGS = -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0 
-I/usr/inclu
 de/cogl 
 -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/libcontacts.a: STATIC_LINKER src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o 
src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o
+ LINK_ARGS = csrD
+
+build src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c 
src/25a6634@@gnome-contacts@exe/contacts-app.c src/25a6634@@gnome-contacts@exe/contacts-avatar.c 
src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c 
src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c 
src/25a6634@@gnome-contacts@exe/contacts-contact-form.c 
src/25a6634@@gnome-contacts@exe/contacts-contact-list.c 
src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c 
src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c 
src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c 
src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c 
src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c 
src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c 
src/25a6634@@gnome-contacts@exe/contacts-linking.c src/25a6634@@gnome-contacts@exe/contacts-list-pane.c 
src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c src/25a6634@@gnome-contacts@exe/contacts-settings.c 
src/25a6634@@gnome-
 contacts
 @exe/contacts-setup-window.c src/25a6634@@gnome-contacts@exe/contacts-type-combo.c 
src/25a6634@@gnome-contacts@exe/contacts-ui-state.c src/25a6634@@gnome-contacts@exe/contacts-window.c 
src/25a6634@@gnome-contacts@exe/main.c: vala_COMPILER ../src/contacts-accounts-list.vala 
../src/contacts-app.vala ../src/contacts-avatar.vala ../src/contacts-avatar-selector.vala 
../src/contacts-contact-editor.vala ../src/contacts-contact-form.vala ../src/contacts-contact-list.vala 
../src/contacts-contact-pane.vala ../src/contacts-contact-sheet.vala ../src/contacts-crop-cheese-dialog.vala 
../src/contacts-in-app-notification.vala ../src/contacts-link-suggestion-grid.vala 
../src/contacts-linked-personas-dialog.vala ../src/contacts-linking.vala ../src/contacts-list-pane.vala 
../src/contacts-max-width-bin.vala ../src/contacts-settings.vala ../src/contacts-setup-window.vala 
../src/contacts-type-combo.vala ../src/contacts-ui-state.vala ../src/contacts-window.vala ../src/main.vala 
src/contacts.vapi |
  src/con
 tacts.vapi
+ ARGS = -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg cheese-gtk --pkg 
cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg libebook-1.2 --pkg 
gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg gio-unix-2.0 --pkg 
gee-0.8 --pkg folks-eds --pkg folks --color=always --directory src/25a6634@@gnome-contacts@exe --basedir 
../src --gresources=../data/contacts.gresource.xml --target-glib=2.44 --pkg config --pkg custom -D HAVE_CHEESE
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o: c_COMPILER 
data/org.gnome.Contacts.c | src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-Wall -Winvalid-pch -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-app.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-avatar.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-contact-form.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-contact-list.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-linking.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-list-pane.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-settings.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-setup-window.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-type-combo.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-ui-state.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/contacts-window.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o: c_COMPILER 
src/25a6634@@gnome-contacts@exe/main.c || src/contacts.h data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o: c_COMPILER ../src/cc-crop-area.c || src/contacts.h 
data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-Wall -Winvalid-pch -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/25a6634@@gnome-contacts@exe/cheese-flash.c.o: c_COMPILER ../src/cheese-flash.c || src/contacts.h 
data/org.gnome.Contacts.h
+ DEPFILE = src/25a6634@@gnome-contacts@exe/cheese-flash.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-Wall -Winvalid-pch -g -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR="/app/share/locale"'
+
+build src/gnome-contacts: c_LINKER 
src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_conta
 cts-link
 -suggestion-grid.c.o src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o 
src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o 
src/25a6634@@gnome-contacts@exe/cheese-flash.c.o | /usr/lib/x86_64-linux-gnu/libm.so /app/lib/libfolks.so 
/app/lib/libgee-0.8.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libglib-2.
 0.so /ap
 p/lib/libfolks-eds.so /app/lib/libebook-1.2.so /app/lib/libedata-book-1.2.so /app/lib/libebackend-1.2.so 
/app/lib/libebook-contacts-1.2.so /app/lib/libedataserver-1.2.so /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so 
/usr/lib/x86_64-linux-gnu/libsecret-1.so /usr/lib/x86_64-linux-gnu/libxml2.so 
/usr/lib/x86_64-linux-gnu/libsoup-2.4.so /usr/lib/x86_64-linux-gnu/libgio-2.0.so 
/app/lib/libgnome-desktop-3.so /usr/lib/x86_64-linux-gnu/libgtk-3.so /usr/lib/x86_64-linux-gnu/libgdk-3.so 
/usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so 
/usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so 
/usr/lib/x86_64-linux-gnu/libatk-1.0.so /usr/lib/x86_64-linux-gnu/libcairo-gobject.so 
/usr/lib/x86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /app/lib/libgoa-1.0.so 
/app/lib/libedataserverui-1.2.so /app/lib/libecal-2.0.so /app/lib/libical-glib.so /app/lib/libical.so 
/app/lib/libicalss.so /app/lib/libicalvcal.so /ap
 p/lib/li
 bhandy-0.0.so /app/lib/libcheese.so /usr/lib/x86_64-linux-gnu/libclutter-1.0.so 
/usr/lib/x86_64-linux-gnu/libcogl-path.so /usr/lib/x86_64-linux-gnu/libcogl-pango.so 
/usr/lib/x86_64-linux-gnu/libcogl.so /usr/lib/x86_64-linux-gnu/libwayland-egl.so 
/usr/lib/x86_64-linux-gnu/libEGL.so /usr/lib/x86_64-linux-gnu/libXrandr.so 
/usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so /usr/lib/x86_64-linux-gnu/libwayland-cursor.so 
/usr/lib/x86_64-linux-gnu/libwayland-client.so /usr/lib/x86_64-linux-gnu/libxkbcommon.so 
/usr/lib/x86_64-linux-gnu/libwayland-server.so /usr/lib/x86_64-linux-gnu/libX11.so 
/usr/lib/x86_64-linux-gnu/libXext.so /usr/lib/x86_64-linux-gnu/libXdamage.so 
/usr/lib/x86_64-linux-gnu/libXfixes.so /usr/lib/x86_64-linux-gnu/libXcomposite.so 
/usr/lib/x86_64-linux-gnu/libXi.so /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so /app/lib/libcheese-gtk.so 
/usr/lib/x86_64-linux-gnu/libclutter-gtk-1.0.so src/libcontacts.a
+ LINK_ARGS = -L/app/lib -Wl,--no-undefined -Wl,--as-needed -Wl,--start-group src/libcontacts.a 
/app/lib/libfolks.so /app/lib/libgee-0.8.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so 
/usr/lib/x86_64-linux-gnu/libglib-2.0.so /app/lib/libfolks-eds.so /app/lib/libebook-1.2.so 
/app/lib/libedata-book-1.2.so /app/lib/libebackend-1.2.so /app/lib/libebook-contacts-1.2.so 
/app/lib/libedataserver-1.2.so -Wl,--export-dynamic -pthread /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so 
/usr/lib/x86_64-linux-gnu/libsecret-1.so /usr/lib/x86_64-linux-gnu/libxml2.so 
/usr/lib/x86_64-linux-gnu/libsoup-2.4.so /usr/lib/x86_64-linux-gnu/libgio-2.0.so 
/app/lib/libgnome-desktop-3.so /usr/lib/x86_64-linux-gnu/libgtk-3.so /usr/lib/x86_64-linux-gnu/libgdk-3.so 
/usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so 
/usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so 
/usr/lib/x86_64-linux-gnu/libatk-1.0.so /usr/lib/x86_64-linux-gnu/libcairo-gobject.so /u
 sr/lib/x
 86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /app/lib/libgoa-1.0.so 
/app/lib/libedataserverui-1.2.so /app/lib/libecal-2.0.so /app/lib/libical-glib.so /app/lib/libical.so 
/app/lib/libicalss.so /app/lib/libicalvcal.so /app/lib/libhandy-0.0.so -lm /app/lib/libcheese.so 
/usr/lib/x86_64-linux-gnu/libclutter-1.0.so /usr/lib/x86_64-linux-gnu/libcogl-path.so 
/usr/lib/x86_64-linux-gnu/libcogl-pango.so /usr/lib/x86_64-linux-gnu/libcogl.so 
/usr/lib/x86_64-linux-gnu/libwayland-egl.so /usr/lib/x86_64-linux-gnu/libEGL.so 
/usr/lib/x86_64-linux-gnu/libXrandr.so /usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so 
/usr/lib/x86_64-linux-gnu/libwayland-cursor.so /usr/lib/x86_64-linux-gnu/libwayland-client.so 
/usr/lib/x86_64-linux-gnu/libxkbcommon.so /usr/lib/x86_64-linux-gnu/libwayland-server.so 
/usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so 
/usr/lib/x86_64-linux-gnu/libXdamage.so /usr/lib/x86_64-linux-gnu/libXfixes.so /usr/lib/x86_64-linux-gnu/
 libXcomp
 osite.so /usr/lib/x86_64-linux-gnu/libXi.so /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so 
/app/lib/libcheese-gtk.so /usr/lib/x86_64-linux-gnu/libclutter-gtk-1.0.so -Wl,--end-group 
'-Wl,-rpath,$$ORIGIN/' -Wl,-rpath-link,/home/julian/playground/gnome-contacts/_build/src
+
+build src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c: vala_COMPILER 
../src/contacts-shell-search-provider.vala src/contacts.vapi | src/contacts.vapi
+ ARGS = -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg cheese-gtk --pkg 
cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg libebook-1.2 --pkg 
gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg gio-unix-2.0 --pkg 
gee-0.8 --pkg folks-eds --pkg folks --color=always --directory 
src/25a6634@@gnome-contacts-search-provider@exe --basedir ../src --target-glib=2.44 --pkg config --pkg custom 
-D HAVE_CHEESE
+
+build src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o: 
c_COMPILER src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c || src/contacts.h
+ DEPFILE = 
src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o.d
+ ARGS = -Isrc/25a6634@@gnome-contacts-search-provider@exe -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/cl
 utter-1.
 0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR="/app/share/locale"'
+
+build src/gnome-contacts-search-provider: c_LINKER 
src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o | 
/usr/lib/x86_64-linux-gnu/libm.so /app/lib/libfolks.so /app/lib/libgee-0.8.so 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libglib-2.0.so /app/lib/libfolks-eds.so 
/app/lib/libebook-1.2.so /app/lib/libedata-book-1.2.so /app/lib/libebackend-1.2.so 
/app/lib/libebook-contacts-1.2.so /app/lib/libedataserver-1.2.so /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so 
/usr/lib/x86_64-linux-gnu/libsecret-1.so /usr/lib/x86_64-linux-gnu/libxml2.so 
/usr/lib/x86_64-linux-gnu/libsoup-2.4.so /usr/lib/x86_64-linux-gnu/libgio-2.0.so 
/app/lib/libgnome-desktop-3.so /usr/lib/x86_64-linux-gnu/libgtk-3.so /usr/lib/x86_64-linux-gnu/libgdk-3.so 
/usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so 
/usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so /usr/lib/x86_64-linux-gnu/l
 ibatk-1.
 0.so /usr/lib/x86_64-linux-gnu/libcairo-gobject.so /usr/lib/x86_64-linux-gnu/libcairo.so 
/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /app/lib/libgoa-1.0.so /app/lib/libedataserverui-1.2.so 
/app/lib/libecal-2.0.so /app/lib/libical-glib.so /app/lib/libical.so /app/lib/libicalss.so 
/app/lib/libicalvcal.so /app/lib/libhandy-0.0.so /app/lib/libcheese.so 
/usr/lib/x86_64-linux-gnu/libclutter-1.0.so /usr/lib/x86_64-linux-gnu/libcogl-path.so 
/usr/lib/x86_64-linux-gnu/libcogl-pango.so /usr/lib/x86_64-linux-gnu/libcogl.so 
/usr/lib/x86_64-linux-gnu/libwayland-egl.so /usr/lib/x86_64-linux-gnu/libEGL.so 
/usr/lib/x86_64-linux-gnu/libXrandr.so /usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so 
/usr/lib/x86_64-linux-gnu/libwayland-cursor.so /usr/lib/x86_64-linux-gnu/libwayland-client.so 
/usr/lib/x86_64-linux-gnu/libxkbcommon.so /usr/lib/x86_64-linux-gnu/libwayland-server.so 
/usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so 
/usr/lib/x86_64-linux-gnu/libXdamage.so /usr/lib
 /x86_64-
 linux-gnu/libXfixes.so /usr/lib/x86_64-linux-gnu/libXcomposite.so /usr/lib/x86_64-linux-gnu/libXi.so 
/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so /app/lib/libcheese-gtk.so 
/usr/lib/x86_64-linux-gnu/libclutter-gtk-1.0.so src/libcontacts.a
+ LINK_ARGS = -L/app/lib -Wl,--no-undefined -Wl,--as-needed -Wl,--start-group src/libcontacts.a 
/app/lib/libfolks.so /app/lib/libgee-0.8.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so 
/usr/lib/x86_64-linux-gnu/libglib-2.0.so /app/lib/libfolks-eds.so /app/lib/libebook-1.2.so 
/app/lib/libedata-book-1.2.so /app/lib/libebackend-1.2.so /app/lib/libebook-contacts-1.2.so 
/app/lib/libedataserver-1.2.so -Wl,--export-dynamic -pthread /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so 
/usr/lib/x86_64-linux-gnu/libsecret-1.so /usr/lib/x86_64-linux-gnu/libxml2.so 
/usr/lib/x86_64-linux-gnu/libsoup-2.4.so /usr/lib/x86_64-linux-gnu/libgio-2.0.so 
/app/lib/libgnome-desktop-3.so /usr/lib/x86_64-linux-gnu/libgtk-3.so /usr/lib/x86_64-linux-gnu/libgdk-3.so 
/usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so 
/usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so 
/usr/lib/x86_64-linux-gnu/libatk-1.0.so /usr/lib/x86_64-linux-gnu/libcairo-gobject.so /u
 sr/lib/x
 86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /app/lib/libgoa-1.0.so 
/app/lib/libedataserverui-1.2.so /app/lib/libecal-2.0.so /app/lib/libical-glib.so /app/lib/libical.so 
/app/lib/libicalss.so /app/lib/libicalvcal.so /app/lib/libhandy-0.0.so -lm /app/lib/libcheese.so 
/usr/lib/x86_64-linux-gnu/libclutter-1.0.so /usr/lib/x86_64-linux-gnu/libcogl-path.so 
/usr/lib/x86_64-linux-gnu/libcogl-pango.so /usr/lib/x86_64-linux-gnu/libcogl.so 
/usr/lib/x86_64-linux-gnu/libwayland-egl.so /usr/lib/x86_64-linux-gnu/libEGL.so 
/usr/lib/x86_64-linux-gnu/libXrandr.so /usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so 
/usr/lib/x86_64-linux-gnu/libwayland-cursor.so /usr/lib/x86_64-linux-gnu/libwayland-client.so 
/usr/lib/x86_64-linux-gnu/libxkbcommon.so /usr/lib/x86_64-linux-gnu/libwayland-server.so 
/usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so 
/usr/lib/x86_64-linux-gnu/libXdamage.so /usr/lib/x86_64-linux-gnu/libXfixes.so /usr/lib/x86_64-linux-gnu/
 libXcomp
 osite.so /usr/lib/x86_64-linux-gnu/libXi.so /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so 
/app/lib/libcheese-gtk.so /usr/lib/x86_64-linux-gnu/libclutter-gtk-1.0.so -Wl,--end-group 
'-Wl,-rpath,$$ORIGIN/' -Wl,-rpath-link,/home/julian/playground/gnome-contacts/_build/src
+
+build man/gnome-contacts.1: CUSTOM_COMMAND ../man/gnome-contacts.xml | /usr/bin/xsltproc
+ COMMAND = /usr/bin/xsltproc --nonet --stringparam man.output.quietly 1 --stringparam funcsynopsis.style 
ansi --stringparam man.th.extra1.suppress 1 --stringparam man.authors.section.enabled 0 --stringparam 
man.copyright.section.enabled 0 -o man/gnome-contacts.1 
http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl ../man/gnome-contacts.xml
+ description = Generating$ manfile-gnome-contacts$ with$ a$ custom$ command.
+
+build tests/59830eb@@basic-test@exe/basic-test.c: vala_COMPILER ../tests/basic-test.vala src/contacts.vapi | 
src/contacts.vapi
+ ARGS = -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg cheese-gtk --pkg 
cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg libebook-1.2 --pkg 
gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg gio-unix-2.0 --pkg 
gee-0.8 --pkg folks-eds --pkg folks --color=always --directory tests/59830eb@@basic-test@exe --basedir 
../tests
+
+build tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o: c_COMPILER 
tests/59830eb@@basic-test@exe/basic-test.c || src/contacts.h
+ DEPFILE = tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o.d
+ ARGS = -Itests/59830eb@@basic-test@exe -Itests -I../tests -Isrc -I../src -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutter-1.0
  -I/usr/
 include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -pthread
+
+build tests/basic-test: c_LINKER tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o | 
/usr/lib/x86_64-linux-gnu/libm.so /app/lib/libfolks.so /app/lib/libgee-0.8.so 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libglib-2.0.so /app/lib/libfolks-eds.so 
/app/lib/libebook-1.2.so /app/lib/libedata-book-1.2.so /app/lib/libebackend-1.2.so 
/app/lib/libebook-contacts-1.2.so /app/lib/libedataserver-1.2.so /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so 
/usr/lib/x86_64-linux-gnu/libsecret-1.so /usr/lib/x86_64-linux-gnu/libxml2.so 
/usr/lib/x86_64-linux-gnu/libsoup-2.4.so /usr/lib/x86_64-linux-gnu/libgio-2.0.so 
/app/lib/libgnome-desktop-3.so /usr/lib/x86_64-linux-gnu/libgtk-3.so /usr/lib/x86_64-linux-gnu/libgdk-3.so 
/usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so 
/usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so 
/usr/lib/x86_64-linux-gnu/libatk-1.0.so /usr/lib/x86_64-linux-gnu/libcairo-gobject.
 so /usr/
 lib/x86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /app/lib/libgoa-1.0.so 
/app/lib/libedataserverui-1.2.so /app/lib/libecal-2.0.so /app/lib/libical-glib.so /app/lib/libical.so 
/app/lib/libicalss.so /app/lib/libicalvcal.so /app/lib/libhandy-0.0.so /app/lib/libcheese.so 
/usr/lib/x86_64-linux-gnu/libclutter-1.0.so /usr/lib/x86_64-linux-gnu/libcogl-path.so 
/usr/lib/x86_64-linux-gnu/libcogl-pango.so /usr/lib/x86_64-linux-gnu/libcogl.so 
/usr/lib/x86_64-linux-gnu/libwayland-egl.so /usr/lib/x86_64-linux-gnu/libEGL.so 
/usr/lib/x86_64-linux-gnu/libXrandr.so /usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so 
/usr/lib/x86_64-linux-gnu/libwayland-cursor.so /usr/lib/x86_64-linux-gnu/libwayland-client.so 
/usr/lib/x86_64-linux-gnu/libxkbcommon.so /usr/lib/x86_64-linux-gnu/libwayland-server.so 
/usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so 
/usr/lib/x86_64-linux-gnu/libXdamage.so /usr/lib/x86_64-linux-gnu/libXfixes.so /usr/lib/x86_64-linux-gnu
 /libXcom
 posite.so /usr/lib/x86_64-linux-gnu/libXi.so /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so 
/app/lib/libcheese-gtk.so /usr/lib/x86_64-linux-gnu/libclutter-gtk-1.0.so src/libcontacts.a
+ LINK_ARGS = -L/app/lib -Wl,--no-undefined -Wl,--as-needed -Wl,--start-group src/libcontacts.a 
/app/lib/libfolks.so /app/lib/libgee-0.8.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so 
/usr/lib/x86_64-linux-gnu/libglib-2.0.so /app/lib/libfolks-eds.so /app/lib/libebook-1.2.so 
/app/lib/libedata-book-1.2.so /app/lib/libebackend-1.2.so /app/lib/libebook-contacts-1.2.so 
/app/lib/libedataserver-1.2.so -Wl,--export-dynamic -pthread /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so 
/usr/lib/x86_64-linux-gnu/libsecret-1.so /usr/lib/x86_64-linux-gnu/libxml2.so 
/usr/lib/x86_64-linux-gnu/libsoup-2.4.so /usr/lib/x86_64-linux-gnu/libgio-2.0.so 
/app/lib/libgnome-desktop-3.so /usr/lib/x86_64-linux-gnu/libgtk-3.so /usr/lib/x86_64-linux-gnu/libgdk-3.so 
/usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so 
/usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so 
/usr/lib/x86_64-linux-gnu/libatk-1.0.so /usr/lib/x86_64-linux-gnu/libcairo-gobject.so /u
 sr/lib/x
 86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so /app/lib/libgoa-1.0.so 
/app/lib/libedataserverui-1.2.so /app/lib/libecal-2.0.so /app/lib/libical-glib.so /app/lib/libical.so 
/app/lib/libicalss.so /app/lib/libicalvcal.so /app/lib/libhandy-0.0.so -lm /app/lib/libcheese.so 
/usr/lib/x86_64-linux-gnu/libclutter-1.0.so /usr/lib/x86_64-linux-gnu/libcogl-path.so 
/usr/lib/x86_64-linux-gnu/libcogl-pango.so /usr/lib/x86_64-linux-gnu/libcogl.so 
/usr/lib/x86_64-linux-gnu/libwayland-egl.so /usr/lib/x86_64-linux-gnu/libEGL.so 
/usr/lib/x86_64-linux-gnu/libXrandr.so /usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so 
/usr/lib/x86_64-linux-gnu/libwayland-cursor.so /usr/lib/x86_64-linux-gnu/libwayland-client.so 
/usr/lib/x86_64-linux-gnu/libxkbcommon.so /usr/lib/x86_64-linux-gnu/libwayland-server.so 
/usr/lib/x86_64-linux-gnu/libX11.so /usr/lib/x86_64-linux-gnu/libXext.so 
/usr/lib/x86_64-linux-gnu/libXdamage.so /usr/lib/x86_64-linux-gnu/libXfixes.so /usr/lib/x86_64-linux-gnu/
 libXcomp
 osite.so /usr/lib/x86_64-linux-gnu/libXi.so /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so 
/app/lib/libcheese-gtk.so /usr/lib/x86_64-linux-gnu/libclutter-gtk-1.0.so -Wl,--end-group 
'-Wl,-rpath,$$ORIGIN/../src' -Wl,-rpath-link,/home/julian/playground/gnome-contacts/_build/src
+
+# Test rules
+
+build meson-test: CUSTOM_COMMAND all PHONY
+ COMMAND = /usr/bin/meson test --no-rebuild --print-errorlogs
+ DESC = Running$ all$ tests.
+ pool = console
+
+build test: phony meson-test
+
+build meson-benchmark: CUSTOM_COMMAND all PHONY
+ COMMAND = /usr/bin/meson test --benchmark --logbase benchmarklog --num-processes=1 --no-rebuild
+ DESC = Running$ benchmark$ suite.
+ pool = console
+
+build benchmark: phony meson-benchmark
+
+# Install rules
+
+build meson-install: CUSTOM_COMMAND PHONY | all
+ DESC = Installing$ files.
+ COMMAND = /usr/bin/meson install --no-rebuild
+ pool = console
+
+build install: phony meson-install
+
+build meson-dist: CUSTOM_COMMAND PHONY
+ DESC = Creating$ source$ packages
+ COMMAND = /usr/bin/meson --internal dist /home/julian/playground/gnome-contacts 
/home/julian/playground/gnome-contacts/_build /usr/bin/meson
+ pool = console
+
+build dist: phony meson-dist
+
+# Suffix
+
+build meson-scan-build: CUSTOM_COMMAND PHONY
+ COMMAND = /usr/bin/meson --internal scanbuild /home/julian/playground/gnome-contacts 
/home/julian/playground/gnome-contacts/_build /usr/bin/meson -Dcheese=true -Ddocs=false -Dmanpage=true 
-Dprofile=development -Dtelepathy=false
+ pool = console
+
+build scan-build: phony meson-scan-build
+
+build meson-uninstall: CUSTOM_COMMAND PHONY
+ COMMAND = /usr/bin/meson --internal uninstall
+ pool = console
+
+build uninstall: phony meson-uninstall
+
+build all: phony data/org.gnome.Contacts.Devel.desktop data/org.gnome.Contacts.Devel.appdata.xml 
src/libcontacts.a src/gnome-contacts src/gnome-contacts-search-provider man/gnome-contacts.1 tests/basic-test
+
+build clean: phony meson-clean
+
+build meson-clean-ctlist: CUSTOM_COMMAND PHONY
+ COMMAND = /usr/bin/meson --internal cleantrees 
/home/julian/playground/gnome-contacts/_build/meson-private/cleantrees.dat
+ description = Cleaning$ custom$ target$ directories.
+
+build clean-ctlist: phony meson-clean-ctlist
+
+build meson-clean: CUSTOM_COMMAND PHONY | clean-ctlist
+ COMMAND = /usr/bin/ninja -t clean
+ description = Cleaning.
+
+build build.ninja: REGENERATE_BUILD ../meson.build ../data/meson.build 
../data/org.gnome.Contacts.desktop.in.in ../data/org.gnome.Contacts.appdata.xml.in.in 
../data/org.gnome.Contacts.service.in ../data/org.gnome.Contacts.SearchProvider.service.in 
../data/org.gnome.Contacts.search-provider.ini.in ../po/meson.build ../src/meson.build ../man/meson.build 
../tests/meson.build meson-private/coredata.dat ../meson_options.txt
+ pool = console
+
+build reconfigure: REGENERATE_BUILD PHONY
+ pool = console
+
+build ../meson.build ../data/meson.build ../data/org.gnome.Contacts.desktop.in.in 
../data/org.gnome.Contacts.appdata.xml.in.in ../data/org.gnome.Contacts.service.in 
../data/org.gnome.Contacts.SearchProvider.service.in ../data/org.gnome.Contacts.search-provider.ini.in 
../po/meson.build ../src/meson.build ../man/meson.build ../tests/meson.build meson-private/coredata.dat 
../meson_options.txt: phony 
+
+default all
+
diff --git a/_build/compile_commands.json b/_build/compile_commands.json
new file mode 100644
index 0000000..1619c01
--- /dev/null
+++ b/_build/compile_commands.json
@@ -0,0 +1,242 @@
+[
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "valac -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg 
cheese-gtk --pkg cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg 
libebook-1.2 --pkg gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg 
gio-unix-2.0 --pkg gee-0.8 --pkg folks-eds --pkg folks --color=always --directory src/25a6634@@contacts@sta 
--basedir ../src --library contacts --header src/contacts.h --vapi ../contacts.vapi --target-glib=2.44 --pkg 
config --pkg custom -D HAVE_CHEESE ../src/contacts-esd-setup.vala ../src/contacts-fake-persona-store.vala 
../src/contacts-im-service.vala ../src/contacts-store.vala ../src/contacts-typeset.vala 
../src/contacts-type-descriptor.vala ../src/contacts-utils.vala ../src/contacts-avatar-utils.vala 
../src/contacts-vcard-type-mapping.vala",
+    "file": "../src/contacts-esd-setup.vala",
+    "output": "src/25a6634@@contacts@sta/contacts-esd-setup.c"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o' -MF 
'src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o' -c 
'src/25a6634@@contacts@sta/contacts-esd-setup.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-esd-setup.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o' -MF 
'src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o' -c 
'src/25a6634@@contacts@sta/contacts-fake-persona-store.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-fake-persona-store.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o' -MF 
'src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o' -c 
'src/25a6634@@contacts@sta/contacts-im-service.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-im-service.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 'src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o' 
-MF 'src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o' -c 
'src/25a6634@@contacts@sta/contacts-store.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-store.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 'src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o' 
-MF 'src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o' -c 
'src/25a6634@@contacts@sta/contacts-typeset.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-typeset.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o' -MF 
'src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o' -c 
'src/25a6634@@contacts@sta/contacts-type-descriptor.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-type-descriptor.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 'src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o' 
-MF 'src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o' -c 
'src/25a6634@@contacts@sta/contacts-utils.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-utils.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o' -MF 
'src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o' -c 
'src/25a6634@@contacts@sta/contacts-avatar-utils.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-avatar-utils.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@contacts@sta -Isrc -I../src -I. -I../ -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/app/include/gee-0.8 -I/app/include/evolution-data-server -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 
-I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 
-I/app/lib/goa-1.0/include -I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/include/clutte
 r-1.0 -I
 /usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 -I/usr/include/clutter-gst-3.0 
-I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 
-w -g -fPIC -pthread -include config.h -DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API 
'-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o' -MF 
'src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o.d' -o 
'src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o' -c 
'src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c'",
+    "file": "src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c",
+    "output": "src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "valac -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg 
cheese-gtk --pkg cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg 
libebook-1.2 --pkg gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg 
gio-unix-2.0 --pkg gee-0.8 --pkg folks-eds --pkg folks --color=always --directory 
src/25a6634@@gnome-contacts@exe --basedir ../src --gresources=../data/contacts.gresource.xml 
--target-glib=2.44 --pkg config --pkg custom -D HAVE_CHEESE ../src/contacts-accounts-list.vala 
../src/contacts-app.vala ../src/contacts-avatar.vala ../src/contacts-avatar-selector.vala 
../src/contacts-contact-editor.vala ../src/contacts-contact-form.vala ../src/contacts-contact-list.vala 
../src/contacts-contact-pane.vala ../src/contacts-contact-sheet.vala ../src/contacts-crop-cheese-dialog.vala 
../src/contacts-in-app-notification.vala ../src/contacts-link-suggestion-grid.vala ../src/contacts-linked-pe
 rsonas-d
 ialog.vala ../src/contacts-linking.vala ../src/contacts-list-pane.vala ../src/contacts-max-width-bin.vala 
../src/contacts-settings.vala ../src/contacts-setup-window.vala ../src/contacts-type-combo.vala 
../src/contacts-ui-state.vala ../src/contacts-window.vala ../src/main.vala src/contacts.vapi",
+    "file": "../src/contacts-accounts-list.vala",
+    "output": "src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o' -c 
data/org.gnome.Contacts.c",
+    "file": "data/org.gnome.Contacts.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-app.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-app.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-avatar.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-avatar.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-contact-form.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-contact-form.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-contact-list.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-contact-list.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-linking.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-linking.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-list-pane.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-list-pane.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-settings.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-settings.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-setup-window.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-setup-window.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-type-combo.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-type-combo.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-ui-state.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-ui-state.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o' -c 
'src/25a6634@@gnome-contacts@exe/contacts-window.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/contacts-window.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o' -MF 
'src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o.d' -o 
'src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o' -c 'src/25a6634@@gnome-contacts@exe/main.c'",
+    "file": "src/25a6634@@gnome-contacts@exe/main.c",
+    "output": "src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o' -MF 'src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o.d' 
-o 'src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o' -c ../src/cc-crop-area.c",
+    "file": "../src/cc-crop-area.c",
+    "output": "src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts@exe -Isrc -I../src -I. -I../ -Idata 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts@exe/cheese-flash.c.o' -MF 'src/25a6634@@gnome-contacts@exe/cheese-flash.c.o.d' 
-o 'src/25a6634@@gnome-contacts@exe/cheese-flash.c.o' -c ../src/cheese-flash.c",
+    "file": "../src/cheese-flash.c",
+    "output": "src/25a6634@@gnome-contacts@exe/cheese-flash.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "valac -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg 
cheese-gtk --pkg cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg 
libebook-1.2 --pkg gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg 
gio-unix-2.0 --pkg gee-0.8 --pkg folks-eds --pkg folks --color=always --directory 
src/25a6634@@gnome-contacts-search-provider@exe --basedir ../src --target-glib=2.44 --pkg config --pkg custom 
-D HAVE_CHEESE ../src/contacts-shell-search-provider.vala src/contacts.vapi",
+    "file": "../src/contacts-shell-search-provider.vala",
+    "output": "src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Isrc/25a6634@@gnome-contacts-search-provider@exe -Isrc -I../src -I. -I../ 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese
  -I/usr/
 include/clutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -include config.h 
-DGNOME_DESKTOP_USE_UNSTABLE_API -DHANDY_USE_UNSTABLE_API '-DLOCALEDIR=\"/app/share/locale\"' -MD -MQ 
'src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o' -MF 
'src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o.d' -o 
'src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o' -c 
'src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c'",
+    "file": "src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c",
+    "output": 
"src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "valac -C --debug --debug --vapidir /home/julian/playground/gnome-contacts/vapi --pkg 
cheese-gtk --pkg cheese --pkg libhandy-0.0 --pkg libedataserverui-1.2 --pkg libedataserver-1.2 --pkg 
libebook-1.2 --pkg gtk+-3.0 --pkg goa-1.0 --pkg gnome-desktop-3.0 --target-glib 2.44 --pkg glib-2.0 --pkg 
gio-unix-2.0 --pkg gee-0.8 --pkg folks-eds --pkg folks --color=always --directory 
tests/59830eb@@basic-test@exe --basedir ../tests ../tests/basic-test.vala src/contacts.vapi",
+    "file": "../tests/basic-test.vala",
+    "output": "tests/59830eb@@basic-test@exe/basic-test.c"
+  },
+  {
+    "directory": "/home/julian/playground/gnome-contacts/_build",
+    "command": "ccache cc -Itests/59830eb@@basic-test@exe -Itests -I../tests -Isrc -I../src 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -I/app/include/gnome-desktop-3.0 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 
-I/usr/include/gsettings-desktop-schemas -I/app/include/goa-1.0 -I/app/lib/goa-1.0/include 
-I/app/include/libhandy-0.0 -I/app/include/cheese -I/usr/i
 nclude/c
 lutter-1.0 -I/usr/include/cogl -I/usr/include/json-glib-1.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -I/usr/include/clutter-gtk-1.0 
-fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -w -g -pthread -MD -MQ 
'tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o' -MF 
'tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o.d' -o 
'tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o' -c 
'tests/59830eb@@basic-test@exe/basic-test.c'",
+    "file": "tests/59830eb@@basic-test@exe/basic-test.c",
+    "output": "tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o"
+  }
+]
diff --git a/_build/config.h b/_build/config.h
new file mode 100644
index 0000000..82e076c
--- /dev/null
+++ b/_build/config.h
@@ -0,0 +1,27 @@
+/*
+ * Autogenerated by the Meson build system.
+ * Do not edit, your changes will be lost.
+ */
+
+#pragma once
+
+#define APP_ID "org.gnome.Contacts.Devel"
+
+#define GETTEXT_PACKAGE "gnome-contacts"
+
+#define GOA_API_IS_SUBJECT_TO_CHANGE
+
+#define G_LOG_DOMAIN "gnome-contacts"
+
+#define LOCALEDIR "/app/share/locale"
+
+#define PACKAGE_NAME "gnome-contacts"
+
+#define PACKAGE_STRING "gnome-contacts"
+
+#define PACKAGE_VERSION "3.35.1"
+
+#define PROFILE "development"
+
+#define VERSION "3.35.1"
+
diff --git a/_build/data/org.gnome.Contacts.Devel.SearchProvider.service 
b/_build/data/org.gnome.Contacts.Devel.SearchProvider.service
new file mode 100644
index 0000000..bfda9ca
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.Devel.SearchProvider.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.Contacts.Devel.SearchProvider
+Exec=/app/libexec/gnome-contacts-search-provider
diff --git a/_build/data/org.gnome.Contacts.Devel.appdata.xml 
b/_build/data/org.gnome.Contacts.Devel.appdata.xml
new file mode 100644
index 0000000..c585471
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.Devel.appdata.xml
@@ -0,0 +1,727 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop">
+  <id>org.gnome.Contacts.Devel.desktop</id>
+  <metadata_license>CC0-1.0</metadata_license>
+  <project_license>GPL-2.0-or-later</project_license>
+  <name>Contacts</name>
+  <name xml:lang="zh_TW">聯絡人</name>
+  <name xml:lang="zh_HK">聯絡人</name>
+  <name xml:lang="zh_CN">联系人</name>
+  <name xml:lang="vi">Danh bạ</name>
+  <name xml:lang="uk">Контакти</name>
+  <name xml:lang="ug">ئالاقەداشلار</name>
+  <name xml:lang="tr">Kişiler</name>
+  <name xml:lang="th">สมุดผู้ติดต่อ</name>
+  <name xml:lang="tg">Тамосҳо</name>
+  <name xml:lang="te">పరిచయాలు</name>
+  <name xml:lang="ta">தொடர்புகள்</name>
+  <name xml:lang="sv">Kontakter</name>
+  <name xml:lang="sr@latin">Kontakti</name>
+  <name xml:lang="sr">Контакти</name>
+  <name xml:lang="sl">Stiki</name>
+  <name xml:lang="sk">Kontakty</name>
+  <name xml:lang="ru">Контакты</name>
+  <name xml:lang="ro">Contacte</name>
+  <name xml:lang="pt_BR">Contatos</name>
+  <name xml:lang="pt">Contactos</name>
+  <name xml:lang="pl">Kontakty</name>
+  <name xml:lang="pa">ਸੰਪਰਕ</name>
+  <name xml:lang="or">ସମ୍ପର୍କଗୁଡ଼ିକ</name>
+  <name xml:lang="oc">Contactes</name>
+  <name xml:lang="nl">Contacten</name>
+  <name xml:lang="ne">सम्पर्कहरू</name>
+  <name xml:lang="nb">Kontakter</name>
+  <name xml:lang="mr">संपर्क</name>
+  <name xml:lang="ml">സമ്പര്‍ക്കങ്ങള്‍</name>
+  <name xml:lang="mk">Контакти</name>
+  <name xml:lang="mjw">Contacts</name>
+  <name xml:lang="lv">Kontakti</name>
+  <name xml:lang="lt">Kontaktai</name>
+  <name xml:lang="ko">연락처</name>
+  <name xml:lang="kn">ಕಾಂಟ್ಯಾಕ್ಟ್ಸ್‌</name>
+  <name xml:lang="kk">Контакттар</name>
+  <name xml:lang="ja">連絡先</name>
+  <name xml:lang="it">Contatti</name>
+  <name xml:lang="is">Tengiliðir</name>
+  <name xml:lang="id">Kontak</name>
+  <name xml:lang="hu">Névjegyek</name>
+  <name xml:lang="hr">Kontakti</name>
+  <name xml:lang="hi">संपर्क</name>
+  <name xml:lang="he">אנשי קשר</name>
+  <name xml:lang="gu">સંપર્કો</name>
+  <name xml:lang="gl">Contactos</name>
+  <name xml:lang="gd">Luchd-aithne</name>
+  <name xml:lang="ga">Teagmhálacha</name>
+  <name xml:lang="fur">Contats</name>
+  <name xml:lang="fr">Contacts</name>
+  <name xml:lang="fi">Yhteystiedot</name>
+  <name xml:lang="fa">آشنایان</name>
+  <name xml:lang="eu">Kontaktuak</name>
+  <name xml:lang="et">Kontaktid</name>
+  <name xml:lang="es">Contactos</name>
+  <name xml:lang="eo">Kontaktaro</name>
+  <name xml:lang="en_GB">Contacts</name>
+  <name xml:lang="en_CA">Contacts</name>
+  <name xml:lang="el">Επαφές</name>
+  <name xml:lang="de">Kontakte</name>
+  <name xml:lang="da">Kontakter</name>
+  <name xml:lang="cs">Kontakty</name>
+  <name xml:lang="ca@valencia">Contactes</name>
+  <name xml:lang="ca">Contactes</name>
+  <name xml:lang="bs">Kontakti</name>
+  <name xml:lang="bn_IN">পরিচিতি-সমূহ</name>
+  <name xml:lang="be">Кантакты</name>
+  <name xml:lang="ast">Contautos</name>
+  <name xml:lang="as">পৰিচয়সমূহ</name>
+  <name xml:lang="ar">المتراسلين</name>
+  <name xml:lang="af">Kontakte</name>
+  <summary>A contacts manager for GNOME</summary>
+  <summary xml:lang="zh_TW">GNOME 的聯絡人管理員</summary>
+  <summary xml:lang="zh_HK">GNOME 的聯絡人管理程式</summary>
+  <summary xml:lang="zh_CN">GNOME 的联系人管理工具</summary>
+  <summary xml:lang="vi">Bộ quản lý danh bạ dành cho GNOME</summary>
+  <summary xml:lang="uk">Керування контактами для GNOME</summary>
+  <summary xml:lang="tr">GNOME için Adres Defteri Yöneticisi</summary>
+  <summary xml:lang="th">โปรแกรมจัดการสมุดผู้ติดต่อสำหรับ GNOME</summary>
+  <summary xml:lang="tg">Мудири тамосҳо барои GNOME</summary>
+  <summary xml:lang="te">గ్నోమ్ కొరకు ఒక పరిచయాల నిర్వాహిక</summary>
+  <summary xml:lang="ta">GNOME க்கான தொடர்பு நிர்வாகி</summary>
+  <summary xml:lang="sv">En kontakthanterare för GNOME</summary>
+  <summary xml:lang="sr@latin">Gnomov upravnik kontaktima</summary>
+  <summary xml:lang="sr">Гномов управник контактима</summary>
+  <summary xml:lang="sl">Upravljalnik stikov namizja GNOME</summary>
+  <summary xml:lang="sk">Správca kontaktov prostredia GNOME</summary>
+  <summary xml:lang="ru">Менеджер контактов для GNOME</summary>
+  <summary xml:lang="ro">Un manager de contacte pentru GNOME</summary>
+  <summary xml:lang="pt_BR">Um gerenciador de contatos para o GNOME</summary>
+  <summary xml:lang="pt">Um gestor de contactos para o GNOME</summary>
+  <summary xml:lang="pl">Menedżer kontaktów dla środowiska GNOME</summary>
+  <summary xml:lang="pa">ਗਨੋਮ ਲਈ ਸੰਪਰਕ ਮੈਨੇਜਰ</summary>
+  <summary xml:lang="or">GNOME ପାଇଁ ଏକ ସମ୍ପର୍କ ପରିଚାଳକ</summary>
+  <summary xml:lang="oc">Un gestionari de contactes per GNOME</summary>
+  <summary xml:lang="nl">Contactenbeheer voor de Gnome-werkomgeving</summary>
+  <summary xml:lang="ne">जिनोमको लागि एक समपर्क प्रबन्धक</summary>
+  <summary xml:lang="nb">Håndtering av kontakter for GNOME</summary>
+  <summary xml:lang="mr">GNOME करिता संपर्क व्यवस्थापन</summary>
+  <summary xml:lang="mjw">A contacts manager for GNOME</summary>
+  <summary xml:lang="lv">GNOME kontaktu pārvaldnieks</summary>
+  <summary xml:lang="lt">GNOME kontaktų tvarkytuvė</summary>
+  <summary xml:lang="ko">그놈용 연락처 관리자</summary>
+  <summary xml:lang="kn">GNOME ಗಾಗಿನ ಸಂಪರ್ಕವಿಳಾಸದ ವ್ಯವಸ್ಥಾಪನೆ</summary>
+  <summary xml:lang="kk">GNOME үшін контакттарды басқарушысы</summary>
+  <summary xml:lang="ja">GNOME の連絡先管理ツール</summary>
+  <summary xml:lang="it">Un gestore di contatti per GNOME</summary>
+  <summary xml:lang="is">Tengiliðastjórnun fyrir GNOME</summary>
+  <summary xml:lang="id">Manajer kontak untuk GNOME</summary>
+  <summary xml:lang="hu">Egy névjegykezelő a GNOME-hoz</summary>
+  <summary xml:lang="hr">Upravitelj kontaktima za GNOME</summary>
+  <summary xml:lang="hi">गनोम के लिए संपर्क प्रबंधक</summary>
+  <summary xml:lang="he">מנהל אנשי קשר עבור GNOME</summary>
+  <summary xml:lang="gu">GNOME માટે સંપર્ક સંચાલક</summary>
+  <summary xml:lang="gl">Un xestor de contactos para GNOME</summary>
+  <summary xml:lang="gd">Manaidsear luchd-aithne airson GNOME</summary>
+  <summary xml:lang="fur">Un gjestôr contats par GNOME</summary>
+  <summary xml:lang="fr">Un gestionnaire de contacts pour GNOME</summary>
+  <summary xml:lang="fi">Yhteystietojen hallinta Gnomelle</summary>
+  <summary xml:lang="fa">یک مدیریت آشنایان برای گنوم</summary>
+  <summary xml:lang="eu">Kontaktuen kudeatzailea GNOMErako</summary>
+  <summary xml:lang="es">Un gestor de contactos para GNOME</summary>
+  <summary xml:lang="eo">Kontakto-mastrumilo por GNOME</summary>
+  <summary xml:lang="en_GB">A contacts manager for GNOME</summary>
+  <summary xml:lang="el">Ένας διαχειριστής επαφών του GNOME.</summary>
+  <summary xml:lang="de">Eine Kontaktverwaltung für GNOME</summary>
+  <summary xml:lang="da">En kontaktpersonhåndtering til GNOME</summary>
+  <summary xml:lang="cs">Správa kontaktů pro GNOME</summary>
+  <summary xml:lang="ca@valencia">Un gestor de contactes per al GNOME</summary>
+  <summary xml:lang="ca">Un gestor de contactes per al GNOME</summary>
+  <summary xml:lang="bs">Kontakt upravitelj za GNOME</summary>
+  <summary xml:lang="bn_IN">GNOME-এর জন্য একটি পরিচিতি ব্যবস্থাপক</summary>
+  <summary xml:lang="be">Кіраўнік кантактаў для GNOME</summary>
+  <summary xml:lang="as">GNOME ৰ বাবে এটা পৰিচয় ব্যৱস্থাপক</summary>
+  <summary xml:lang="ar">مدير متراسلين لجنوم</summary>
+  <description>
+    <p>
+      Contacts keeps and organize your contacts information. You can create,
+      edit, delete and link together pieces of information about your contacts.
+      Contacts aggregates the details from all your sources providing a
+      centralized place for managing your contacts.
+    </p>
+    <p 
xml:lang="zh_TW">《聯絡人》會保存並管理您的聯絡人資訊。您可以建立、編輯、刪除與連結關於您的聯絡人的一些資訊。《聯絡人》聯合您所有來源的詳細資料,以提供一個集中管理您的聯絡人的地方。</p>
+    <p xml:lang="zh_HK">Contacts 保存並管理你的聯絡人資訊。你可以建立、編輯、刪除與連結關於你的聯絡人的一些資訊。Contacts 
聯合你所有來源的詳細資料,以提供一個集中管理你的聯絡人的地方。</p>
+    <p xml:lang="zh_CN">联系人可以保存和管理您的联系人信息。您可以创建、编辑、删除联系人,以及将您联系人的各种信息归拢在一起。联系人可以整合各方面的联系人资料,集中管理您的联系人。</p>
+    <p xml:lang="vi">Sổ danh bạ giúp bạn lưu giữ và tổ chức các liên hệ của mình. Bạn có thể tạo, sửa, xóa 
và liên kết các liên lạc của mình thành nhóm. Các liên lạc được tập hợp từ mọi nguồn và cung cấp cho bạn một 
nơi tập trung để quản lý các liên lạc của mình.</p>
+    <p xml:lang="uk">Контакти зберігають і впорядковують вашу контактну інформацію. Можете створювати, 
редагувати і сполучати інформацію про ваші контакти. Контакти збирають подробиці з усіх джерел в одне ціле, 
надаючи центральне місце для організування ваших контактів.</p>
+    <p xml:lang="tr">Kişiler uygulaması kişilerinizin bilgilerini saklar ve düzenler. Kişileriniz hakkındaki 
bilgileri oluşturabilir, düzenleyebilir, silebilir ve birbirine bağlayabilirsiniz. Kişiler uygulaması tüm 
kaynaklarınızdaki bilgileri birleştirerek tek bir yerden yönetmenize olanak sağlar.</p>
+    <p xml:lang="th">สมุดผู้ติดต่อจะเก็บและจัดการข้อมูลผู้ติดต่อของคุณ คุณสามารถสร้าง, แก้ไข, ลบ, 
และเชื่อมโยงข้อมูลส่วนต่างๆ ของผู้ติดต่อของคุณเข้าด้วยกัน 
สมุดผู้ติดต่อรวบรวมรายละเอียดจากแหล่งทั้งหมดของคุณให้มารวมศูนย์ที่แห่งเดียว เพื่อการจัดการผู้ติดต่อของคุณ</p>
+    <p xml:lang="tg">Барномаи "Тамосҳо" маълумоти тамосҳои шуморо нигоҳ медорад ва мураттаб мекунад. Шумо 
метавонед қисмҳои маълумотро оид ба тамосҳои худ эҷод, таҳрир, нест ва пайваст кунед. Барномаи "Тамосҳо" 
тафсилотро аз ҳамаи манбаҳои шумо ҷамъ карда ҷои марказиро барои идоракунии тамосҳои шумо таъмин менамояд.</p>
+    <p xml:lang="te">పరిచయాలు మీ పరిచయాల సమాచారం నిర్వహించును. మీ పరిచయాలకు సంబందించిన సమాచారం 
సృష్టించవచ్చు, సరికూర్చవచ్చు, తొలగించవచ్చు. పరిచయాలు మీ అన్ని మూలాల నుండి వచ్చు పరిచయ సమాచారంను కేంద్రీయంగా 
నిర్వహించును.</p>
+    <p xml:lang="ta">Contacts உங்கள் தொடர்புகளைப் பற்றிய தகவல்களை சேகரித்து ஒழுங்கமைத்து வைக்கிறது. இதைக் 
கொண்டு நீங்கள் உங்கள் தொடர்புகளின் தகவல்கள் பலவற்றை உருவாக்கவும் திருத்தவும் அழிக்கவும் ஒன்றிணைக்கவும் 
முடியும். Contacts உங்கள் ஆதாரங்கள் அனைத்திலிருந்தும் தொடர்புகளைச் சேகரித்து ஒரே இடத்தில் உங்கள் தொடர்புகளை 
நிர்வகிக்கும் வசதியை அளிக்கிறது.</p>
+    <p xml:lang="sv">Kontakter lagrar och organiserar dina kontakters information. Du kan skapa, redigera, 
ta bort och länka ihop delar av information om dina kontakter. Kontakter sammanför detaljerna från alla dina 
källor och tillhandahåller en central plats för att hantera dina kontakter.</p>
+    <p xml:lang="sr@latin">Kontakti čuva i sređuje podatke vaših kontakata. Možete da stvarate, uređujete, 
brišete i svezujete zajedno delove podataka o vašim kontaktima. Kontakti objedinjuje pojedinosti sa svih 
vaših izvora obezbeđujući središnje mesto za upravljanje vašim kontaktima.</p>
+    <p xml:lang="sr">Контакти чува и сређује податке ваших контаката. Можете да стварате, уређујете, бришете 
и свезујете заједно делове података о вашим контактима. Контакти обједињује појединости са свих ваших извора 
обезбеђујући средишње место за управљање вашим контактима.</p>
+    <p xml:lang="sl">Program omogoča urejanje in shranjevanje podatkov o stikih. Mogoče je urejati, 
ustvarjati, brisati in povezovati različne podatke. Program združuje podatke iz različnih virov in ponuja 
osrednje mesto za prikaz stikov.</p>
+    <p xml:lang="sk">Aplikácia kontakty udržiava a organizuje informácie o vašich kontaktoch. Môžete 
vytvárať, upravovať, mazať a spájať informácie o vašich kontaktoch. Aplikácia kontakty zhromažďuje 
podrobnosti zo všetkých vašich zdrojov a umožňuje centralizovanú správu kontaktov.</p>
+    <p xml:lang="ru">Приложение «Контакты» помогает управлять информацией о контактах. Вы можете создавать, 
изменять, удалять и связывать вместе сведения о ваших контактах. Приложение объединяет информацию со всех 
ваших источников, предоставляя централизованный способ управления контактами.</p>
+    <p xml:lang="ro">Contacte păstrează și organizează informațiile de contact. Puteți crea, edita, șterge 
și conecta împreună fragmente de informații despre contacte. Contacte agregă detaliile de la toate sursele 
furnizând o locație centralizată pentru gestionarea contactelor.</p>
+    <p xml:lang="pt_BR">O aplicativo Contatos mantém e organiza as informações dos seus contatos. Você pode 
criar, editar, excluir ou vincular porções de informação sobre seus contatos. O aplicativo Contatos agrega os 
detalhes de todas as suas fontes, fornecendo um local centralizado para o gerenciamento de seus contatos.</p>
+    <p xml:lang="pt">O Contactos mantém e organiza a informação dos seus contactos. Pode criar, editar, 
apagar e juntar diferentes pedaços de informação sobre os seus contactos. O Contactos agrega os detalhes de 
todas as suas fontes fornecendo-lhe um local centralizado para gerir os seus contactos.</p>
+    <p xml:lang="pl">Menedżer kontaktów GNOME umożliwia przechowywanie i uporządkowanie informacji o 
kontaktach. Można je tworzyć, modyfikować, usuwać i łączyć. Program zbiera dane ze wszystkich podanych 
źródeł, co czyni go istnym centrum zarządzania kontaktami.</p>
+    <p xml:lang="pa">ਸੰਪਰਕ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਦੀ ਜਾਣਕਾਰੀ ਨੂੰ ਸੰਭਾਲਦੀ ਅਤੇ ਉਹਨਾਂ ਦਾ ਪ੍ਰਬੰਧ ਕਰਦੀ ਹੈ। ਤੁਸੀਂ ਆਪਣੇ 
ਸੰਪਰਕਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦੇ ਭਾਗਾਂ ਨੂੰ ਬਣਾਉਣ, ਸੋਧਣ, ਹਟਾਉਣ ਅਤੇ ਆਪਸ ਵਿੱਚ ਜੋੜ ਸਕਦੇ ਹੋ। ਸੰਪਰਕ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਦੇ ਪ੍ਰਬੰਧ 
ਲਈ ਇੱਕ ਸਾਂਝੀ ਥਾਂ ਉਪਲੱਬਧ ਕਰਵਾਉਣ ਤੁਹਾਡੇ ਸਭ ਸਰੋਤਾਂ ਤੋਂ ਵੇਰਵੇ ਨੂੰ ਇੱਕਠਾ ਕਰਦੇ ਹਨ।</p>
+    <p xml:lang="or">ସମ୍ପର୍କଗୁଡ଼ିକ ଆପଣଙ୍କର ସମ୍ପର୍କ ସୂଚନାକୁ ରଖିଥାଏ ଏବଂ ସଠିକ ବ୍ୟବସ୍ଥା କରିଥାଏ। ଆପଣ 
ସମ୍ପର୍କଗୁଡ଼ିକ ବିଷୟରେ ସୂଚନା ସୃଷ୍ଟି, ସମ୍ପାଦନ, ଅପସାରଣ କରିପାରିବେ ଏବଂ ଯୋଡ଼ିପାରିବେ। ସମ୍ପର୍କ ଆପଣଙ୍କର ବିଭିନ୍ନ ଉତ୍ସରୁ 
ସୂଚନା ଏକତ୍ରିତ କରି ଏକ ସ୍ଥାନରେ ପରିଚାଳନା କରିଥାଏ।</p>
+    <p xml:lang="oc">Contacts consèrva e organiza las informacions ligadas a vòstres contactes. Podètz 
crear, editar, suprimir e religar d'informacions a prepaus de vòstres contactes. Contacts regropa los detalhs 
que provenon de totas vòstras fonts, e vos provesís atal un endreit centralizat per gerir vòstres 
contactes.</p>
+    <p xml:lang="nl">Contacten slaat de informatie over uw contacten op en organiseert die. U kunt 
informatie over uw contacten aanmaken, bewerken, wissen en samenvoegen. Contacten verzamelt de details uit al 
uw informatiebronnen waarmee het een centrale plaats biedt van waaruit u uw contacten kunt beheren.</p>
+    <p xml:lang="ne">सम्पर्कहरू तपाईंको सम्पर्क जानकारी राख्छ र व्यवस्थित गर्दछ। तपाईं सिर्जना गर्न, सम्पादन 
गर्न, मेटाउन र तपाईंको सम्पर्कहरूको बारेमा टुक्रा जानकारी को साथ लिङ्क गर्न सक्नुहुनेछ। सम्पर्कहरू तपाइँका 
सम्पर्कहरु को ब्यवस्थापन को लागी एक केंद्रीकृत स्थान प्रदान गर्ने सबै विवरणहरु को विवरण को एकत्र गर्दछ।</p>
+    <p xml:lang="nb">Kontakter tar vare på og organiserer kontaktinformasjon. Du kan lage, redigere, slette 
og lenke sammen informasjonselementer om dine kontakter. Kontakter sammenstiller detaljene fra alle kilder og 
gir deg et sentralisert sted å håndtere dine kontakter.</p>
+    <p xml:lang="mr">काँटॅक्ट्स तुमची संपर्क माहिती जतन करते आणि आयोजीत करते. तुम्ही संपर्कांविषयी माहितीचे 
निर्माण, संपादन, नष्ट करणे आणि एकत्रीकरण करू शकता. काँटॅक्ट्स सर्व स्रोतपासून तपशीलावर गोळा करते आणि 
संपर्कांना व्यवस्थापीत करण्यासाठी एक केंद्रीय ठिकाण पुरवते.</p>
+    <p xml:lang="lv">“Kontakti” jums ļauj organizēt informāciju par saviem kontaktiem. Jūs varat izveidot, 
rediģēt, dzēst un saistīt kopā informāciju par saviem kontaktiem. “Kontakti” apvienot informāciju no visiem 
jūsu avotiem un sniedz centralizētu vietu kontaktu pārvaldībai.</p>
+    <p xml:lang="lt">Kontaktai saugo ir tvarko kontaktų informaciją. Galite sukurti, keisti, trinti ir 
susieti kartu informaciją apie savo kontaktus. Kontaktai surenka informaciją iš visų šaltinių ir pateikia 
centralizuotą vietą jų tvarkymui.</p>
+    <p xml:lang="ko">연락처에서는 연락처 정보를 유지하고 정리합니다. 연락처의 여러가지 정보를 만들고, 편집하고, 지우며, 각각의 정보를 연결할 수 있습니다. 연락처는 연락처를 
관리하는 집중형 수단을 제공하여 원본에서 세부 정보를 수집합니다.</p>
+    <p xml:lang="kn">ಕಾಂಟ್ಯಾಕ್ಟ್ಸ್‌ ನಿಮ್ಮ ಸಂಪರ್ಕವಿಳಾಸಗಳ ಮಾಹಿತಿಯನ್ನು ಇರಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ವ್ಯವಸ್ಥಿತವಾಗಿ ಜೋಡಿಸಲು 
ನಿಮಗೆ ನೆರವಾಗುತ್ತದೆ. ನೀವು ನಿಮ್ಮಲ್ಲಿನ ಸಂಪರ್ಕವಿಳಾಸಗಳ ಕುರಿತಾದ ಮಾಹಿತಿಗಳನ್ನು ರಚಿಸಲು, ಸಂಪಾದಿಸಲು, ಅಳಿಸಲು ಮತ್ತು 
ಒಟ್ಟಿಗೆ ಜೋಡಿಸಲು ಸಾಧ್ಯವಿರುತ್ತದೆ. ಕಾಂಟ್ಯಾಕ್ಟ್ಸ್‌ ನಿಮ್ಮ ಸಂಪರ್ಕವಿಳಾಸಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಒಂದು ಕೇಂದ್ರೀಕೃತವಾದ 
ಸ್ಥಳವನ್ನು ಒದಗಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಎಲ್ಲಾ ಆಕರಗಳಿಂದ ವಿವರಗಳನ್ನು ಕ��
 �ರೋ�
 ��ೀಕರಿಸುತ್ತದೆ.</p>
+    <p xml:lang="kk">Контакттар қолданбасы сіздің контакттар ақпаратын сақтайды және реттейді. Сіз 
контакттарыңыз жөнінде ақпаратты жасап, түзетіп, өшіріп және өзара сілтей аласыз. Контакттар қолданбасы 
барлық көздерден ақпаратты біріктіріп ұстайды және контакттарды басқару үшін орталықтанған орны болып 
табылады.</p>
+    <p 
xml:lang="ja">連絡先情報を維持、管理できる連絡先アプリです。連絡先の作成、編集、削除はもちろん、複数の連絡先を統合することもできます。また他のソースの連絡先情報をまとめることができ、このアプリから一括して連絡先管理を行うことができます。</p>
+    <p xml:lang="it">«Contatti» mantiene e organizza le informazioni sui propri contatti. È possibile 
creare, modificare, eliminare e collegare parti di informazioni unendo i dettagli di tutte le sorgenti in un 
unico posto centralizzato per la loro gestione.</p>
+    <p xml:lang="is">Tengiliðaskráin heldur utan um upplýsingar varðandi tengiliði. Þú getur búið til 
tangiliði, breytt þeim og eytt, og tengt ýmsar upplýsingar við tengiliðina þína. GNOME Contacts safnar saman 
atriðum frá ýmsum uppsprettum í einn stað þar sem þú getur sýslað með tengiliðina þína.</p>
+    <p xml:lang="id">Kontak menyimpan dan mengorganisasi informasi kontak Anda. Anda dapat membuat, 
menyunting, menghapus, dan menaut bersama penggalan-penggalan informasi tentang kontak Anda. Kontak 
mengagregasi rincian dari semua sumber Anda dan menyediakan suatu tempat terpusat untuk mengelola kontak 
Anda.</p>
+    <p xml:lang="hu">A Névjegyek tárolja és rendezi a névjegyek információit. Létrehozhat, szerkeszthet, 
törölhet névjegyeket és információkat köthet össze velük kapcsolatban. A Névjegyek összegyűjti minden forrás 
részleteit egy központi helyet biztosítva azok kezeléséhez.</p>
+    <p xml:lang="hr">Kontakti čuvaju i drže organiziranim vaše informacije kontakata. Možete stvarati, 
uređivati, brisati i spojiti dijelove informacija vaših kontakata. Kontakti stvaraju pojedinosti iz svih 
vaših izvora omogućujući središnje mjesto za upravljanje vašim kontaktima.</p>
+    <p xml:lang="hi">संपर्क आपके संपर्क सूचना को बनाए रखता है और संगठित रखता है. आप अपने संपर्क के बारे में 
जानकारी और लिंक को इकट्ठा कर सकते हैं. संपर्क आपके संपर्क प्रबंधित करने के लिए एक केंद्रीकृत स्थान प्रदान 
करता है.</p>
+    <p xml:lang="he">אנשי קשר שומר ומארגן את מידע אנשי הקשר שלך. ניתן ליצור, לערוך, למחוק ולקשר יחד חתיכות 
של מידע על אודות אנשי הקשר שלך. אנשי קשר אוגר את הפרטים מכל המקורות שלך לספק מקום מרכזי לניהול אנשי הקשר 
שלך.</p>
+    <p xml:lang="gu">સંપર્કો તમારી સંપર્ક જાણકારીને સંચાલિત રાખે છે. તમે બનાવી, ફેરફાર અને કાઢી શકો છો અને 
તમારા સંપર્કો વિશે જાણકારીઓને ભેગી કરી કડી કરી શકો છો. સંપર્કો તમારાં સંપર્કોને સંચાલિત કરવા માટે કેન્દ્રિત 
જગ્યાને પૂરી પાડી તમારા બધા સ્ત્રોતોમાંથી વિગતોને એકત્રિત કરે છે.</p>
+    <p xml:lang="gl">Contactos mantén e organiza a información dos seus contactos. Pode crear, editar, 
eliminar e ligar partes de información sobre os seus contactos. Os contactos agregan a información de todas 
as súas orixes fornecendo un lugar centralizado para xestionar os seus contactos.</p>
+    <p xml:lang="gd">Cumaidh Luchd-aithne fiosrachadh mun luchd-aithne agad an rian. ’S urrainn dhut 
bloighean fiosrachaidh mun luchd-aithne agad a chruthachadh, a dheasachadh, a sguabadh às agus a cheangal ri 
chèile. Cuiridh Luchd-aithne a h-uile fiosrachadh o na tùsan agad ri chèile gus prìomh ionad a chruthachadh 
gus an luchd-aithne agad a stiùireadh.</p>
+    <p xml:lang="fur">Contats al manten e al ministre lis informazions dai tiei contats. Tu puedis creâ, 
modificâ, scancelâ e leâ adun tocs di informazions dai tiei contats. Contats al unìs i detais di dutis lis 
tôs sorzints dant un sisteme centralizât par ministrâ i tiei contats.</p>
+    <p xml:lang="fr">Contacts conserve et organise les informations liées à vos contacts. Vous pouvez créer, 
éditer, supprimer et relier des informations à propos de vos contacts. Contacts regroupe les détails 
provenant de toutes vos sources, vous fournissant ainsi un endroit centralisé pour gérer vos contacts.</p>
+    <p xml:lang="fi">Yhteystietosovellus säilyttää ja hallinnoi yhteystietojasi. Voit luoda, muokata, 
poistaa ja linkittää yhteystietoja. Yhteystietosovellus kerää yhteen lukuisista eri lähteistä kaikki 
yhteystietoihisi liittyvät yksityiskohdat.</p>
+    <p xml:lang="fa">آشنایان، اطّلاعات آشنایانتان را نگه‌داری و منظّم می‌کند. می‌توانید قطعه‌های اطّلاعات 
دربارهٔ آشنایانتان را ایجاد، ویرایش و حذف کرده یا به هم پیوند بزنید. آشنایان جزئیات را از همهٔ منابعتان جمع 
می‌کند تا مکانی مرکزی برای مدیریت آشنایانیتان به‌وجود آورد.</p>
+    <p xml:lang="eu">Kontaktuak zure kontaktuen informazioa antolatu eta gordetzen du. Zure kontaktuei 
buruzko informazio zatiak sortu, editatu, ezabatu eta elkarrekin esteka dezakezu. 'Kontaktuak' aplikazioak 
zure iturburuetako xehetasunak gehitzen ditu zure kontaktuen kudeaketa leku zentralizatu batean 
edukitzeko.</p>
+    <p xml:lang="es">Contactos mantiene y organiza la información de sus contactos. Puede crear, editar, 
eliminar y enlazar fragmentos de información sobre sus contactos. Contactos añade los detalles de todas sus 
fuentes, proporcionando un lugar centralizado para gestionar sus contactos.</p>
+    <p xml:lang="eo">Kontaktaro konservas kaj organizas viajn kontakt-informojn. Vi povas krei, redakti, 
forigi kaj bindi erojn de informoj pri viaj kontaktoj. Kontaktaro kombinas la detalojn de ĉiuj de viaj fontoj 
provizante centritan lokon por mastrumi viajn kontaktojn.</p>
+    <p xml:lang="en_GB">Contacts keeps and organise your contacts information. You can create, edit, delete 
and link together pieces of information about your contacts. Contacts aggregates the details from all your 
sources providing a centralised place for managing your contacts.</p>
+    <p xml:lang="el">Οι επαφές σας βοηθούν να διατηρείτε και να οργανώνετε τις πληροφορίες των επαφών σας. 
Μπορείτε να δημιουργήσετε, επεξεργαστείτε, διαγράψετε και να συνδέσετε κομμάτια πληροφορίας των επαφών σας. Η 
εφαρμογή επαφές ενοποιεί τις λεπτομέρειες από όλες τις πηγές και σας παρέχει ένα κεντρικό σημείο διαχείρισης 
των επαφών σας.</p>
+    <p xml:lang="de">Die Kontaktverwaltung speichert und organisiert Informationen Ihrer Kontakte. Sie 
können Kontaktinformationen erstellen, bearbeiten, löschen und miteinander verknüpfen. Die Kontaktverwaltung 
fasst die Details aus Ihren Quellen zusammen und bietet einen zentralen Ort, um Ihre Kontakte zu 
verwalten.</p>
+    <p xml:lang="da">Programmet Kontakter opbevarer og organiserer kontaktperson-information. Du kan 
oprette, redigere og sammenkæde stykker af information om dine kontaktpersoner. Kontakter samler detaljerne 
fra alle dine kilder og giver derved et centraliseret sted for håndtering af dine kontaktpersoner.</p>
+    <p xml:lang="cs">Kontakty uchovávají a třídí vaše kontakty. Různé kousky svých kontaktních informací 
můžete vytvářet, upravovat, mazat a spojovat dohromady. Aplikace Kontakty seskupuje údaje ze všech vašich 
zdrojů a poskytuje vám místo, kde je můžete spravovat jednotně.</p>
+    <p xml:lang="ca@valencia">El Contactes manté i organitza la informació dels vostres contactes. Podeu 
crear, editar, suprimir i enllaçar informació sobre els vostres contactes. El Contactes afig els detalls des 
de tots els orígens de manera que des d'un lloc centralitzat es poden gestionar els vostres contactes.</p>
+    <p xml:lang="ca">El Contactes manté i organitza la informació dels vostres contactes. Podeu crear, 
editar, suprimir i enllaçar informació sobre els vostres contactes. El Contactes afegeix els detalls des de 
tots els orígens de manera que des d'un lloc centralitzat es poden gestionar els vostres contactes.</p>
+    <p xml:lang="bs">Kontakti čuva i organizira podatke Vaših kontakata . Možete stvoriti , uređivati ​​, 
brisati i povezivati ​​dijelove informacija o svojim kontaktima . Kontakti prikuplja podatke iz svih vaših 
izvora pružajući centralizirano mjesto za upravljanje kontaktima.</p>
+    <p xml:lang="bn_IN">পরিচিতিগুলি অাপনার পরিচিতি তথ্য রাখে এবং ব্যবস্থাপিত করে। অাপনি অাপনার পরিচিতিগুলির 
বিষয়ে তথ্য তৈরি করতে, সম্পাদনা করতে, মুছতে এবং লিঙ্ক করতে পারবেন। পরিচিতি অাপনার সমস্ত সোর্স থেকে বিস্তারিত 
একত্রিত করে অাপনার পরিচিতিগুলি ব্যবস্থাপনার এক কেন্দ্রীয় স্থান প্রদান করে।</p>
+    <p xml:lang="be">Кіраўнік кантактаў захоўвае і парадкуе вашы кантакты. З яго дапамогай можна ствараць, 
рэдагаваць, выдаляць і аб'ядноўваць звесткі аб вашых кантактах. Кіраўнік збірае звесткі з усіх магчымых 
крыніц і прадастаўляе цэнтралізаваны спосаб кіравання кантактамі.</p>
+    <p xml:lang="as">পৰিচয়সমূহে আপোনাৰ পৰিচয়সমূহৰ তথ্যক সংৰক্ষিত আৰু সংঘঠিত ৰাখে। আপুনি আপোনাৰ পৰিচয়সমূহৰ 
বিষয়ে তথ্য সৃষ্টি, সম্পাদন, মচা আৰু সংযোগ কৰিব পাৰিব। পৰিচয়সমূহে আপোনাৰ সকলো উৎসৰ পৰা বিৱৰণ একত্ৰিত কৰে যাৰ 
সহায়ত আপোনাৰ পৰিচয়সমূহ ব্যৱস্থাপনা কৰিবলৈ এটা কেনদ্ৰিত স্থান পায়।</p>
+    <p>
+      Contacts will also integrate with online address books and automatically
+      link contacts from different online sources.
+    </p>
+    <p xml:lang="zh_TW">《聯絡人》也會與線上通訊錄整合,並且自動連結來自不同線上來源的聯絡人。</p>
+    <p xml:lang="zh_HK">Contacts 也會與網上通訊錄整合,並且自動連結來自不同網上來源的聯絡人。</p>
+    <p xml:lang="zh_CN">联系人也可以整合在线地址簿,并自动链接到各种在线帐号的联系人。</p>
+    <p xml:lang="vi">Sổ danh bạ cũng được kết hợp với các sổ địa chỉ trên mạng khác và tự động liên kết các 
liên lạc từ các nguồn khác nhau trên mạng.</p>
+    <p xml:lang="uk">Контакти також інтегровані з мережевими адресними книгами і автоматично сполучать 
контакти з різних джерел.</p>
+    <p xml:lang="tr">Kişiler ayrıca çevrim içi adres defterleriyle de birleşerek çeşitli çevrim içi 
kaynaklardaki kişileri kendiliğinden birbirine bağlar.</p>
+    <p xml:lang="th">นอกจากนี้ สมุดผู้ติดต่อยังเชื่อมรวมกับสมุดที่อยู่ออนไลน์ 
และเชื่อมโยงผู้ติดต่อจากแหล่งออนไลน์ต่างๆ โดยอัตโนมัติ</p>
+    <p xml:lang="tg">Барномаи "Тамосҳо" инчунин бо китобҳои суроғаҳои онлан якҷоя кор мекунад ва тамосҳоро 
аз манбаҳои онлайни гуногун ба таври худкор пайваст мекунад.</p>
+    <p xml:lang="te">పరిచయాలు ఆన్‌లైన్ చిరునామా పుస్తకాలతో కలిసి మరియు స్వయంచాలకంగా విభిన్న ఆన్‌లైన్ 
మూలాలనుండి పరిచయాలను లింక్ చేయగలదు.</p>
+    <p xml:lang="ta">Contacts ஆன்லைன் முகவரிப் புத்தகங்களுடனும் ஒருங்கிணைந்து உங்கள் வெவ்வேறு ஆன்லைன் 
ஆதாரங்களில் இருந்தும் தொடர்புகளை தானாக இணைத்து வழங்கும்.</p>
+    <p xml:lang="sv">Kontakter integrerar med adressböcker på nätet och länkar automatiskt kontakter från 
olika källor.</p>
+    <p xml:lang="sr@latin">Kontakti će se takođe sjediniti sa imenicima na mreži i samostalno će povezati 
kontakte sa različitih izvora na mreži.</p>
+    <p xml:lang="sr">Контакти ће се такође сјединити са именицима на мрежи и самостално ће повезати контакте 
са различитих извора на мрежи.</p>
+    <p xml:lang="sl">Stiki bodo povezani tudi z omrežnimi imeniki in bodo samodejno povezani med različnimi 
viri.</p>
+    <p xml:lang="sk">Aplikácia kontakty sa dokáže spojiť s mnohými adresárovými službami a dokáže prepájať 
kontakty z viacerých zdrojov.</p>
+    <p xml:lang="ru">Приложение «Контакты» также  выполнит интеграцию с сетевой адресной книгой и 
автоматически свяжет контакты из различных сетевых источников.</p>
+    <p xml:lang="ro">Contacte va integra și agendele de contacte online și va conecta automat contacte de la 
surse online diferite.</p>
+    <p xml:lang="pt_BR">O aplicativo Contatos também se integra aos catálogos de endereços on-line e 
automaticamente vincula contatos de diferentes fontes on-line.</p>
+    <p xml:lang="pt">O Contactos irá também integrar-se com os seus livros de endereços online e juntar 
automaticamente os contactos de diferentes fontes.</p>
+    <p xml:lang="pl">Menedżer kontaktów GNOME można również zintegrować z internetowymi książkami adresowymi 
i automatycznie łączyć kontakty z różnych źródeł.</p>
+    <p xml:lang="pa">ਸੰਪਰਕ ਆਨਲਾਈਨ ਸਿਰਨਾਵਾਂ ਕਿਤਾਬਾਂ ਨਾਲ ਜੁੜ ਸਕਦੀ ਹੈ ਅਤੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਆਨਲਾਈਨ ਸਰੋਤਾਂ ਤੋਂ 
ਆਪਣੇ-ਆਪ ਲਿੰਕ ਕਰ ਸਕੇਗਾ।</p>
+    <p xml:lang="or">ସମ୍ପର୍କଗୁଡ଼ିକ ଅନଲାଇନ ଠିକଣା ପୁସ୍ତକ ସହିତ ମଧ୍ଯ ସଯୁକ୍ତ ହୋଇଥାଏ ଏବଂ ସ୍ୱୟଂଚାଳିତ ଭାବରେ 
ସମ୍ପର୍କଗୁଡ଼ିକୁ ବିଭିନ୍ନ ଅନଲାଇନ ଉତ୍ସରୁ ସଂଯୁକ୍ତ କରିଥାଏ।</p>
+    <p xml:lang="oc">Contacts permet tanben l'integracion de quasernets d'adreças en linha e religa 
automaticament los contactes de diferentas fonts en linha.</p>
+    <p xml:lang="nl">Contacten integreert ook met online adresboeken en koppelt automatisch contacten uit 
verschillende online bronnen.</p>
+    <p xml:lang="ne">सम्पर्कहरू अनलाइन ठेगाना पुस्तकहरूसँग पनि एकीकृत हुनेछन् र सम्पर्कहरू स्वचालित रूपमा 
अनलाइन अनलाइन स्रोतहरूबाट लिङ्क गर्नुहोस्।</p>
+    <p xml:lang="nb">Kontakter kan også integreres med adressebøker på nett, og lenker automatisk sammen 
kontakter fra forskjellige kilder på nettet.</p>
+    <p xml:lang="mr">संपर्कांना ऑनलाइन पत्ता पुस्तकांशी एकत्रीत करणे आणि विविध ऑनलाइन स्रोतपासून संपर्कांना 
स्व जुळणे शक्य आहे.</p>
+    <p xml:lang="lv">Kontakti arī ir integrēti ar tiešsaistes adrešu grāmatām un automātiski saista 
kontaktus ar dažādiem tiešsaistes avotiem.</p>
+    <p xml:lang="lt">Kontaktai taip pat gali integruotis su internetinėmis adresų knygomis bei automatiškai 
susieti kontaktus iš skirtingų internetinių šaltinių.</p>
+    <p xml:lang="ko">연락처는 온라인 주소록을 통합하며 여러 온라인 원본 연락처를 자동으로 이어줍니다.</p>
+    <p xml:lang="kn">ಕಾಂಟ್ಯಾಕ್ಟ್ಸ್ ನಿಮ್ಮ ಆನ್‌ಲೈನ್ ವಿಳಾಸ ಪುಸ್ತಕಗಳನ್ನು ಸಂಯೋಜಿತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ 
ವಿವಿಧ ಆನ್‌ಲೈನ್ ಆಕರಗಳಿಂದ ಸಂಪರ್ಕವಿಳಾಸಗಳನ್ನು ಸಂಪರ್ಕಜೋಡಿಸುತ್ತದೆ.</p>
+    <p xml:lang="kk">Сонымен қатар, контакттар сіздің желідегі адрестік кітаптарды қолданады және бірнеше 
желідегі көзден контакттарды автоматты түрде қолжетерлік қылады.</p>
+    <p xml:lang="ja">オンラインのアドレス帳と連動させることで、複数のオンラインソースに存在する連絡先も自動的にリンクできます。</p>
+    <p xml:lang="it">Inoltre verranno integrate le rubriche online e verranno automaticamente uniti i 
contatti da diverse sorgenti online.</p>
+    <p xml:lang="is">GNOME Tengiliðir samtvinnur einnig upplýsingar úr nafnaskrám á netinu og tengir færslur 
sjálfkrafa við ýmis netforrit og tilföng af internetinu.</p>
+    <p xml:lang="id">Kontak juga akan mengintegrasi dengan buku alamat daring dan secara otomatis menaut 
kontak-kontak dari sumber-sumber daring yang berbeda.</p>
+    <p xml:lang="hu">A Névjegyek egyesülni fog az online címjegyzékekkel és automatikusan összekapcsolja a 
különböző online forrásokból származó névjegyeket.</p>
+    <p xml:lang="hr">Kontakti će se isto integrirati s mrežnim adresarom i automatski povezati kontakte sa 
različitih mrežnih izvora.</p>
+    <p xml:lang="hi">संपर्क ऑनलाइन पता पुस्तिका से एकीकृत होगा और भिन्न ऑनलाइन स्रोत से स्वतः संपर्क को लिंक 
करेगा.</p>
+    <p xml:lang="he">אנשי קשר גם משולב עם פנקסי כתובות מקוונים ומקשר אנשי קשר באופן אוטומטי ממקורות מקוונים 
שונים.</p>
+    <p xml:lang="gu">સંપર્કો ઓનલાઇન સરનામાં પુસ્તિકાઓ સાથે પણ એકત્રિત થયેલ હશે અને આપમેળે વિવિધ ઓનલાઇન 
સ્ત્રોતોમાંથી સંપર્કોની કડી કરે છે.</p>
+    <p xml:lang="gl">Contactos tamén se integra con cadernos de enderezos en liña e liga automaticamente 
contactos de diferentes orixes en liña.</p>
+    <p xml:lang="gd">Amalaichidh Luchd-aithne le leabhraichean nan seòladh air loidhne cuideachd ’s nì e 
ceangal ri luchd-aithne o chaochladh de thùsan air loidhne gu fèin-obrachail.</p>
+    <p xml:lang="fur">In plui a vegnaran integradis lis rubrichis in-linie e a vegnaran unîts in maniere 
automatiche i contats di diviersis sorzints in-linie.</p>
+    <p xml:lang="fr">Contacts permet également l’intégration de carnets d’adresses en ligne et relie 
automatiquement les contacts de différentes sources en ligne.</p>
+    <p xml:lang="fi">Yhteystietosovellus tuo yhteen verkossa olevat eri osoitekirjat ja linkittää 
automaattisesti yhteystiedot eri verkkolähteistä.</p>
+    <p xml:lang="fa">آشنایان هم‌چنین با دفترچه‌های نشانی برخط یک‌پارچه شده و به صورت خودکار آشنایانیی از 
منابع برخط مختلف را به هم پیوند می‌دهد.</p>
+    <p xml:lang="eu">Kontaktuak lineako helbide-liburuekin batera daiteke, eta lineako iturburu 
desberdinetako kontaktuak automatikoki esteka ditzake.</p>
+    <p xml:lang="es">Contactos también se integra con las libretas de direcciones en línea y enlaza 
contactos automáticamente de diferentes fuentes en línea.</p>
+    <p xml:lang="eo">Kontaktaro integras kun retaj adresaroj kaj aŭtomate bindas kontaktojn de diversaj 
retaj fontoj.</p>
+    <p xml:lang="en_GB">Contacts will also integrate with online address books and automatically link 
contacts from different online sources.</p>
+    <p xml:lang="el">Η εφαρμογή επαφές ενσωματώνεται με διαδικτυακά βιβλία διευθύνσεων και αυτόματα 
συνδέονται οι επαφές από διαφορετικές διαδικτυακές πηγές.</p>
+    <p xml:lang="de">Die Kontaktverwaltung integriert sich auch in Ihre Online-Adressbücher und verknüpft 
Kontakte aus verschiedenen Online-Quellen.</p>
+    <p xml:lang="da">Kontakter kan også integrere sig med adressebøger på nettet og automatisk sammenkæde 
kontaktpersoner fra forskellige kilder på nettet.</p>
+    <p xml:lang="cs">Kontakty rovněž integrují on-line adresáře a automaticky propojují kontakty z různých 
on-line zdrojů.</p>
+    <p xml:lang="ca@valencia">El Contactes també s'integra amb llibretes d'adreces en línia i enllaçarà 
automàticament els contactes des de diferents orígens en línia.</p>
+    <p xml:lang="ca">El Contactes també s'integra amb llibretes d'adreces en línia i enllaçarà 
automàticament els contactes des de diferents orígens en línia.</p>
+    <p xml:lang="bs">Kontakti će se također integrirati sa online adresarom i automatski povezati kontakte 
iz različitih online izvora .</p>
+    <p xml:lang="bn_IN">পরিচিতিগুলি অনলাইন ঠিকানা বইগুলির সংগেও একত্রিত হবে এবং স্বয়ংক্রিয় ভাবে অালাদা 
অনলাইন সোর্সগুলি থেকে পরিচিতিগুলি লিঙ্ক করবে।</p>
+    <p xml:lang="be">Кіраўнік кантактаў таксама інтэграваны з сеціўнымі адраснымі кнігамі і аўтаматычна 
аб'ядноўвае кантакты з розных сеціўных крыніц.</p>
+    <p xml:lang="as">পৰিচয়সমূহে লগতে অনলাইন ঠিকনা বহীসমূহৰ সৈতে অনুকূলন কৰিব আৰু বিভিন্ন অনলাইন উৎসসমূহৰ পৰা 
পৰিচয়সমূহ সংযোগ কৰিব।</p>
+  </description>
+  <screenshots>
+    <screenshot height="575" width="800" type="default">
+      <image>
+      https://wiki.gnome.org/Apps/Contacts?action=AttachFile&amp;do=get&amp;target=appdata.png
+    </image>
+    </screenshot>
+  </screenshots>
+  <releases>
+    <release date="2020-01-05" version="3.35.1">
+      <description>
+        <p>
+          This is the first unstable release in the 3.35 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            You can now use a "back" gesture on touch devices to go back to the
+            contact list when viewing or editing a contact
+          </li>
+          <li>Contacts now works on even smaller screens</li>
+          <li>Nightly now show off with a fancy new icon</li>
+          <li>
+            Bugfix: if another app opens Contacts, this still works even if
+            it's not running
+          </li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-09-09" version="3.34">
+      <description>
+        <p>
+          Version 3.34 is a stable release, with the following major
+          improvements since 3.32:
+        </p>
+        <ul>
+          <li>Updated avatars which follow the GNOME avatar style</li>
+          <li>Better accessibility with mnemonics for the setup window</li>
+          <li>A new --search option for the command-line</li>
+          <li>Fixed issues when using the webcam to add an avatar</li>
+          <li>Fixed searching contacts in GNOME Shell returning no results</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-09-04" version="3.33.92">
+      <description>
+        <p>
+          This is the last unstable release in the 3.33 development series,
+          with the following improvements since 3.33.91:
+        </p>
+        <ul>
+          <li>Updated the man page</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-08-20" version="3.33.91">
+      <description>
+        <p>
+          This is the next unstable release in the 3.33 development series,
+          some would say a beta, with the following improvements:
+        </p>
+        <ul>
+          <li>
+            Make the avatars more in line with the other apps in the GNOME
+            ecoosystem. If possible, the initials will be used to make an
+            avatar if none is available.
+          </li>
+          <li>Fix searching contacts from GNOME Shell returning no results</li>
+          <li>Add a small description of the --search option</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-07-22" version="3.33.4">
+      <description>
+        <p>
+          This is the second unstable release in the 3.33 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Flatpak: Allow webcam access (and other small fixes)</li>
+          <li>Even better integration with CI</li>
+          <li>Add mnemonics to the setup window</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-04-24" version="3.33.1">
+      <description>
+        <p>
+          This is the first unstable release in the 3.33 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            Added a show-contact application action, so other applications
+            can activate Contacts to show a specific contact
+          </li>
+          <li>Reverted an accidental change in the Appstream ID</li>
+          <li>Pass along the right printf-format to MessageDialogs</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-03-12" version="3.32">
+      <description>
+        <p>
+          Version 3.32 is the next stable release, with the following major
+          improvements since 3.30:
+        </p>
+        <ul>
+          <li>A new, modern icon</li>
+          <li>A responsive UI: Contacts now works on all screen sizes!</li>
+          <li>
+            Property types are now handled more consistently, fixing some minor
+            issues, e.g. types mixing translations with the ones from Google.
+          </li>
+          <li>A few minor performance optimizations</li>
+          <li>Solved a bug where the birthday did not change</li>
+          <li>Fixed a crash when right-clicking in the contact list</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-02-06" version="3.31.90">
+      <description>
+        <p>
+          This is the next unstable release in the 3.31 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            The interface now adapts to the size of its window, making it
+            possible to use on smaller screens (such as phones)
+          </li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-01-09" version="3.31.4">
+      <description>
+        <p>
+          This is the next unstable release in the 3.31 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            Small improvements for the "types" of properties ("Home", "Work",
+            …). Contacts should now also be able to more easily identify
+            untranslated properties from Google Contacts.
+          </li>
+          <li>Some UI tweaks for the primary menu</li>
+          <li>The appdata file and the desktop file are now validated by CI</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-12-10" version="3.31.3">
+      <description>
+        <p>
+          This is the first unstable release in the 3.31 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>An updated application icon</li>
+          <li>Dropped the app menu</li>
+          <li>Added a dependency on libhandy</li>
+          <li>Fix birthday not being properly saved</li>
+          <li>Telepathy is now disabled by default</li>
+          <li>Flatpak fixes</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-09-03" version="3.30">
+      <description>
+        <p>
+          Version 3.30 is the next stable release, with the following major
+          improvements since 3.28:
+        </p>
+        <ul>
+          <li>Tweaks to the avatar selector UI</li>
+          <li>Several fixes for the Flatpak build</li>
+          <li>OARS content ratings</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-08-27" version="3.29.92">
+      <description>
+        <p>
+          This is the last unstable release in the 3.29 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>The avatar selector now uses the native file chooser</li>
+          <li>Added OARS content rating</li>
+          <li>Restructured the code to allow automated tests</li>
+          <li>Several flatpak fixes</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-05-24" version="3.29.2">
+      <description>
+        <p>
+          This is the first unstable release in the 3.29 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>The avatar selection UI has been revamped</li>
+          <li>
+            Use GNOME's Meson conventions: compilation options can now no
+            longer have an auto value. Some have also been renamed to drop the
+            "with-" prefix.
+          </li>
+          <li>The Flatpak manifest was improved in several ways.</li>
+          <li>Extended the CI pipeline to use flatpak</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-03-12" version="3.28">
+      <description>
+        <p>
+          Version 3.28 is a stable release, with the following major improvements:
+        </p>
+        <ul>
+          <li>Favorite contacts, which are shown at the top of the contact list.</li>
+          <li>Sort contacts by their first name or surname.</li>
+          <li>Small tweaks to the UI, such as a more welcoming setup screen and rounded avatars.</li>
+          <li>Performance improvements to the GNOME Shell search provider.</li>
+          <li>A slightly decreased memory usage.</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-03-05" version="3.27.92">
+      <description>
+        <p>
+          This is the fourth unstable (beta) release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>The titlebar is now updated when a contact's name changes.</li>
+          <li>The window will now remember its size and restore it on the next start.</li>
+          <li>Postal addresses are now sorted before notes.</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-02-05" version="3.27.90">
+      <description>
+        <p>
+          This is the third unstable release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Support for favorite contacts. These contacts will be shown at the top of the list.</li>
+          <li>Contacts now allows sorting by both first name and surname.</li>
+          <li>Avatars are now displayed as a circle and are better optimized for memory usage.</li>
+          <li>Selection mode can now be started by right-clicking the contact list.</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-01-09" version="3.27.4">
+      <description>
+        <p>
+          This is the second unstable release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Contacts now has a shortcuts window</li>
+          <li>Small tweaks to the setup screen</li>
+          <li>Support --version as command-line argument</li>
+          <li>Telepathy is no longer a mandatory dependency</li>
+          <li>Support for maps can be disabled at compile time</li>
+          <li>Improved the Shell search provider</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-11-13" version="3.27.2">
+      <description>
+        <p>
+          This is the first unstable release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Contact properties are now sorted by type</li>
+          <li>Avatars are now displayed using rounded border</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-09-11" version="3.26.0">
+      <description>
+        <p>
+          Version 3.26 is a stable release, with the following improvements:
+        </p>
+        <ul>
+          <li>Support for Flatpak</li>
+          <li>Support for faster builds using Meson</li>
+          <li>Saving notes in a contact now works again</li>
+          <li>Some contact properties are now selectable</li>
+          <li>Use our own app icon, rather than a predefined one</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-09-05" version="3.25.92.1">
+      <description>
+        <p>
+          This is an unstable release in the 3.25 development series,
+          which fixes build errors in version 3.25.92.
+        </p>
+      </description>
+    </release>
+    <release date="2017-09-04" version="3.25.92">
+      <description>
+        <p>
+          This is an unstable release in the 3.25 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Added experimental support for Flatpak</li>
+          <li>Contacts can now be built with Meson</li>
+          <li>Contacts now provides its own proper app icon</li>
+          <li>Some labels in the contact sheet are now selectable</li>
+        </ul>
+        <p>
+          The following bugs are also fixed:
+        </p>
+        <ul>
+          <li>Can't save notes in a contact</li>
+          <li>Bumped minimal version of telepathy-glib, GTK+ and GLib</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-07-17" version="3.25.4">
+      <description>
+        <p>
+          This is an unstable release in the 3.25 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Contacts now provides its own application icon</li>
+          <li>Small UI improvements to the avatar chooser dialog</li>
+        </ul>
+        <p>
+          The following bugs are also fixed:
+        </p>
+        <ul>
+          <li>Folks now requires version 11.4 or higher</li>
+          <li>Migrated away from intltool and libgd</li>
+          <li>Got rid of a bunch of warnings and critical messsages</li>
+          <li>Use the locale to translate months</li>
+          <li>Added git.mk to automagically create .gitignores</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+  </releases>
+  <kudos>
+    <kudo>AppMenu</kudo>
+    <kudo>HiDpiIcon</kudo>
+    <kudo>ModernToolkit</kudo>
+    <kudo>SearchProvider</kudo>
+  </kudos>
+  <provides>
+    <binary>gnome-contacts</binary>
+  </provides>
+  <url type="homepage">https://wiki.gnome.org/Apps/Contacts</url>
+  <url type="bugtracker">https://gitlab.gnome.org/GNOME/gnome-contacts/issues</url>
+  <url type="donation">http://www.gnome.org/friends/</url>
+  <update_contact>nielsdg gnome org</update_contact>
+  <project_group>GNOME</project_group>
+  <developer_name>The GNOME Project</developer_name>
+  <developer_name xml:lang="zh_TW">GNOME 專案</developer_name>
+  <developer_name xml:lang="zh_CN">GNOME 项目</developer_name>
+  <developer_name xml:lang="uk">Проєкт GNOME</developer_name>
+  <developer_name xml:lang="tr">GNOME Projesi</developer_name>
+  <developer_name xml:lang="sv">GNOME-projektet</developer_name>
+  <developer_name xml:lang="sr">Гном пројекат</developer_name>
+  <developer_name xml:lang="sl">Projekt GNOME</developer_name>
+  <developer_name xml:lang="sk">Projekt GNOME</developer_name>
+  <developer_name xml:lang="ru">Проект GNOME</developer_name>
+  <developer_name xml:lang="ro">Proiectul GNOME</developer_name>
+  <developer_name xml:lang="pt_BR">O Projeto GNOME</developer_name>
+  <developer_name xml:lang="pl">Projekt GNOME</developer_name>
+  <developer_name xml:lang="nl">Het Gnome-project</developer_name>
+  <developer_name xml:lang="mjw">GNOME Project</developer_name>
+  <developer_name xml:lang="lv">GNOME projekts</developer_name>
+  <developer_name xml:lang="lt">GNOME projektas</developer_name>
+  <developer_name xml:lang="ko">그놈 프로젝트</developer_name>
+  <developer_name xml:lang="kk">GNOME жобасы</developer_name>
+  <developer_name xml:lang="ja">The GNOME Project</developer_name>
+  <developer_name xml:lang="it">Il progetto GNOME</developer_name>
+  <developer_name xml:lang="is">GNOME verkefnið</developer_name>
+  <developer_name xml:lang="id">Proyek GNOME</developer_name>
+  <developer_name xml:lang="hu">A GNOME projekt</developer_name>
+  <developer_name xml:lang="hr">GNOME projekt</developer_name>
+  <developer_name xml:lang="gl">O Proxecto GNOME</developer_name>
+  <developer_name xml:lang="fur">Il progjet GNOME</developer_name>
+  <developer_name xml:lang="fr">Le projet GNOME</developer_name>
+  <developer_name xml:lang="fi">Gnome-projekti</developer_name>
+  <developer_name xml:lang="fa">پروژهٔ گنوم</developer_name>
+  <developer_name xml:lang="eu">GNOME proiektua</developer_name>
+  <developer_name xml:lang="es">El Proyecto GNOME</developer_name>
+  <developer_name xml:lang="eo">La Projekto GNOME</developer_name>
+  <developer_name xml:lang="en_GB">The GNOME Project</developer_name>
+  <developer_name xml:lang="el">Το έργο GNOME</developer_name>
+  <developer_name xml:lang="de">Das GNOME-Projekt</developer_name>
+  <developer_name xml:lang="da">GNOME-projektet</developer_name>
+  <developer_name xml:lang="cs">Projekt GNOME</developer_name>
+  <developer_name xml:lang="ca">El projecte GNOME</developer_name>
+  <launchable type="desktop-id">org.gnome.Contacts.desktop</launchable>
+  <translation type="gettext">gnome-contacts</translation>
+  <content_rating type="oars-1.1">
+    <content_attribute id="violence-cartoon">none</content_attribute>
+    <content_attribute id="violence-fantasy">none</content_attribute>
+    <content_attribute id="violence-realistic">none</content_attribute>
+    <content_attribute id="violence-bloodshed">none</content_attribute>
+    <content_attribute id="violence-sexual">none</content_attribute>
+    <content_attribute id="violence-desecration">none</content_attribute>
+    <content_attribute id="violence-slavery">none</content_attribute>
+    <content_attribute id="violence-worship">none</content_attribute>
+    <content_attribute id="drugs-alcohol">none</content_attribute>
+    <content_attribute id="drugs-narcotics">none</content_attribute>
+    <content_attribute id="drugs-tobacco">none</content_attribute>
+    <content_attribute id="sex-nudity">none</content_attribute>
+    <content_attribute id="sex-themes">none</content_attribute>
+    <content_attribute id="sex-homosexuality">none</content_attribute>
+    <content_attribute id="sex-prostitution">none</content_attribute>
+    <content_attribute id="sex-adultery">none</content_attribute>
+    <content_attribute id="sex-appearance">none</content_attribute>
+    <content_attribute id="language-profanity">none</content_attribute>
+    <content_attribute id="language-humor">none</content_attribute>
+    <content_attribute id="language-discrimination">none</content_attribute>
+    <content_attribute id="social-chat">none</content_attribute>
+    <content_attribute id="social-info">none</content_attribute>
+    <content_attribute id="social-audio">none</content_attribute>
+    <content_attribute id="social-location">none</content_attribute>
+    <content_attribute id="social-contacts">intense</content_attribute>
+    <content_attribute id="money-purchasing">none</content_attribute>
+    <content_attribute id="money-gambling">none</content_attribute>
+  </content_rating>
+</component>
diff --git a/_build/data/org.gnome.Contacts.Devel.desktop b/_build/data/org.gnome.Contacts.Devel.desktop
new file mode 100644
index 0000000..360f6e0
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.Devel.desktop
@@ -0,0 +1,215 @@
+[Desktop Entry]
+Name[af]=Kontakte
+Name[ar]=المتراسلين
+Name[as]=পৰিচয়সমূহ
+Name[ast]=Contautos
+Name[be]=Кантакты
+Name[bn_IN]=পরিচিতি-সমূহ
+Name[bs]=Kontakti
+Name[ca]=Contactes
+Name[ca@valencia]=Contactes
+Name[cs]=Kontakty
+Name[da]=Kontakter
+Name[de]=Kontakte
+Name[el]=Επαφές
+Name[en_CA]=Contacts
+Name[en_GB]=Contacts
+Name[eo]=Kontaktaro
+Name[es]=Contactos
+Name[et]=Kontaktid
+Name[eu]=Kontaktuak
+Name[fa]=آشنایان
+Name[fi]=Yhteystiedot
+Name[fr]=Contacts
+Name[fur]=Contats
+Name[ga]=Teagmhálacha
+Name[gd]=Luchd-aithne
+Name[gl]=Contactos
+Name[gu]=સંપર્કો
+Name[he]=אנשי קשר
+Name[hi]=संपर्क
+Name[hr]=Kontakti
+Name[hu]=Névjegyek
+Name[id]=Kontak
+Name[is]=Tengiliðir
+Name[it]=Contatti
+Name[ja]=連絡先
+Name[kk]=Контакттар
+Name[kn]=ಕಾಂಟ್ಯಾಕ್ಟ್ಸ್‌
+Name[ko]=연락처
+Name[lt]=Kontaktai
+Name[lv]=Kontakti
+Name[mjw]=Contacts
+Name[mk]=Контакти
+Name[ml]=സമ്പര്‍ക്കങ്ങള്‍
+Name[mr]=संपर्क
+Name[nb]=Kontakter
+Name[ne]=सम्पर्कहरू
+Name[nl]=Contacten
+Name[oc]=Contactes
+Name[or]=ସମ୍ପର୍କଗୁଡ଼ିକ
+Name[pa]=ਸੰਪਰਕ
+Name[pl]=Kontakty
+Name[pt]=Contactos
+Name[pt_BR]=Contatos
+Name[ro]=Contacte
+Name[ru]=Контакты
+Name[sk]=Kontakty
+Name[sl]=Stiki
+Name[sr]=Контакти
+Name[sr@latin]=Kontakti
+Name[sv]=Kontakter
+Name[ta]=தொடர்புகள்
+Name[te]=పరిచయాలు
+Name[tg]=Тамосҳо
+Name[th]=สมุดผู้ติดต่อ
+Name[tr]=Kişiler
+Name[ug]=ئالاقەداشلار
+Name[uk]=Контакти
+Name[vi]=Danh bạ
+Name[zh_CN]=联系人
+Name[zh_HK]=聯絡人
+Name[zh_TW]=聯絡人
+Name=Contacts
+Comment[ar]=مدير متراسلين لجنوم
+Comment[as]=GNOME ৰ বাবে এটা পৰিচয় ব্যৱস্থাপক
+Comment[be]=Кіраўнік кантактаў для GNOME
+Comment[bn_IN]=GNOME-এর জন্য একটি পরিচিতি ব্যবস্থাপক
+Comment[bs]=Kontakt upravitelj za GNOME
+Comment[ca]=Un gestor de contactes per al GNOME
+Comment[ca@valencia]=Un gestor de contactes per al GNOME
+Comment[cs]=Správa kontaktů pro GNOME
+Comment[da]=En kontaktpersonhåndtering til GNOME
+Comment[de]=Eine Kontaktverwaltung für GNOME
+Comment[el]=Ένας διαχειριστής επαφών του GNOME.
+Comment[en_GB]=A contacts manager for GNOME
+Comment[eo]=Kontakto-mastrumilo por GNOME
+Comment[es]=Un gestor de contactos para GNOME
+Comment[eu]=Kontaktuen kudeatzailea GNOMErako
+Comment[fa]=یک مدیریت آشنایان برای گنوم
+Comment[fi]=Yhteystietojen hallinta Gnomelle
+Comment[fr]=Un gestionnaire de contacts pour GNOME
+Comment[fur]=Un gjestôr contats par GNOME
+Comment[gd]=Manaidsear luchd-aithne airson GNOME
+Comment[gl]=Un xestor de contactos para GNOME
+Comment[gu]=GNOME માટે સંપર્ક સંચાલક
+Comment[he]=מנהל אנשי קשר עבור GNOME
+Comment[hi]=गनोम के लिए संपर्क प्रबंधक
+Comment[hr]=Upravitelj kontaktima za GNOME
+Comment[hu]=Egy névjegykezelő a GNOME-hoz
+Comment[id]=Manajer kontak untuk GNOME
+Comment[is]=Tengiliðastjórnun fyrir GNOME
+Comment[it]=Un gestore di contatti per GNOME
+Comment[ja]=GNOME の連絡先管理ツール
+Comment[kk]=GNOME үшін контакттарды басқарушысы
+Comment[kn]=GNOME ಗಾಗಿನ ಸಂಪರ್ಕವಿಳಾಸದ ವ್ಯವಸ್ಥಾಪನೆ
+Comment[ko]=그놈용 연락처 관리자
+Comment[lt]=GNOME kontaktų tvarkytuvė
+Comment[lv]=GNOME kontaktu pārvaldnieks
+Comment[mjw]=A contacts manager for GNOME
+Comment[mr]=GNOME करिता संपर्क व्यवस्थापन
+Comment[nb]=Håndtering av kontakter for GNOME
+Comment[ne]=जिनोमको लागि एक समपर्क प्रबन्धक
+Comment[nl]=Contactenbeheer voor de Gnome-werkomgeving
+Comment[oc]=Un gestionari de contactes per GNOME
+Comment[or]=GNOME ପାଇଁ ଏକ ସମ୍ପର୍କ ପରିଚାଳକ
+Comment[pa]=ਗਨੋਮ ਲਈ ਸੰਪਰਕ ਮੈਨੇਜਰ
+Comment[pl]=Menedżer kontaktów dla środowiska GNOME
+Comment[pt]=Um gestor de contactos para o GNOME
+Comment[pt_BR]=Um gerenciador de contatos para o GNOME
+Comment[ro]=Un manager de contacte pentru GNOME
+Comment[ru]=Менеджер контактов для GNOME
+Comment[sk]=Správca kontaktov prostredia GNOME
+Comment[sl]=Upravljalnik stikov namizja GNOME
+Comment[sr]=Гномов управник контактима
+Comment[sr@latin]=Gnomov upravnik kontaktima
+Comment[sv]=En kontakthanterare för GNOME
+Comment[ta]=GNOME க்கான தொடர்பு நிர்வாகி
+Comment[te]=గ్నోమ్ కొరకు ఒక పరిచయాల నిర్వాహిక
+Comment[tg]=Мудири тамосҳо барои GNOME
+Comment[th]=โปรแกรมจัดการสมุดผู้ติดต่อสำหรับ GNOME
+Comment[tr]=GNOME için Adres Defteri Yöneticisi
+Comment[uk]=Керування контактами для GNOME
+Comment[vi]=Bộ quản lý danh bạ dành cho GNOME
+Comment[zh_CN]=GNOME 的联系人管理工具
+Comment[zh_HK]=GNOME 的聯絡人管理程式
+Comment[zh_TW]=GNOME 的聯絡人管理員
+Comment=A contacts manager for GNOME
+# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list 
MUST also end with a semicolon!
+Keywords[ar]=أصدقاء;دفتر عناوين;
+Keywords[as]=বন্ধুসকল;ঠিকনা বহী;
+Keywords[be]=сябры;прыяцелі;таварышы;адрасная кніга;
+Keywords[bn_IN]=বন্ধু; ঠিকানা বই;
+Keywords[bs]=friends;address book;prijatelji;adresar;
+Keywords[ca]=amics;llibreta d'adreces;
+Keywords[ca@valencia]=amics;llibreta d'adreces;
+Keywords[cs]=přátelé;přítelkyně;kamarádi;kamarádky;adresář;
+Keywords[da]=venner;adressebog;
+Keywords[de]=Freunde;Adressbuch;Kontakte;
+Keywords[el]=φίλοι;βιβλίο διευθύνσεων;επαφές;friends;address book;
+Keywords[en_GB]=friends;address book;
+Keywords[eo]=amikoj;adresaro;
+Keywords[es]=amigos;libreta de direcciones;
+Keywords[et]=sõbrad;aadressiraamat;kontaktid;telefoniraamat;
+Keywords[eu]=lagunak;helbide-liburua;
+Keywords[fa]=friends;address book;دوستان;دفترچه تلفن;
+Keywords[fi]=friends;address book;kaverit;ystävät;henkilöt;osoitekirja;kontaktit;
+Keywords[fr]=amis;carnet d’adresses;
+Keywords[fur]=amîs;rubriche;
+Keywords[ga]=cairde;leabhar seoltaí;
+Keywords[gd]=friends;address book;caraidean;leabhar sheòlaidhean;leabhar nan seòladh;seòlaidhean;
+Keywords[gl]=amigos;caderno de enderezos;
+Keywords[gu]=મિત્રો;સરનામાંપુસ્તિકા;
+Keywords[he]=חברים;פנקס כתובות;ספר כתובות;אנשי קשר;
+Keywords[hi]=मित्रों;पता पुस्तिका;
+Keywords[hr]=prijatelji;adresar;
+Keywords[hu]=barátok;címjegyzék;
+Keywords[id]=teman;buku alamat;
+Keywords[is]=vinir;nafnaskrá;netfangaskrá;
+Keywords[it]=contatti;amici;rubrica;
+Keywords[ja]=friends;address book;友達;アドレス帳;contacts;
+Keywords[kk]=friends;address book;достар;адрестік кітапша;
+Keywords[kn]=ಸ್ನೇಹಿತರು;ವಿಳಾಸ ಪುಸ್ತಕ;
+Keywords[ko]=friends;친구;address book;주소록;
+Keywords[lt]=draugai;adresų knyga;
+Keywords[lv]=draugi;adrešu grāmata;
+Keywords[mjw]=friends;address book;
+Keywords[ml]=കൂട്ടുകാര്‍;വിലാസപുസ്തകം;
+Keywords[mr]=मित्र;पत्ता पुस्तिका;
+Keywords[nb]=venner;adressebok;
+Keywords[ne]=मित्र;ठेगाना;पूस्तिका;
+Keywords[nl]=friends;address book;vrienden;kennissen;contactpersonen;contacten;personen;adressen;adresboek;
+Keywords[oc]=amics;quasernet d'adreças;
+Keywords[or]=ସାଙ୍ଗ ସାଥୀ;ଠିକଣା ପୁସ୍ତକ;
+Keywords[pa]=ਦੋਸਤ;ਮਿੱਤਰ;ਐਡਰੈਸਬੁੱਕ;ਸਿਰਨਾਵਾਂ;friends;address book;
+Keywords[pl]=przyjaciele;znajomi;ludzie;osoby;książka adresowa;
+Keywords[pt]=amigos;livro de endereços;
+Keywords[pt_BR]=amigos;catálogo de endereços;
+Keywords[ro]=friends;address book;prieteni;agendă;agendă de contacte;contacte;
+Keywords[ru]=друзья;адресная книга;
+Keywords[sk]=priatelia;adresár kontaktov;
+Keywords[sl]=prijatelji;imenik;stiki;naslovi;vizitka;kontakt;poslovanje;contact;
+Keywords[sr]=пријатељи;адресар;именик;prijatelji;adresar;imenik;friends;address book;
+Keywords[sr@latin]=prijatelji;adresar;imenik;prijatelji;adresar;imenik;friends;address book;
+Keywords[sv]=vänner;adressbok;
+Keywords[ta]=நண்பர்கள்;முகவரி புத்தகம்;
+Keywords[te]=మిత్రులు;చిరునామా పుస్తకం;
+Keywords[tg]=дӯстон;китоби суроғаҳо;
+Keywords[th]=เพื่อน;สมุดที่อยู่;
+Keywords[tr]=arkadaşlar;adres defteri;
+Keywords[ug]=دوستلار;ئادرېس دەپتىرى;friends;address book;
+Keywords[uk]=друзі;адресна книга;
+Keywords[vi]=friends;bạn;bè;ban;be;danh;ba;bạ;address book;sổ;địa;chỉ;so;dia;chi;liên;lạc;lien;lac;
+Keywords[zh_CN]=friends;address book;好友;朋友;通讯录;地址簿;
+Keywords[zh_HK]=friends;address book;朋友;通訊錄;
+Keywords[zh_TW]=friends;address book;朋友;通訊錄;
+Keywords=friends;address book;
+# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+Icon=org.gnome.Contacts.Devel
+Exec=gnome-contacts
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=GNOME;GTK;Office;ContactManagement;
+OnlyShowIn=GNOME;Unity;
+DBusActivatable=true
diff --git a/_build/data/org.gnome.Contacts.Devel.search-provider.ini 
b/_build/data/org.gnome.Contacts.Devel.search-provider.ini
new file mode 100644
index 0000000..ebc817f
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.Devel.search-provider.ini
@@ -0,0 +1,5 @@
+[Shell Search Provider]
+DesktopId=org.gnome.Contacts.Devel.desktop
+BusName=org.gnome.Contacts.Devel.SearchProvider
+ObjectPath=/org/gnome/Contacts/SearchProvider
+Version=2
diff --git a/_build/data/org.gnome.Contacts.Devel.service b/_build/data/org.gnome.Contacts.Devel.service
new file mode 100644
index 0000000..a0238d7
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.Devel.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.Contacts.Devel
+Exec=/app/bin/gnome-contacts --gapplication-service
diff --git a/_build/data/org.gnome.Contacts.appdata.xml.in b/_build/data/org.gnome.Contacts.appdata.xml.in
new file mode 100644
index 0000000..408413a
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.appdata.xml.in
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop">
+  <id>org.gnome.Contacts.Devel.desktop</id>
+  <metadata_license>CC0-1.0</metadata_license>
+  <project_license>GPL-2.0-or-later</project_license>
+  <name>Contacts</name>
+  <summary>A contacts manager for GNOME</summary>
+  <description>
+    <p>
+      Contacts keeps and organize your contacts information. You can create,
+      edit, delete and link together pieces of information about your contacts.
+      Contacts aggregates the details from all your sources providing a
+      centralized place for managing your contacts.
+    </p>
+    <p>
+      Contacts will also integrate with online address books and automatically
+      link contacts from different online sources.
+    </p>
+  </description>
+  <screenshots>
+    <screenshot height="575" width="800" type="default">
+      <image>
+      https://wiki.gnome.org/Apps/Contacts?action=AttachFile&amp;do=get&amp;target=appdata.png
+    </image>
+    </screenshot>
+  </screenshots>
+
+  <releases>
+    <release date="2020-01-05" version="3.35.1">
+      <description>
+        <p>
+          This is the first unstable release in the 3.35 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            You can now use a "back" gesture on touch devices to go back to the
+            contact list when viewing or editing a contact
+          </li>
+          <li>Contacts now works on even smaller screens</li>
+          <li>Nightly now show off with a fancy new icon</li>
+          <li>
+            Bugfix: if another app opens Contacts, this still works even if
+            it's not running
+          </li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-09-09" version="3.34">
+      <description>
+        <p>
+          Version 3.34 is a stable release, with the following major
+          improvements since 3.32:
+        </p>
+        <ul>
+          <li>Updated avatars which follow the GNOME avatar style</li>
+          <li>Better accessibility with mnemonics for the setup window</li>
+          <li>A new --search option for the command-line</li>
+          <li>Fixed issues when using the webcam to add an avatar</li>
+          <li>Fixed searching contacts in GNOME Shell returning no results</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-09-04" version="3.33.92">
+      <description>
+        <p>
+          This is the last unstable release in the 3.33 development series,
+          with the following improvements since 3.33.91:
+        </p>
+        <ul>
+          <li>Updated the man page</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-08-20" version="3.33.91">
+      <description>
+        <p>
+          This is the next unstable release in the 3.33 development series,
+          some would say a beta, with the following improvements:
+        </p>
+        <ul>
+          <li>
+            Make the avatars more in line with the other apps in the GNOME
+            ecoosystem. If possible, the initials will be used to make an
+            avatar if none is available.
+          </li>
+          <li>Fix searching contacts from GNOME Shell returning no results</li>
+          <li>Add a small description of the --search option</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-07-22" version="3.33.4">
+      <description>
+        <p>
+          This is the second unstable release in the 3.33 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Flatpak: Allow webcam access (and other small fixes)</li>
+          <li>Even better integration with CI</li>
+          <li>Add mnemonics to the setup window</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-04-24" version="3.33.1">
+      <description>
+        <p>
+          This is the first unstable release in the 3.33 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            Added a show-contact application action, so other applications
+            can activate Contacts to show a specific contact
+          </li>
+          <li>Reverted an accidental change in the Appstream ID</li>
+          <li>Pass along the right printf-format to MessageDialogs</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-03-12" version="3.32">
+      <description>
+        <p>
+          Version 3.32 is the next stable release, with the following major
+          improvements since 3.30:
+        </p>
+        <ul>
+          <li>A new, modern icon</li>
+          <li>A responsive UI: Contacts now works on all screen sizes!</li>
+          <li>
+            Property types are now handled more consistently, fixing some minor
+            issues, e.g. types mixing translations with the ones from Google.
+          </li>
+          <li>A few minor performance optimizations</li>
+          <li>Solved a bug where the birthday did not change</li>
+          <li>Fixed a crash when right-clicking in the contact list</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-02-06" version="3.31.90">
+      <description>
+        <p>
+          This is the next unstable release in the 3.31 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            The interface now adapts to the size of its window, making it
+            possible to use on smaller screens (such as phones)
+          </li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2019-01-09" version="3.31.4">
+      <description>
+        <p>
+          This is the next unstable release in the 3.31 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>
+            Small improvements for the "types" of properties ("Home", "Work",
+            …). Contacts should now also be able to more easily identify
+            untranslated properties from Google Contacts.
+          </li>
+          <li>Some UI tweaks for the primary menu</li>
+          <li>The appdata file and the desktop file are now validated by CI</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-12-10" version="3.31.3">
+      <description>
+        <p>
+          This is the first unstable release in the 3.31 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>An updated application icon</li>
+          <li>Dropped the app menu</li>
+          <li>Added a dependency on libhandy</li>
+          <li>Fix birthday not being properly saved</li>
+          <li>Telepathy is now disabled by default</li>
+          <li>Flatpak fixes</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-09-03" version="3.30">
+      <description>
+        <p>
+          Version 3.30 is the next stable release, with the following major
+          improvements since 3.28:
+        </p>
+        <ul>
+          <li>Tweaks to the avatar selector UI</li>
+          <li>Several fixes for the Flatpak build</li>
+          <li>OARS content ratings</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-08-27" version="3.29.92">
+      <description>
+        <p>
+          This is the last unstable release in the 3.29 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>The avatar selector now uses the native file chooser</li>
+          <li>Added OARS content rating</li>
+          <li>Restructured the code to allow automated tests</li>
+          <li>Several flatpak fixes</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-05-24" version="3.29.2">
+      <description>
+        <p>
+          This is the first unstable release in the 3.29 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>The avatar selection UI has been revamped</li>
+          <li>
+            Use GNOME's Meson conventions: compilation options can now no
+            longer have an auto value. Some have also been renamed to drop the
+            "with-" prefix.
+          </li>
+          <li>The Flatpak manifest was improved in several ways.</li>
+          <li>Extended the CI pipeline to use flatpak</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-03-12" version="3.28">
+      <description>
+        <p>
+          Version 3.28 is a stable release, with the following major improvements:
+        </p>
+        <ul>
+          <li>Favorite contacts, which are shown at the top of the contact list.</li>
+          <li>Sort contacts by their first name or surname.</li>
+          <li>Small tweaks to the UI, such as a more welcoming setup screen and rounded avatars.</li>
+          <li>Performance improvements to the GNOME Shell search provider.</li>
+          <li>A slightly decreased memory usage.</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-03-05" version="3.27.92">
+      <description>
+        <p>
+          This is the fourth unstable (beta) release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>The titlebar is now updated when a contact's name changes.</li>
+          <li>The window will now remember its size and restore it on the next start.</li>
+          <li>Postal addresses are now sorted before notes.</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-02-05" version="3.27.90">
+      <description>
+        <p>
+          This is the third unstable release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Support for favorite contacts. These contacts will be shown at the top of the list.</li>
+          <li>Contacts now allows sorting by both first name and surname.</li>
+          <li>Avatars are now displayed as a circle and are better optimized for memory usage.</li>
+          <li>Selection mode can now be started by right-clicking the contact list.</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2018-01-09" version="3.27.4">
+      <description>
+        <p>
+          This is the second unstable release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Contacts now has a shortcuts window</li>
+          <li>Small tweaks to the setup screen</li>
+          <li>Support --version as command-line argument</li>
+          <li>Telepathy is no longer a mandatory dependency</li>
+          <li>Support for maps can be disabled at compile time</li>
+          <li>Improved the Shell search provider</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-11-13" version="3.27.2">
+      <description>
+        <p>
+          This is the first unstable release in the 3.27 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Contact properties are now sorted by type</li>
+          <li>Avatars are now displayed using rounded border</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-09-11" version="3.26.0">
+      <description>
+        <p>
+          Version 3.26 is a stable release, with the following improvements:
+        </p>
+        <ul>
+          <li>Support for Flatpak</li>
+          <li>Support for faster builds using Meson</li>
+          <li>Saving notes in a contact now works again</li>
+          <li>Some contact properties are now selectable</li>
+          <li>Use our own app icon, rather than a predefined one</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-09-05" version="3.25.92.1">
+      <description>
+        <p>
+          This is an unstable release in the 3.25 development series,
+          which fixes build errors in version 3.25.92.
+        </p>
+      </description>
+    </release>
+    <release date="2017-09-04" version="3.25.92">
+      <description>
+        <p>
+          This is an unstable release in the 3.25 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Added experimental support for Flatpak</li>
+          <li>Contacts can now be built with Meson</li>
+          <li>Contacts now provides its own proper app icon</li>
+          <li>Some labels in the contact sheet are now selectable</li>
+        </ul>
+        <p>
+          The following bugs are also fixed:
+        </p>
+        <ul>
+          <li>Can't save notes in a contact</li>
+          <li>Bumped minimal version of telepathy-glib, GTK+ and GLib</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+    <release date="2017-07-17" version="3.25.4">
+      <description>
+        <p>
+          This is an unstable release in the 3.25 development series,
+          with the following improvements:
+        </p>
+        <ul>
+          <li>Contacts now provides its own application icon</li>
+          <li>Small UI improvements to the avatar chooser dialog</li>
+        </ul>
+        <p>
+          The following bugs are also fixed:
+        </p>
+        <ul>
+          <li>Folks now requires version 11.4 or higher</li>
+          <li>Migrated away from intltool and libgd</li>
+          <li>Got rid of a bunch of warnings and critical messsages</li>
+          <li>Use the locale to translate months</li>
+          <li>Added git.mk to automagically create .gitignores</li>
+        </ul>
+        <p>This release also updates translations in several languages.</p>
+      </description>
+    </release>
+  </releases>
+
+  <kudos>
+    <kudo>AppMenu</kudo>
+    <kudo>HiDpiIcon</kudo>
+    <kudo>ModernToolkit</kudo>
+    <kudo>SearchProvider</kudo>
+  </kudos>
+  <provides>
+    <binary>gnome-contacts</binary>
+  </provides>
+  <url type="homepage">https://wiki.gnome.org/Apps/Contacts</url>
+  <url type="bugtracker">https://gitlab.gnome.org/GNOME/gnome-contacts/issues</url>
+  <url type="donation">http://www.gnome.org/friends/</url>
+  <update_contact>nielsdg gnome org</update_contact>
+  <project_group>GNOME</project_group>
+  <developer_name>The GNOME Project</developer_name>
+  <launchable type="desktop-id">org.gnome.Contacts.desktop</launchable>
+  <translation type="gettext">gnome-contacts</translation>
+  <content_rating type="oars-1.1">
+    <content_attribute id="violence-cartoon">none</content_attribute>
+    <content_attribute id="violence-fantasy">none</content_attribute>
+    <content_attribute id="violence-realistic">none</content_attribute>
+    <content_attribute id="violence-bloodshed">none</content_attribute>
+    <content_attribute id="violence-sexual">none</content_attribute>
+    <content_attribute id="violence-desecration">none</content_attribute>
+    <content_attribute id="violence-slavery">none</content_attribute>
+    <content_attribute id="violence-worship">none</content_attribute>
+    <content_attribute id="drugs-alcohol">none</content_attribute>
+    <content_attribute id="drugs-narcotics">none</content_attribute>
+    <content_attribute id="drugs-tobacco">none</content_attribute>
+    <content_attribute id="sex-nudity">none</content_attribute>
+    <content_attribute id="sex-themes">none</content_attribute>
+    <content_attribute id="sex-homosexuality">none</content_attribute>
+    <content_attribute id="sex-prostitution">none</content_attribute>
+    <content_attribute id="sex-adultery">none</content_attribute>
+    <content_attribute id="sex-appearance">none</content_attribute>
+    <content_attribute id="language-profanity">none</content_attribute>
+    <content_attribute id="language-humor">none</content_attribute>
+    <content_attribute id="language-discrimination">none</content_attribute>
+    <content_attribute id="social-chat">none</content_attribute>
+    <content_attribute id="social-info">none</content_attribute>
+    <content_attribute id="social-audio">none</content_attribute>
+    <content_attribute id="social-location">none</content_attribute>
+    <content_attribute id="social-contacts">intense</content_attribute>
+    <content_attribute id="money-purchasing">none</content_attribute>
+    <content_attribute id="money-gambling">none</content_attribute>
+  </content_rating>
+</component>
diff --git a/_build/data/org.gnome.Contacts.c b/_build/data/org.gnome.Contacts.c
new file mode 100644
index 0000000..e24c912
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.c
@@ -0,0 +1,1449 @@
+#include <gio/gio.h>
+
+#if defined (__ELF__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
+# define SECTION __attribute__ ((section (".gresource.resources"), aligned (8)))
+#else
+# define SECTION
+#endif
+
+#ifdef _MSC_VER
+static const SECTION union { const guint8 data[10241]; const double alignment; void * const ptr;}  
resources_resource_data = { {
+  0107, 0126, 0141, 0162, 0151, 0141, 0156, 0164, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 
+  0030, 0000, 0000, 0000, 0120, 0002, 0000, 0000, 0000, 0000, 0000, 0050, 0024, 0000, 0000, 0000, 
+  0000, 0000, 0000, 0000, 0002, 0000, 0000, 0000, 0002, 0000, 0000, 0000, 0002, 0000, 0000, 0000, 
+  0003, 0000, 0000, 0000, 0004, 0000, 0000, 0000, 0005, 0000, 0000, 0000, 0006, 0000, 0000, 0000, 
+  0007, 0000, 0000, 0000, 0010, 0000, 0000, 0000, 0010, 0000, 0000, 0000, 0010, 0000, 0000, 0000, 
+  0012, 0000, 0000, 0000, 0016, 0000, 0000, 0000, 0016, 0000, 0000, 0000, 0017, 0000, 0000, 0000, 
+  0021, 0000, 0000, 0000, 0021, 0000, 0000, 0000, 0022, 0000, 0000, 0000, 0022, 0000, 0000, 0000, 
+  0324, 0265, 0002, 0000, 0377, 0377, 0377, 0377, 0120, 0002, 0000, 0000, 0001, 0000, 0114, 0000, 
+  0124, 0002, 0000, 0000, 0130, 0002, 0000, 0000, 0034, 0266, 0164, 0136, 0023, 0000, 0000, 0000, 
+  0130, 0002, 0000, 0000, 0037, 0000, 0166, 0000, 0170, 0002, 0000, 0000, 0221, 0004, 0000, 0000, 
+  0217, 0136, 0330, 0233, 0023, 0000, 0000, 0000, 0221, 0004, 0000, 0000, 0042, 0000, 0166, 0000, 
+  0270, 0004, 0000, 0000, 0304, 0006, 0000, 0000, 0060, 0045, 0065, 0133, 0023, 0000, 0000, 0000, 
+  0304, 0006, 0000, 0000, 0033, 0000, 0166, 0000, 0340, 0006, 0000, 0000, 0042, 0011, 0000, 0000, 
+  0031, 0142, 0222, 0037, 0023, 0000, 0000, 0000, 0042, 0011, 0000, 0000, 0030, 0000, 0166, 0000, 
+  0100, 0011, 0000, 0000, 0350, 0014, 0000, 0000, 0356, 0176, 0323, 0373, 0023, 0000, 0000, 0000, 
+  0350, 0014, 0000, 0000, 0036, 0000, 0166, 0000, 0010, 0015, 0000, 0000, 0300, 0017, 0000, 0000, 
+  0263, 0066, 0320, 0203, 0016, 0000, 0000, 0000, 0300, 0017, 0000, 0000, 0004, 0000, 0114, 0000, 
+  0304, 0017, 0000, 0000, 0310, 0017, 0000, 0000, 0260, 0267, 0044, 0060, 0017, 0000, 0000, 0000, 
+  0310, 0017, 0000, 0000, 0006, 0000, 0114, 0000, 0320, 0017, 0000, 0000, 0324, 0017, 0000, 0000, 
+  0003, 0244, 0310, 0314, 0023, 0000, 0000, 0000, 0324, 0017, 0000, 0000, 0032, 0000, 0166, 0000, 
+  0360, 0017, 0000, 0000, 0224, 0022, 0000, 0000, 0327, 0246, 0223, 0250, 0006, 0000, 0000, 0000, 
+  0224, 0022, 0000, 0000, 0017, 0000, 0166, 0000, 0250, 0022, 0000, 0000, 0335, 0023, 0000, 0000, 
+  0360, 0234, 0140, 0055, 0023, 0000, 0000, 0000, 0335, 0023, 0000, 0000, 0030, 0000, 0166, 0000, 
+  0370, 0023, 0000, 0000, 0177, 0025, 0000, 0000, 0314, 0133, 0025, 0323, 0023, 0000, 0000, 0000, 
+  0177, 0025, 0000, 0000, 0031, 0000, 0166, 0000, 0230, 0025, 0000, 0000, 0163, 0026, 0000, 0000, 
+  0060, 0313, 0173, 0243, 0023, 0000, 0000, 0000, 0163, 0026, 0000, 0000, 0025, 0000, 0166, 0000, 
+  0210, 0026, 0000, 0000, 0230, 0031, 0000, 0000, 0240, 0376, 0061, 0016, 0023, 0000, 0000, 0000, 
+  0230, 0031, 0000, 0000, 0030, 0000, 0166, 0000, 0260, 0031, 0000, 0000, 0226, 0033, 0000, 0000, 
+  0076, 0121, 0363, 0003, 0007, 0000, 0000, 0000, 0226, 0033, 0000, 0000, 0011, 0000, 0114, 0000, 
+  0240, 0033, 0000, 0000, 0250, 0033, 0000, 0000, 0113, 0120, 0220, 0013, 0000, 0000, 0000, 0000, 
+  0250, 0033, 0000, 0000, 0004, 0000, 0114, 0000, 0254, 0033, 0000, 0000, 0260, 0033, 0000, 0000, 
+  0223, 0165, 0327, 0152, 0023, 0000, 0000, 0000, 0260, 0033, 0000, 0000, 0011, 0000, 0166, 0000, 
+  0300, 0033, 0000, 0000, 0342, 0035, 0000, 0000, 0031, 0230, 0161, 0204, 0023, 0000, 0000, 0000, 
+  0342, 0035, 0000, 0000, 0040, 0000, 0166, 0000, 0010, 0036, 0000, 0000, 0104, 0040, 0000, 0000, 
+  0233, 0307, 0032, 0100, 0023, 0000, 0000, 0000, 0104, 0040, 0000, 0000, 0022, 0000, 0166, 0000, 
+  0130, 0040, 0000, 0000, 0310, 0047, 0000, 0000, 0353, 0257, 0241, 0217, 0016, 0000, 0000, 0000, 
+  0310, 0047, 0000, 0000, 0003, 0000, 0114, 0000, 0314, 0047, 0000, 0000, 0000, 0050, 0000, 0000, 
+  0057, 0000, 0000, 0000, 0017, 0000, 0000, 0000, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 
+  0055, 0151, 0156, 0055, 0141, 0160, 0160, 0055, 0156, 0157, 0164, 0151, 0146, 0151, 0143, 0141, 
+  0164, 0151, 0157, 0156, 0056, 0165, 0151, 0000, 0070, 0006, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0265, 0125, 0313, 0156, 0333, 0060, 0020, 0274, 0347, 0053, 0204, 0275, 0026, 0216, 
+  0355, 0244, 0055, 0172, 0220, 0030, 0270, 0051, 0342, 0006, 0050, 0222, 0300, 0110, 0221, 0043, 
+  0261, 0242, 0326, 0026, 0153, 0212, 0144, 0111, 0372, 0221, 0176, 0175, 0051, 0333, 0212, 0335, 
+  0072, 0226, 0003, 0027, 0275, 0055, 0244, 0341, 0160, 0147, 0166, 0126, 0112, 0257, 0226, 0225, 
+  0112, 0346, 0344, 0274, 0064, 0072, 0203, 0376, 0171, 0017, 0022, 0322, 0302, 0024, 0122, 0117, 
+  0062, 0370, 0376, 0170, 0323, 0371, 0004, 0127, 0354, 0054, 0225, 0072, 0220, 0033, 0243, 0040, 
+  0226, 0072, 0372, 0071, 0223, 0216, 0174, 0242, 0144, 0236, 0301, 0044, 0114, 0337, 0301, 0226, 
+  0340, 0362, 0274, 0377, 0036, 0272, 0054, 0015, 0124, 0131, 0205, 0201, 0022, 0241, 0320, 0373, 
+  0014, 0256, 0215, 0016, 0050, 0202, 0277, 0325, 0003, 0153, 0357, 0114, 0220, 0143, 0051, 0060, 
+  0304, 0043, 0220, 0130, 0164, 0244, 0103, 0006, 0303, 0060, 0035, 0321, 0234, 0120, 0221, 0003, 
+  0226, 0132, 0147, 0054, 0271, 0360, 0234, 0150, 0254, 0050, 0203, 0271, 0364, 0062, 0127, 0004, 
+  0354, 0321, 0315, 0050, 0355, 0066, 0157, 0367, 0160, 0045, 0052, 0071, 0321, 0300, 0004, 0325, 
+  0015, 0267, 0000, 0347, 0033, 0240, 0017, 0350, 0302, 0056, 0116, 0224, 0122, 0025, 0054, 0065, 
+  0371, 0017, 0022, 0241, 0151, 0077, 0366, 0066, 0164, 0262, 0200, 0104, 0026, 0121, 0162, 0135, 
+  0235, 0334, 0241, 0060, 0152, 0126, 0151, 0356, 0055, 0212, 0350, 0061, 0260, 0376, 0105, 0013, 
+  0170, 0041, 0213, 0120, 0362, 0332, 0161, 0362, 0001, 0330, 0145, 0257, 0267, 0013, 0366, 0341, 
+  0131, 0305, 0201, 0254, 0172, 0334, 0034, 0100, 0153, 0073, 0172, 0327, 0336, 0070, 0213, 0156, 
+  0203, 0073, 0240, 0354, 0033, 0346, 0244, 0326, 0322, 0324, 0252, 0074, 0335, 0175, 0132, 0132, 
+  0324, 0305, 0233, 0247, 0264, 0147, 0376, 0337, 0362, 0035, 0332, 0243, 0144, 0025, 0056, 0371, 
+  0332, 0047, 0121, 0242, 0363, 0300, 0076, 0364, 0216, 0120, 0362, 0312, 0024, 0121, 0314, 0303, 
+  0340, 0156, 0170, 0317, 0237, 0106, 0203, 0007, 0376, 0164, 0077, 0372, 0302, 0257, 0277, 0016, 
+  0106, 0273, 0047, 0273, 0153, 0247, 0042, 0005, 0212, 0151, 0234, 0325, 0036, 0127, 0060, 0226, 
+  0143, 0210, 0271, 0056, 0201, 0265, 0335, 0251, 0150, 0034, 0136, 0007, 0166, 0137, 0250, 0273, 
+  0233, 0351, 0034, 0032, 0322, 0347, 0131, 0010, 0365, 0266, 0324, 0123, 0022, 0312, 0170, 0342, 
+  0371, 0372, 0311, 0311, 0303, 0232, 0277, 0165, 0125, 0306, 0106, 0314, 0074, 0067, 0232, 0013, 
+  0045, 0305, 0024, 0330, 0015, 0052, 0337, 0106, 0354, 0110, 0111, 0032, 0003, 0323, 0106, 0377, 
+  0001, 0363, 0361, 0072, 0124, 0315, 0032, 0324, 0134, 0024, 0067, 0252, 0214, 0201, 0211, 0053, 
+  0237, 0301, 0352, 0202, 0255, 0060, 0376, 0202, 0360, 0213, 0230, 0152, 0212, 0272, 0265, 0251, 
+  0343, 0174, 0310, 0241, 0333, 0012, 0047, 0364, 0017, 0173, 0211, 0232, 0257, 0224, 0036, 0027, 
+  0150, 0345, 0222, 0024, 0367, 0362, 0127, 0144, 0355, 0177, 0154, 0001, 0112, 0021, 0165, 0324, 
+  0045, 0260, 0205, 0324, 0205, 0131, 0164, 0126, 0012, 0073, 0376, 0271, 0312, 0115, 0224, 0367, 
+  0152, 0332, 0232, 0044, 0374, 0237, 0370, 0135, 0264, 0307, 0157, 0277, 0213, 0346, 0113, 0036, 
+  0313, 0355, 0117, 0340, 0354, 0067, 0021, 0116, 0103, 0063, 0000, 0050, 0165, 0165, 0141, 0171, 
+  0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0154, 0151, 0156, 0153, 0145, 0144, 
+  0055, 0160, 0145, 0162, 0163, 0157, 0156, 0141, 0163, 0055, 0144, 0151, 0141, 0154, 0157, 0147, 
+  0056, 0165, 0151, 0000, 0000, 0000, 0000, 0000, 0150, 0006, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0265, 0125, 0115, 0217, 0323, 0060, 0020, 0275, 0357, 0257, 0260, 0174, 0105, 0273, 
+  0355, 0026, 0204, 0366, 0220, 0170, 0305, 0202, 0130, 0016, 0173, 0100, 0142, 0021, 0342, 0024, 
+  0115, 0234, 0151, 0062, 0324, 0261, 0203, 0075, 0351, 0307, 0277, 0147, 0232, 0155, 0125, 0240, 
+  0125, 0267, 0164, 0305, 0315, 0261, 0237, 0075, 0357, 0075, 0077, 0117, 0262, 0333, 0145, 0353, 
+  0324, 0034, 0143, 0242, 0340, 0163, 0175, 0175, 0065, 0326, 0012, 0275, 0015, 0025, 0371, 0072, 
+  0327, 0137, 0037, 0077, 0136, 0336, 0350, 0133, 0163, 0221, 0221, 0147, 0214, 0123, 0260, 0150, 
+  0262, 0210, 0077, 0173, 0212, 0230, 0224, 0243, 0062, 0327, 0065, 0317, 0136, 0351, 0335, 0001, 
+  0257, 0257, 0046, 0023, 0075, 0062, 0031, 0143, 0333, 0071, 0140, 0124, 0326, 0101, 0112, 0271, 
+  0176, 0037, 0074, 0203, 0345, 0364, 0100, 0176, 0206, 0325, 0147, 0201, 0007, 0017, 0351, 0003, 
+  0201, 0013, 0265, 0126, 0035, 0104, 0364, 0234, 0353, 0173, 0236, 0155, 0246, 0114, 0326, 0305, 
+  0320, 0141, 0344, 0225, 0362, 0320, 0142, 0256, 0347, 0224, 0250, 0164, 0250, 0315, 0143, 0354, 
+  0061, 0033, 0155, 0127, 0367, 0160, 0155, 0250, 0300, 0075, 0213, 0252, 0160, 0012, 0275, 0343, 
+  0142, 0101, 0025, 0067, 0332, 0274, 0035, 0217, 0117, 0000, 0067, 0110, 0165, 0303, 0332, 0274, 
+  0371, 0023, 0155, 0033, 0162, 0225, 0342, 0125, 0047, 0120, 0046, 0166, 0130, 0102, 0024, 0376, 
+  0241, 0374, 0201, 0226, 0267, 0372, 0105, 0331, 0047, 0204, 0012, 0343, 0335, 0260, 0170, 0246, 
+  0270, 0324, 0227, 0103, 0005, 0255, 0070, 0202, 0117, 0142, 0060, 0310, 0266, 0134, 0257, 0060, 
+  0151, 0363, 0144, 0255, 0172, 0147, 0155, 0350, 0075, 0247, 0337, 0217, 0031, 0075, 0221, 0221, 
+  0301, 0100, 0166, 0313, 0171, 0270, 0124, 0017, 0356, 0162, 0370, 0024, 0032, 0145, 0130, 0036, 
+  0142, 0176, 0067, 0114, 0237, 0311, 0071, 0104, 0222, 0273, 0005, 0226, 0170, 0150, 0043, 0071, 
+  0141, 0262, 0340, 0366, 0374, 0073, 0120, 0365, 0076, 0122, 0365, 0037, 0313, 0376, 0205, 0267, 
+  0301, 0365, 0255, 0057, 0122, 0007, 0126, 0242, 0257, 0315, 0315, 0021, 0154, 0014, 0213, 0035, 
+  0360, 0172, 0162, 0212, 0230, 0057, 0066, 0006, 0347, 0260, 0372, 0106, 0276, 0012, 0213, 0363, 
+  0145, 0065, 0151, 0070, 0110, 0042, 0126, 0164, 0301, 0221, 0135, 0151, 0343, 0121, 0344, 0035, 
+  0331, 0062, 0337, 0337, 0002, 0075, 0207, 0126, 0274, 0261, 0307, 0052, 0341, 0262, 0003, 0137, 
+  0075, 0313, 0150, 0176, 0042, 0056, 0065, 0040, 0312, 0213, 0365, 0073, 0321, 0206, 0374, 0051, 
+  0246, 0075, 0120, 0342, 0165, 0366, 0024, 0111, 0070, 0335, 0020, 0357, 0002, 0066, 0361, 0056, 
+  0346, 0204, 0057, 0360, 0061, 0241, 0223, 0132, 0022, 0216, 0102, 0032, 0206, 0300, 0175, 0360, 
+  0170, 0364, 0305, 0034, 0176, 0102, 0207, 0110, 0103, 0211, 0356, 0005, 0027, 0014, 0216, 0152, 
+  0211, 0254, 0305, 0365, 0343, 0074, 0002, 0164, 0103, 0235, 0103, 0215, 0340, 0173, 0350, 0225, 
+  0005, 0257, 0326, 0216, 0051, 0273, 0151, 0274, 0252, 0134, 0251, 0215, 0150, 0137, 0053, 0156, 
+  0260, 0125, 0323, 0030, 0332, 0365, 0150, 0207, 0161, 0142, 0370, 0277, 0271, 0260, 0077, 0261, 
+  0355, 0374, 0062, 0334, 0375, 0064, 0056, 0176, 0001, 0021, 0350, 0131, 0064, 0000, 0050, 0165, 
+  0165, 0141, 0171, 0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0141, 0166, 0141, 
+  0164, 0141, 0162, 0055, 0163, 0145, 0154, 0145, 0143, 0164, 0157, 0162, 0056, 0165, 0151, 0000, 
+  0004, 0013, 0000, 0000, 0001, 0000, 0000, 0000, 0170, 0332, 0335, 0126, 0313, 0156, 0333, 0060, 
+  0020, 0274, 0347, 0053, 0004, 0136, 0213, 0306, 0261, 0213, 0002, 0071, 0110, 0012, 0352, 0002, 
+  0356, 0065, 0100, 0335, 0263, 0260, 0242, 0326, 0322, 0126, 0053, 0122, 0045, 0051, 0333, 0271, 
+  0365, 0153, 0372, 0141, 0375, 0222, 0256, 0343, 0332, 0201, 0343, 0064, 0222, 0203, 0302, 0175, 
+  0334, 0014, 0151, 0070, 0032, 0316, 0214, 0227, 0214, 0157, 0326, 0015, 0107, 0113, 0164, 0236, 
+  0254, 0111, 0324, 0370, 0362, 0112, 0105, 0150, 0264, 0055, 0310, 0224, 0211, 0372, 0064, 0237, 
+  0275, 0276, 0126, 0067, 0351, 0105, 0114, 0046, 0240, 0133, 0200, 0306, 0064, 0166, 0370, 0245, 
+  0043, 0207, 0076, 0142, 0312, 0023, 0125, 0206, 0372, 0225, 0172, 0040, 0170, 0163, 0071, 0231, 
+  0250, 0121, 0032, 0007, 0154, 0132, 0206, 0200, 0221, 0146, 0360, 0076, 0121, 0357, 0255, 0011, 
+  0240, 0203, 0177, 0267, 0204, 0000, 0356, 0043, 0062, 0352, 0140, 0235, 0212, 0132, 0160, 0150, 
+  0102, 0242, 0076, 0204, 0372, 0326, 0266, 0126, 0170, 0124, 0032, 0267, 0316, 0266, 0350, 0302, 
+  0135, 0144, 0240, 0301, 0104, 0151, 0060, 0331, 0302, 0352, 0316, 0253, 0164, 0006, 0354, 0061, 
+  0036, 0355, 0000, 0151, 0254, 0053, 0342, 0042, 0215, 0155, 0376, 0131, 0010, 0167, 0037, 0023, 
+  0262, 0251, 0135, 0037, 0023, 0055, 0311, 0123, 0316, 0250, 0322, 0271, 0353, 0016, 0130, 0116, 
+  0370, 0340, 0043, 0150, 0003, 0256, 0044, 0223, 0061, 0056, 0202, 0112, 0307, 0127, 0375, 0110, 
+  0107, 0145, 0065, 0020, 0032, 0154, 0073, 0014, 0230, 0333, 0020, 0154, 0323, 0203, 0265, 0216, 
+  0304, 0151, 0010, 0022, 0223, 0112, 0305, 0347, 0100, 0032, 0370, 0031, 0274, 0157, 0101, 0113, 
+  0011, 0036, 0263, 0376, 0312, 0360, 0031, 0333, 0325, 0306, 0364, 0210, 0212, 0104, 0011, 0326, 
+  0133, 0003, 0076, 0013, 0125, 0327, 0344, 0006, 0210, 0263, 0322, 0121, 0161, 0226, 0104, 0264, 
+  0345, 0256, 0061, 0331, 0136, 0376, 0333, 0147, 0260, 0316, 0256, 0206, 0001, 0375, 0175, 0141, 
+  0305, 0272, 0254, 0261, 0205, 0310, 0065, 0326, 0034, 0150, 0030, 0155, 0375, 0220, 0165, 0240, 
+  0153, 0141, 0073, 0042, 0300, 0165, 0013, 0246, 0350, 0127, 0277, 0040, 0346, 0136, 0067, 0132, 
+  0353, 0151, 0233, 0343, 0101, 0064, 0243, 0375, 0307, 0107, 0077, 0123, 0032, 0024, 0226, 0017, 
+  0126, 0327, 0377, 0115, 0122, 0215, 0374, 0037, 0356, 0267, 0055, 0163, 0045, 0223, 0027, 0031, 
+  0223, 0301, 0236, 0045, 0260, 0176, 0152, 0311, 0365, 0071, 0372, 0320, 0343, 0346, 0211, 0165, 
+  0030, 0277, 0254, 0016, 0347, 0032, 0226, 0025, 0060, 0225, 0042, 0123, 0343, 0346, 0064, 0371, 
+  0175, 0263, 0147, 0332, 0311, 0374, 0063, 0333, 0066, 0353, 0012, 0321, 0143, 0226, 0157, 0037, 
+  0035, 0061, 0063, 0344, 0310, 0052, 0012, 0016, 0214, 0227, 0363, 0011, 0144, 0207, 0211, 0272, 
+  0103, 0021, 0077, 0207, 0032, 0043, 0210, 0156, 0111, 0207, 0316, 0341, 0367, 0257, 0337, 0206, 
+  0355, 0271, 0307, 0035, 0143, 0063, 0137, 0111, 0167, 0141, 0100, 0216, 0016, 0065, 0322, 0022, 
+  0175, 0126, 0340, 0002, 0072, 0016, 0307, 0013, 0274, 0330, 0007, 0274, 0023, 0301, 0244, 0153, 
+  0054, 0124, 0124, 0111, 0223, 0030, 0235, 0214, 0370, 0115, 0365, 0357, 0267, 0277, 0177, 0347, 
+  0127, 0320, 0266, 0130, 0154, 0204, 0154, 0216, 0345, 0177, 0154, 0116, 0115, 0117, 0116, 0161, 
+  0173, 0263, 0220, 0034, 0147, 0304, 0075, 0041, 0276, 0240, 0340, 0147, 0010, 0120, 0214, 0375, 
+  0373, 0342, 0353, 0231, 0053, 0177, 0112, 0326, 0144, 0240, 0254, 0375, 0203, 0335, 0255, 0124, 
+  0176, 0076, 0134, 0150, 0057, 0176, 0000, 0101, 0335, 0014, 0301, 0000, 0050, 0165, 0165, 0141, 
+  0171, 0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0163, 0145, 0164, 0165, 0160, 
+  0055, 0167, 0151, 0156, 0144, 0157, 0167, 0056, 0165, 0151, 0000, 0000, 0000, 0000, 0000, 0000, 
+  0210, 0016, 0000, 0000, 0001, 0000, 0000, 0000, 0170, 0332, 0255, 0127, 0133, 0217, 0323, 0072, 
+  0020, 0176, 0347, 0127, 0370, 0370, 0025, 0322, 0056, 0273, 0173, 0020, 0132, 0265, 0101, 0134, 
+  0304, 0105, 0102, 0002, 0004, 0210, 0307, 0310, 0161, 0146, 0023, 0123, 0307, 0016, 0366, 0144, 
+  0273, 0345, 0327, 0063, 0166, 0233, 0322, 0155, 0273, 0151, 0350, 0126, 0312, 0203, 0023, 0317, 
+  0214, 0347, 0362, 0315, 0067, 0316, 0344, 0305, 0155, 0255, 0331, 0015, 0070, 0257, 0254, 0231, 
+  0362, 0247, 0243, 0063, 0316, 0300, 0110, 0133, 0050, 0123, 0116, 0371, 0367, 0157, 0157, 0223, 
+  0347, 0374, 0105, 0372, 0150, 0242, 0014, 0202, 0273, 0026, 0022, 0322, 0311, 0177, 0111, 0302, 
+  0326, 0257, 0211, 0203, 0137, 0255, 0162, 0340, 0131, 0211, 0263, 0307, 0354, 0142, 0164, 0176, 
+  0316, 0222, 0044, 0235, 0040, 0324, 0215, 0026, 0010, 0114, 0152, 0341, 0375, 0224, 0277, 0266, 
+  0006, 0205, 0104, 0377, 0025, 0260, 0155, 0176, 0050, 0123, 0330, 0071, 0147, 0215, 0160, 0140, 
+  0160, 0312, 0337, 0341, 0354, 0145, 0323, 0150, 0045, 0005, 0222, 0027, 0253, 0335, 0164, 0322, 
+  0070, 0333, 0200, 0303, 0005, 0063, 0242, 0206, 0051, 0277, 0121, 0136, 0345, 0032, 0170, 0372, 
+  0315, 0265, 0060, 0031, 0167, 0273, 0073, 0162, 0005, 0134, 0213, 0126, 0143, 0066, 0127, 0005, 
+  0126, 0074, 0175, 0176, 0166, 0066, 0100, 0270, 0002, 0125, 0126, 0310, 0323, 0147, 0275, 0322, 
+  0112, 0132, 0223, 0205, 0045, 0117, 0113, 0143, 0153, 0110, 0344, 0052, 0254, 0115, 0035, 0131, 
+  0051, 0135, 0060, 0134, 0064, 0244, 0200, 0012, 0065, 0344, 0302, 0121, 0064, 0066, 0377, 0011, 
+  0022, 0273, 0174, 0120, 0310, 0357, 0101, 0024, 0340, 0136, 0305, 0315, 0043, 0103, 0225, 0302, 
+  0144, 0327, 0126, 0266, 0236, 0247, 0157, 0205, 0366, 0175, 0242, 0321, 0023, 0316, 0320, 0011, 
+  0343, 0251, 0060, 0202, 0314, 0117, 0371, 0002, 0110, 0263, 0053, 0015, 0213, 0265, 0351, 0061, 
+  0341, 0053, 0073, 0317, 0244, 0266, 0036, 0262, 0274, 0105, 0264, 0146, 0317, 0251, 0036, 0027, 
+  0232, 0060, 0022, 0243, 0334, 0074, 0071, 0344, 0140, 0234, 0116, 0306, 0335, 0176, 0310, 0321, 
+  0236, 0234, 0274, 0132, 0332, 0145, 0252, 0240, 0343, 0202, 0073, 0031, 0241, 0013, 0327, 0307, 
+  0235, 0040, 0117, 0007, 0044, 0265, 0310, 0101, 0357, 0115, 0123, 0366, 0205, 0074, 0351, 0321, 
+  0154, 0075, 0044, 0255, 0241, 0212, 0152, 0145, 0016, 0173, 0104, 0011, 0127, 0153, 0054, 0211, 
+  0246, 0031, 0375, 0332, 0262, 0276, 0104, 0121, 0354, 0063, 0043, 0164, 0022, 0137, 0203, 0232, 
+  0004, 0277, 0212, 0171, 0053, 0173, 0057, 0161, 0366, 0051, 0176, 0270, 0047, 0173, 0231, 0300, 
+  0331, 0122, 0143, 0067, 0217, 0153, 0335, 0253, 0253, 0277, 0047, 0044, 0321, 0271, 0275, 0210, 
+  0021, 0106, 0202, 0146, 0361, 0010, 0046, 0114, 0301, 0266, 0235, 0037, 0057, 0017, 0242, 0305, 
+  0252, 0320, 0353, 0017, 0215, 0220, 0063, 0242, 0226, 0035, 0017, 0302, 0367, 0054, 0364, 0014, 
+  0117, 0075, 0012, 0167, 0327, 0332, 0132, 0251, 0063, 0067, 0034, 0076, 0205, 0065, 0360, 0140, 
+  0370, 0170, 0060, 0136, 0241, 0272, 0201, 0303, 0155, 0066, 0034, 0151, 0121, 0052, 0243, 0272, 
+  0110, 0042, 0276, 0331, 0141, 0313, 0075, 0310, 0174, 0103, 0101, 0036, 0217, 0314, 0323, 0040, 
+  0155, 0043, 0321, 0047, 0104, 0132, 0244, 0044, 0046, 0055, 0015, 0023, 0100, 0350, 0205, 0330, 
+  0076, 0346, 0201, 0133, 0114, 0126, 0305, 0037, 0337, 0335, 0362, 0155, 0131, 0202, 0107, 0050, 
+  0222, 0145, 0047, 0156, 0222, 0323, 0277, 0200, 0025, 0114, 0321, 0017, 0325, 0035, 0077, 0357, 
+  0303, 0356, 0127, 0351, 0254, 0326, 0120, 0074, 0164, 0374, 0125, 0076, 0032, 0042, 0302, 0315, 
+  0032, 0113, 0320, 0132, 0360, 0324, 0000, 0015, 0370, 0036, 0225, 0360, 0052, 0112, 0232, 0326, 
+  0304, 0107, 0330, 0072, 0241, 0327, 0343, 0160, 0057, 0126, 0266, 0235, 0177, 0137, 0054, 0136, 
+  0133, 0335, 0326, 0017, 0350, 0260, 0132, 0334, 0252, 0272, 0255, 0273, 0231, 0335, 0077, 0205, 
+  0003, 0214, 0051, 0272, 0322, 0331, 0071, 0126, 0235, 0312, 0145, 0257, 0112, 0055, 0134, 0251, 
+  0114, 0206, 0266, 0341, 0351, 0305, 0371, 0141, 0301, 0334, 0022, 0150, 0352, 0141, 0262, 0221, 
+  0257, 0170, 0372, 0164, 0200, 0050, 0241, 0145, 0133, 0360, 0076, 0070, 0274, 0163, 0252, 0070, 
+  0076, 0237, 0067, 0102, 0253, 0222, 0352, 0041, 0041, 0264, 0165, 0037, 0132, 0206, 0012, 0346, 
+  0326, 0021, 0203, 0164, 0331, 0356, 0015, 0226, 0352, 0222, 0171, 0152, 0004, 0352, 0003, 0236, 
+  0236, 0137, 0366, 0110, 0132, 0247, 0350, 0334, 0170, 0353, 0343, 0051, 0141, 0024, 0351, 0012, 
+  0250, 0207, 0144, 0347, 0143, 0044, 0303, 0343, 0173, 0144, 0150, 0324, 0240, 0265, 0152, 0274, 
+  0372, 0275, 0333, 0351, 0203, 0331, 0371, 0007, 0150, 0342, 0257, 0073, 0336, 0010, 0104, 0247, 
+  0210, 0227, 0300, 0157, 0254, 0073, 0142, 0242, 0014, 0020, 0027, 0122, 0001, 0133, 0172, 0273, 
+  0030, 0375, 0037, 0231, 0151, 0123, 0143, 0060, 0243, 0234, 0050, 0111, 0073, 0363, 0170, 0113, 
+  0156, 0356, 0104, 0163, 0320, 0330, 0355, 0312, 0330, 0331, 0121, 0071, 0374, 0254, 0101, 0170, 
+  0240, 0013, 0207, 0016, 0021, 0056, 0154, 0353, 0130, 0055, 0224, 0141, 0242, 0050, 0350, 0327, 
+  0303, 0263, 0334, 0332, 0331, 0025, 0303, 0112, 0171, 0106, 0317, 0274, 0002, 0107, 0351, 0204, 
+  0071, 0353, 0256, 0347, 0154, 0256, 0264, 0146, 0071, 0004, 0005, 0050, 0106, 0354, 0303, 0165, 
+  0060, 0302, 0146, 0000, 0315, 0322, 0332, 0132, 0060, 0030, 0065, 0314, 0232, 0300, 0061, 0214, 
+  0046, 0224, 0155, 0015, 0076, 0211, 0302, 0064, 0331, 0203, 0072, 0235, 0002, 0065, 0153, 0075, 
+  0201, 0073, 0054, 0267, 0104, 0175, 0270, 0024, 0041, 0355, 0371, 0121, 0357, 0260, 0072, 0300, 
+  0243, 0161, 0256, 0006, 0237, 0010, 0237, 0047, 0043, 0325, 0313, 0007, 0223, 0352, 0375, 0327, 
+  0272, 0177, 0370, 0320, 0375, 0031, 0322, 0362, 0357, 0117, 0345, 0243, 0077, 0161, 0140, 0124, 
+  0245, 0000, 0050, 0165, 0165, 0141, 0171, 0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 
+  0055, 0143, 0162, 0157, 0160, 0055, 0143, 0150, 0145, 0145, 0163, 0145, 0055, 0144, 0151, 0141, 
+  0154, 0157, 0147, 0056, 0165, 0151, 0000, 0000, 0066, 0015, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0325, 0127, 0315, 0162, 0323, 0060, 0020, 0276, 0367, 0051, 0074, 0272, 0062, 0156, 
+  0322, 0002, 0063, 0034, 0154, 0167, 0150, 0072, 0005, 0316, 0224, 0341, 0250, 0131, 0313, 0033, 
+  0113, 0130, 0221, 0214, 0044, 0067, 0315, 0215, 0247, 0341, 0301, 0170, 0022, 0326, 0316, 0137, 
+  0323, 0244, 0061, 0015, 0155, 0051, 0227, 0304, 0263, 0336, 0237, 0317, 0373, 0175, 0273, 0226, 
+  0223, 0263, 0233, 0211, 0216, 0256, 0321, 0171, 0145, 0115, 0312, 0116, 0216, 0207, 0054, 0102, 
+  0043, 0154, 0241, 0114, 0231, 0262, 0057, 0127, 0227, 0361, 0073, 0166, 0226, 0035, 0045, 0312, 
+  0004, 0164, 0143, 0020, 0230, 0045, 0016, 0277, 0067, 0312, 0241, 0217, 0264, 0312, 0123, 0126, 
+  0206, 0352, 0025, 0133, 0047, 0170, 0175, 0174, 0172, 0312, 0006, 0131, 0022, 0160, 0122, 0153, 
+  0010, 0030, 0011, 0015, 0336, 0247, 0154, 0144, 0115, 0000, 0021, 0374, 0310, 0331, 0172, 0044, 
+  0021, 0075, 0136, 0050, 0320, 0266, 0144, 0121, 0015, 0016, 0115, 0110, 0331, 0207, 0120, 0175, 
+  0125, 0246, 0260, 0123, 0226, 0045, 0065, 0171, 0241, 0013, 0263, 0310, 0300, 0004, 0123, 0046, 
+  0300, 0360, 0261, 0025, 0215, 0147, 0331, 0045, 0150, 0217, 0311, 0140, 0351, 0260, 0345, 0072, 
+  0261, 0005, 0150, 0226, 0135, 0271, 0146, 0237, 0127, 0201, 0143, 0150, 0164, 0340, 0123, 0125, 
+  0004, 0311, 0262, 0067, 0303, 0341, 0037, 0070, 0113, 0124, 0245, 0014, 0375, 0336, 0076, 0070, 
+  0073, 0243, 0324, 0101, 0362, 0371, 0263, 0365, 0302, 0361, 0225, 0252, 0171, 0000, 0137, 0345, 
+  0340, 0270, 0124, 0273, 0042, 0274, 0052, 0015, 0350, 0315, 0032, 0054, 0222, 0140, 0012, 0215, 
+  0056, 0145, 0326, 0360, 0225, 0321, 0117, 0241, 0256, 0261, 0110, 0231, 0261, 0055, 0023, 0102, 
+  0052, 0135, 0144, 0211, 0315, 0277, 0241, 0010, 0113, 0072, 0250, 0331, 0237, 0211, 0217, 0212, 
+  0105, 0212, 0034, 0175, 0167, 0271, 0005, 0353, 0132, 0171, 0225, 0153, 0354, 0205, 0277, 0217, 
+  0236, 0105, 0165, 0322, 0202, 0100, 0151, 0165, 0201, 0216, 0040, 0015, 0026, 0326, 0301, 0034, 
+  0324, 0332, 0320, 0375, 0105, 0141, 0126, 0123, 0326, 0240, 0202, 0106, 0152, 0010, 0333, 0201, 
+  0375, 0043, 0002, 0145, 0072, 0357, 0156, 0076, 0035, 0350, 0255, 0262, 0347, 0115, 0010, 0326, 
+  0154, 0327, 0324, 0220, 0243, 0146, 0121, 0160, 0140, 0074, 0211, 0036, 0250, 0176, 0312, 0146, 
+  0110, 0251, 0107, 0140, 0004, 0352, 0075, 0060, 0016, 0200, 0333, 0343, 0351, 0120, 0240, 0272, 
+  0106, 0317, 0027, 0272, 0355, 0321, 0222, 0320, 0112, 0124, 0130, 0154, 0152, 0111, 0164, 0260, 
+  0371, 0352, 0336, 0035, 0111, 0255, 0170, 0253, 0111, 0067, 0264, 0050, 0266, 0060, 0324, 0326, 
+  0253, 0240, 0332, 0126, 0235, 0334, 0056, 0074, 0130, 0371, 0157, 0020, 0276, 0137, 0234, 0262, 
+  0343, 0272, 0235, 0214, 0047, 0224, 0351, 0356, 0224, 0161, 0007, 0057, 0156, 0155, 0054, 0312, 
+  0151, 0071, 0305, 0336, 0066, 0116, 0340, 0162, 0142, 0346, 0266, 0145, 0354, 0316, 0260, 0075, 
+  0003, 0170, 0156, 0157, 0236, 0345, 0141, 0074, 0165, 0235, 0232, 0316, 0262, 0267, 0017, 0320, 
+  0170, 0327, 0372, 0000, 0025, 0162, 0060, 0066, 0110, 0164, 0074, 0177, 0260, 0370, 0257, 0050, 
+  0074, 0172, 0077, 0017, 0377, 0365, 0343, 0347, 0013, 0233, 0202, 0073, 0001, 0306, 0162, 0057, 
+  0355, 0224, 0203, 0326, 0207, 0114, 0314, 0106, 0253, 0016, 0236, 0033, 0274, 0251, 0051, 0147, 
+  0077, 0245, 0143, 0245, 0373, 0137, 0162, 0353, 0041, 0034, 0036, 0066, 0204, 0017, 0137, 0167, 
+  0027, 0326, 0340, 0177, 0267, 0354, 0012, 0002, 0175, 0057, 0145, 0076, 0314, 0064, 0235, 0171, 
+  0272, 0246, 0054, 0347, 0251, 0051, 0113, 0172, 0327, 0142, 0021, 0323, 0201, 0246, 0355, 0157, 
+  0313, 0354, 0302, 0357, 0137, 0061, 0334, 0263, 0146, 0173, 0141, 0165, 0273, 0052, 0023, 0144, 
+  0174, 0134, 0251, 0274, 0200, 0301, 0226, 0240, 0111, 0002, 0054, 0103, 0123, 0034, 0060, 0322, 
+  0265, 0022, 0367, 0152, 0343, 0276, 0146, 0174, 0232, 0100, 0211, 0317, 0262, 0332, 0225, 0040, 
+  0234, 0013, 0356, 0350, 0327, 0101, 0134, 0113, 0033, 0154, 0354, 0147, 0223, 0334, 0022, 0352, 
+  0015, 0062, 0357, 0036, 0266, 0036, 0133, 0332, 0013, 0034, 0335, 0341, 0376, 0131, 0104, 0333, 
+  0332, 0171, 0173, 0130, 0334, 0042, 0367, 0257, 0113, 0256, 0014, 0313, 0357, 0030, 0272, 0134, 
+  0177, 0002, 0035, 0375, 0006, 0230, 0371, 0324, 0370, 0000, 0050, 0165, 0165, 0141, 0171, 0051, 
+  0147, 0164, 0153, 0057, 0011, 0000, 0000, 0000, 0147, 0156, 0157, 0155, 0145, 0057, 0000, 0000, 
+  0016, 0000, 0000, 0000, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0143, 0157, 0156, 
+  0164, 0141, 0143, 0164, 0055, 0145, 0144, 0151, 0164, 0157, 0162, 0056, 0165, 0151, 0000, 0000, 
+  0164, 0014, 0000, 0000, 0001, 0000, 0000, 0000, 0170, 0332, 0265, 0227, 0137, 0157, 0332, 0060, 
+  0020, 0300, 0337, 0373, 0051, 0054, 0277, 0116, 0201, 0265, 0223, 0246, 0075, 0004, 0127, 0145, 
+  0033, 0333, 0244, 0266, 0017, 0123, 0253, 0075, 0106, 0216, 0175, 0005, 0017, 0307, 0316, 0354, 
+  0013, 0055, 0375, 0364, 0273, 0204, 0300, 0250, 0050, 0264, 0115, 0330, 0023, 0306, 0361, 0335, 
+  0375, 0356, 0237, 0057, 0111, 0317, 0037, 0012, 0313, 0026, 0020, 0242, 0361, 0156, 0304, 0117, 
+  0007, 0357, 0071, 0003, 0247, 0274, 0066, 0156, 0072, 0342, 0267, 0067, 0223, 0344, 0023, 0077, 
+  0027, 0047, 0251, 0161, 0010, 0341, 0116, 0052, 0020, 0151, 0200, 0077, 0225, 0011, 0020, 0231, 
+  0065, 0371, 0210, 0117, 0161, 0376, 0216, 0377, 0123, 0360, 0141, 0160, 0166, 0306, 0207, 0042, 
+  0055, 0300, 0125, 0314, 0350, 0021, 0007, 0155, 0060, 0121, 0336, 0241, 0124, 0230, 0324, 0273, 
+  0134, 0244, 0006, 0241, 0020, 0251, 0104, 0014, 0046, 0257, 0020, 0230, 0223, 0005, 0214, 0070, 
+  0035, 0040, 0025, 0134, 0324, 0022, 0003, 0251, 0365, 0000, 0012, 0151, 0154, 0102, 0053, 0062, 
+  0026, 0041, 0016, 0146, 0276, 0200, 0164, 0270, 0021, 0333, 0325, 0140, 0145, 0016, 0226, 0063, 
+  0014, 0322, 0105, 0053, 0121, 0346, 0226, 0066, 0227, 0020, 0271, 0370, 0116, 0242, 0254, 0321, 
+  0367, 0104, 0301, 0160, 0105, 0322, 0221, 0347, 0336, 0207, 0171, 0107, 0236, 0137, 0044, 0332, 
+  0233, 0247, 0234, 0171, 0007, 0211, 0253, 0212, 0234, 0242, 0077, 0120, 0140, 0155, 0107, 0232, 
+  0053, 0237, 0033, 0013, 0254, 0321, 0167, 0064, 0236, 0276, 0331, 0072, 0056, 0115, 0337, 0134, 
+  0365, 0245, 0251, 0202, 0215, 0135, 0355, 0103, 0036, 0311, 0112, 0017, 0343, 0316, 0250, 0171, 
+  0375, 0250, 0043, 0300, 0365, 0163, 0342, 0157, 0043, 0310, 0115, 0300, 0231, 0226, 0313, 0216, 
+  0004, 0343, 0347, 0304, 0337, 0130, 0016, 0076, 0242, 0074, 0346, 0155, 0322, 0152, 0072, 0046, 
+  0122, 0337, 0042, 0355, 0217, 0344, 0074, 0102, 0327, 0072, 0275, 0336, 0221, 0155, 0155, 0017, 
+  0353, 0153, 0137, 0244, 0264, 0056, 0111, 0002, 0230, 0262, 0062, 0306, 0021, 0377, 0274, 0032, 
+  0012, 0261, 0375, 0375, 0112, 0014, 0076, 0160, 0126, 0312, 0000, 0016, 0167, 0036, 0117, 0174, 
+  0050, 0150, 0164, 0224, 0301, 0227, 0020, 0160, 0331, 0322, 0054, 0114, 0064, 0104, 0300, 0305, 
+  0115, 0250, 0050, 0233, 0353, 0247, 0073, 0347, 0174, 0060, 0244, 0124, 0256, 0274, 0245, 0141, 
+  0205, 0106, 0111, 0273, 0175, 0136, 0315, 0214, 0325, 0042, 0365, 0371, 0157, 0120, 0270, 0046, 
+  0374, 0206, 0363, 0213, 0046, 0102, 0143, 0031, 0336, 0140, 0173, 0237, 0256, 0053, 0012, 0303, 
+  0270, 0102, 0044, 0206, 0146, 0064, 0122, 0300, 0063, 0015, 0110, 0103, 0040, 0313, 0127, 0333, 
+  0235, 0375, 0253, 0043, 0234, 0025, 0136, 0123, 0152, 0304, 0316, 0304, 0075, 0040, 0127, 0105, 
+  0310, 0112, 0137, 0172, 0012, 0311, 0213, 0066, 0064, 0015, 0375, 0266, 0136, 0252, 0362, 0065, 
+  0376, 0216, 0375, 0103, 0167, 0217, 0142, 0051, 0025, 0275, 0203, 0160, 0361, 0361, 0265, 0151, 
+  0235, 0321, 0277, 0307, 0332, 0355, 0127, 0045, 0366, 0262, 0251, 0343, 0316, 0170, 0007, 0332, 
+  0000, 0356, 0331, 0227, 0046, 0253, 0333, 0342, 0303, 0025, 0000, 0055, 0132, 0240, 0175, 0134, 
+  0077, 0012, 0071, 0205, 0356, 0134, 0112, 0272, 0354, 0316, 0253, 0212, 0100, 0046, 0322, 0306, 
+  0103, 0107, 0113, 0363, 0000, 0066, 0213, 0346, 0221, 0264, 0236, 0036, 0212, 0262, 0241, 0142, 
+  0312, 0352, 0045, 0027, 0123, 0237, 0150, 0177, 0357, 0222, 0270, 0054, 0162, 0157, 0215, 0072, 
+  0350, 0342, 0313, 0033, 0173, 0053, 0147, 0253, 0113, 0254, 0161, 0163, 0320, 0275, 0073, 0144, 
+  0177, 0302, 0056, 0033, 0003, 0354, 0102, 0051, 0137, 0071, 0214, 0235, 0262, 0266, 0015, 0034, 
+  0240, 0240, 0176, 0372, 0217, 0300, 0077, 0033, 0003, 0254, 0275, 0030, 0267, 0125, 0104, 0134, 
+  0132, 0272, 0167, 0033, 0256, 0165, 0327, 0102, 0304, 0120, 0121, 0337, 0056, 0040, 0151, 0257, 
+  0173, 0172, 0075, 0037, 0266, 0047, 0067, 0016, 0122, 0267, 0315, 0251, 0335, 0166, 0213, 0204, 
+  0366, 0063, 0134, 0226, 0304, 0013, 0116, 0077, 0211, 0315, 0106, 0144, 0177, 0276, 0327, 0127, 
+  0176, 0075, 0012, 0066, 0037, 0020, 0047, 0177, 0001, 0252, 0223, 0216, 0221, 0000, 0050, 0165, 
+  0165, 0141, 0171, 0051, 0150, 0145, 0154, 0160, 0055, 0157, 0166, 0145, 0162, 0154, 0141, 0171, 
+  0056, 0165, 0151, 0000, 0000, 0000, 0000, 0000, 0133, 0006, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0315, 0225, 0261, 0116, 0303, 0060, 0020, 0206, 0367, 0076, 0205, 0345, 0241, 0043, 
+  0045, 0163, 0223, 0164, 0100, 0152, 0331, 0000, 0145, 0140, 0104, 0127, 0347, 0112, 0014, 0216, 
+  0235, 0236, 0057, 0111, 0363, 0366, 0030, 0332, 0010, 0224, 0241, 0152, 0121, 0124, 0145, 0263, 
+  0316, 0377, 0375, 0167, 0337, 0331, 0262, 0343, 0325, 0241, 0064, 0242, 0101, 0362, 0332, 0331, 
+  0104, 0106, 0167, 0367, 0162, 0225, 0316, 0142, 0155, 0031, 0151, 0007, 0012, 0323, 0330, 0155, 
+  0077, 0120, 0261, 0120, 0006, 0274, 0117, 0344, 0206, 0077, 0263, 0302, 0021, 0253, 0232, 0375, 
+  0253, 0266, 0271, 0153, 0245, 0320, 0171, 0042, 0013, 0064, 0325, 0233, 0013, 0076, 0006, 0072, 
+  0231, 0306, 0252, 0320, 0046, 0077, 0227, 0233, 0205, 0170, 0250, 0030, 0244, 0025, 0271, 0012, 
+  0211, 0073, 0141, 0241, 0304, 0104, 0066, 0332, 0353, 0255, 0101, 0231, 0106, 0361, 0242, 0337, 
+  0272, 0300, 0157, 0103, 0256, 0256, 0056, 0165, 0033, 0210, 0130, 0163, 0220, 0010, 0046, 0260, 
+  0336, 0000, 0103, 0110, 0110, 0144, 0207, 0136, 0012, 0345, 0302, 0034, 0016, 0234, 0110, 0177, 
+  0252, 0043, 0332, 0043, 0163, 0372, 0024, 0120, 0033, 0215, 0355, 0125, 0115, 0366, 0213, 0177, 
+  0366, 0011, 0112, 0241, 0101, 0002, 0166, 0044, 0323, 0365, 0330, 0104, 0217, 0341, 0004, 0377, 
+  0132, 0056, 0216, 0034, 0141, 0161, 0342, 0272, 0051, 0336, 0334, 0360, 0362, 0231, 0164, 0011, 
+  0324, 0315, 0337, 0171, 0151, 0107, 0206, 0175, 0040, 0004, 0106, 0001, 0302, 0142, 0373, 0043, 
+  0003, 0305, 0223, 0205, 0337, 0211, 0101, 0300, 0217, 0074, 0215, 0014, 0201, 0124, 0061, 0131, 
+  0376, 0165, 0064, 0034, 0300, 0276, 0106, 0377, 0375, 0174, 0214, 0075, 0207, 0076, 0140, 0264, 
+  0237, 0356, 0165, 0330, 0217, 0114, 0375, 0122, 0353, 0363, 0260, 0327, 0004, 0176, 0077, 0216, 
+  0331, 0027, 0230, 0147, 0125, 0254, 0000, 0050, 0165, 0165, 0141, 0171, 0051, 0143, 0157, 0156, 
+  0164, 0141, 0143, 0164, 0163, 0055, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0055, 0146, 0157, 
+  0162, 0155, 0056, 0165, 0151, 0000, 0000, 0000, 0226, 0004, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0265, 0224, 0311, 0116, 0303, 0060, 0020, 0206, 0357, 0175, 0012, 0343, 0053, 0012, 
+  0335, 0244, 0212, 0103, 0342, 0112, 0040, 0265, 0047, 0116, 0024, 0161, 0214, 0246, 0316, 0220, 
+  0014, 0365, 0206, 0355, 0156, 0157, 0217, 0133, 0132, 0220, 0100, 0112, 0003, 0022, 0247, 0070, 
+  0316, 0347, 0331, 0376, 0077, 0316, 0247, 0073, 0255, 0330, 0006, 0175, 0040, 0153, 0012, 0076, 
+  0274, 0031, 0160, 0206, 0106, 0332, 0212, 0114, 0135, 0360, 0247, 0305, 0054, 0273, 0345, 0123, 
+  0321, 0313, 0311, 0104, 0364, 0057, 0040, 0121, 0344, 0127, 0131, 0306, 0076, 0137, 0063, 0217, 
+  0157, 0153, 0362, 0030, 0130, 0035, 0127, 0327, 0154, 0174, 0063, 0032, 0261, 0054, 0023, 0171, 
+  0104, 0355, 0024, 0104, 0144, 0122, 0101, 0010, 0005, 0277, 0267, 0046, 0202, 0214, 0341, 0364, 
+  0234, 0131, 0257, 0071, 0163, 0340, 0321, 0304, 0202, 0317, 0343, 0152, 0356, 0251, 0342, 0042, 
+  0167, 0336, 0072, 0364, 0161, 0317, 0014, 0150, 0054, 0370, 0206, 0002, 0055, 0025, 0162, 0261, 
+  0360, 0153, 0314, 0373, 0347, 0257, 0042, 0227, 0015, 0251, 0112, 0344, 0166, 0371, 0212, 0062, 
+  0236, 0163, 0244, 0060, 0217, 0322, 0133, 0245, 0260, 0172, 0046, 0123, 0331, 0055, 0147, 0124, 
+  0025, 0134, 0003, 0231, 0062, 0154, 0177, 0021, 0375, 0033, 0327, 0340, 0316, 0201, 0251, 0056, 
+  0162, 0233, 0216, 0134, 0150, 0040, 0025, 0127, 0306, 0275, 0113, 0271, 0215, 0065, 0255, 0271, 
+  0303, 0261, 0243, 0045, 0370, 0322, 0131, 0105, 0162, 0237, 0116, 0140, 0222, 0253, 0255, 0214, 
+  0237, 0107, 0140, 0035, 0255, 0206, 0110, 0362, 0342, 0014, 0317, 0072, 0075, 0300, 0356, 0231, 
+  0252, 0330, 0334, 0221, 0371, 0373, 0340, 0064, 0354, 0312, 0355, 0041, 0012, 0027, 0223, 0301, 
+  0240, 0255, 0113, 0120, 0124, 0247, 0104, 0022, 0017, 0276, 0352, 0042, 0364, 0321, 0057, 0107, 
+  0171, 0345, 0241, 0142, 0062, 0350, 0313, 0372, 0167, 0036, 0372, 0147, 0225, 0255, 0247, 0324, 
+  0115, 0032, 0272, 0115, 0215, 0045, 0305, 0322, 0364, 0101, 0265, 0360, 0076, 0131, 0042, 0070, 
+  0220, 0351, 0307, 0343, 0142, 0070, 0152, 0041, 0245, 0125, 0153, 0155, 0072, 0302, 0032, 0174, 
+  0175, 0320, 0260, 0003, 0124, 0106, 0353, 0270, 0030, 0117, 0056, 0203, 0113, 0033, 0223, 0241, 
+  0276, 0263, 0375, 0017, 0225, 0322, 0342, 0244, 0132, 0207, 0215, 0363, 0075, 0221, 0226, 0137, 
+  0127, 0114, 0357, 0035, 0352, 0222, 0255, 0073, 0000, 0050, 0165, 0165, 0141, 0171, 0051, 0143, 
+  0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0141, 0143, 0143, 0157, 0165, 0156, 0164, 0163, 
+  0055, 0154, 0151, 0163, 0164, 0056, 0165, 0151, 0045, 0001, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0145, 0217, 0061, 0157, 0002, 0061, 0014, 0205, 0167, 0176, 0105, 0352, 0025, 0205, 
+  0153, 0351, 0322, 0041, 0011, 0242, 0225, 0312, 0302, 0110, 0347, 0052, 0015, 0006, 0105, 0344, 
+  0234, 0253, 0355, 0103, 0360, 0357, 0111, 0053, 0150, 0125, 0165, 0262, 0375, 0336, 0263, 0364, 
+  0075, 0267, 0070, 0365, 0305, 0034, 0221, 0045, 0127, 0362, 0360, 0060, 0273, 0007, 0203, 0224, 
+  0352, 0066, 0323, 0336, 0303, 0333, 0346, 0325, 0076, 0301, 0042, 0114, 0134, 0046, 0105, 0336, 
+  0305, 0204, 0301, 0335, 0131, 0153, 0176, 0116, 0313, 0370, 0071, 0146, 0106, 0061, 0173, 0075, 
+  0114, 0315, 0343, 0154, 0076, 0067, 0326, 0006, 0247, 0330, 0017, 0045, 0052, 0232, 0124, 0242, 
+  0210, 0207, 0227, 0112, 0032, 0223, 0312, 0062, 0245, 0072, 0222, 0312, 0072, 0213, 0202, 0031, 
+  0042, 0043, 0251, 0207, 0225, 0036, 0276, 0204, 0347, 0172, 0202, 0340, 0006, 0256, 0003, 0262, 
+  0236, 0015, 0305, 0036, 0075, 0034, 0263, 0344, 0217, 0202, 0020, 0066, 0074, 0242, 0353, 0156, 
+  0356, 0277, 0234, 0140, 0301, 0244, 0255, 0305, 0173, 0137, 0267, 0055, 0116, 0225, 0376, 0304, 
+  0105, 0317, 0245, 0321, 0177, 0363, 0134, 0137, 0166, 0334, 0006, 0164, 0301, 0165, 0127, 0263, 
+  0273, 0141, 0267, 0365, 0267, 0361, 0344, 0002, 0261, 0337, 0146, 0342, 0000, 0050, 0165, 0165, 
+  0141, 0171, 0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0154, 0151, 0163, 0164, 
+  0055, 0160, 0141, 0156, 0145, 0056, 0165, 0151, 0331, 0013, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0325, 0126, 0115, 0157, 0023, 0061, 0020, 0275, 0363, 0053, 0214, 0257, 0260, 0315, 
+  0227, 0012, 0250, 0112, 0266, 0152, 0021, 0355, 0245, 0007, 0004, 0105, 0034, 0055, 0307, 0236, 
+  0335, 0065, 0361, 0332, 0213, 0075, 0111, 0232, 0177, 0317, 0354, 0346, 0243, 0011, 0151, 0066, 
+  0001, 0251, 0025, 0110, 0221, 0022, 0073, 0157, 0146, 0075, 0363, 0336, 0074, 0357, 0360, 0362, 
+  0241, 0264, 0154, 0006, 0041, 0032, 0357, 0106, 0274, 0167, 0326, 0345, 0014, 0234, 0362, 0332, 
+  0270, 0174, 0304, 0277, 0335, 0337, 0044, 0037, 0370, 0145, 0372, 0152, 0370, 0072, 0111, 0330, 
+  0055, 0070, 0010, 0022, 0101, 0263, 0271, 0301, 0202, 0345, 0126, 0152, 0140, 0203, 0263, 0336, 
+  0371, 0131, 0237, 0171, 0307, 0356, 0213, 0051, 0273, 0232, 0346, 0254, 0167, 0116, 0237, 0213, 
+  0301, 0340, 0242, 0333, 0147, 0375, 0156, 0157, 0300, 0222, 0204, 0022, 0030, 0207, 0020, 0062, 
+  0251, 0040, 0155, 0162, 0155, 0226, 0111, 0200, 0237, 0123, 0023, 0040, 0262, 0034, 0047, 0157, 
+  0352, 0164, 0335, 0072, 0140, 0210, 0120, 0126, 0226, 0036, 0306, 0224, 0225, 0061, 0216, 0370, 
+  0107, 0357, 0120, 0052, 0214, 0167, 0046, 0342, 0147, 0351, 0200, 0263, 0112, 0006, 0160, 0070, 
+  0342, 0267, 0070, 0271, 0011, 0262, 0004, 0236, 0016, 0253, 0340, 0053, 0010, 0270, 0140, 0216, 
+  0326, 0043, 0256, 0244, 0023, 0231, 0127, 0323, 0310, 0323, 0033, 0151, 0043, 0014, 0073, 0153, 
+  0300, 0036, 0264, 0200, 0207, 0112, 0072, 0175, 0062, 0120, 0104, 0100, 0236, 0336, 0207, 0151, 
+  0033, 0066, 0026, 0122, 0373, 0271, 0300, 0105, 0105, 0207, 0163, 0336, 0355, 0140, 0125, 0141, 
+  0254, 0116, 0207, 0176, 0374, 0003, 0024, 0256, 0253, 0244, 0132, 0156, 0203, 0321, 0373, 0245, 
+  0370, 0140, 0250, 0130, 0211, 0304, 0022, 0117, 0211, 0056, 0064, 0112, 0332, 0226, 0107, 0317, 
+  0114, 0064, 0143, 0013, 0373, 0107, 0074, 0364, 0330, 0257, 0040, 0203, 0052, 0076, 0071, 0014, 
+  0013, 0316, 0214, 0036, 0361, 0314, 0130, 0242, 0110, 0100, 0263, 0163, 0172, 0376, 0303, 0024, 
+  0034, 0101, 0126, 0301, 0224, 0062, 0054, 0204, 0121, 0336, 0011, 0327, 0360, 0011, 0332, 0140, 
+  0222, 0031, 0247, 0223, 0270, 0050, 0307, 0336, 0032, 0165, 0152, 0074, 0051, 0305, 0314, 0044, 
+  0312, 0346, 0210, 0307, 0050, 0335, 0211, 0214, 0340, 0242, 0241, 0340, 0023, 0342, 0050, 0050, 
+  0067, 0104, 0307, 0273, 0266, 0334, 0226, 0064, 0136, 0170, 0253, 0251, 0225, 0010, 0017, 0310, 
+  0031, 0006, 0351, 0242, 0135, 0236, 0155, 0304, 0027, 0120, 0167, 0206, 0004, 0302, 0320, 0263, 
+  0330, 0160, 0260, 0235, 0055, 0232, 0334, 0111, 0273, 0226, 0123, 0363, 0267, 0120, 0205, 0164, 
+  0071, 0150, 0316, 0350, 0133, 0133, 0010, 0273, 0124, 0075, 0376, 0275, 0244, 0370, 0251, 0311, 
+  0221, 0031, 0326, 0141, 0316, 0163, 0026, 0347, 0262, 0252, 0100, 0067, 0213, 0116, 0072, 0354, 
+  0054, 0203, 0250, 0014, 0251, 0046, 0144, 0001, 0173, 0365, 0130, 0310, 0120, 0110, 0244, 0204, 
+  0005, 0117, 0273, 0055, 0205, 0243, 0257, 0236, 0306, 0165, 0066, 0251, 0073, 0053, 0055, 0036, 
+  0224, 0244, 0012, 0336, 0132, 0320, 0337, 0111, 0001, 0176, 0276, 0124, 0245, 0132, 0025, 0043, 
+  0054, 0125, 0043, 0232, 0225, 0041, 0127, 0172, 0011, 0201, 0156, 0054, 0342, 0010, 0156, 0166, 
+  0042, 0256, 0210, 0115, 0175, 0143, 0031, 0104, 0125, 0153, 0233, 0246, 0314, 0001, 0215, 0166, 
+  0113, 0210, 0363, 0042, 0026, 0344, 0050, 0322, 0332, 0375, 0364, 0317, 0303, 0135, 0257, 0005, 
+  0067, 0067, 0032, 0217, 0100, 0012, 0060, 0171, 0201, 0277, 0141, 0116, 0227, 0300, 0225, 0252, 
+  0035, 0357, 0132, 0206, 0045, 0373, 0262, 0131, 0106, 0101, 0075, 0153, 0141, 0174, 0157, 0156, 
+  0017, 0145, 0277, 0236, 0042, 0222, 0237, 0066, 0251, 0255, 0161, 0023, 0061, 0136, 0156, 0274, 
+  0200, 0230, 0032, 0224, 0040, 0277, 0121, 0304, 0374, 0344, 0270, 0327, 0130, 0071, 0006, 0373, 
+  0224, 0171, 0060, 0345, 0313, 0222, 0046, 0237, 0052, 0272, 0243, 0022, 0130, 0200, 0214, 0056, 
+  0363, 0332, 0115, 0260, 0200, 0372, 0142, 0037, 0277, 0145, 0131, 0360, 0045, 0253, 0013, 0244, 
+  0236, 0263, 0365, 0004, 0021, 0044, 0007, 0302, 0120, 0047, 0353, 0300, 0143, 0064, 0213, 0372, 
+  0236, 0206, 0110, 0124, 0276, 0157, 0223, 0116, 0233, 0175, 0356, 0230, 0131, 0123, 0367, 0216, 
+  0213, 0121, 0063, 0266, 0110, 0020, 0153, 0300, 0051, 0256, 0124, 0357, 0257, 0256, 0331, 0210, 
+  0062, 0340, 0337, 0211, 0155, 0133, 0016, 0032, 0054, 0040, 0374, 0217, 0202, 0110, 0277, 0100, 
+  0351, 0147, 0360, 0117, 0360, 0271, 0323, 0305, 0155, 0106, 0043, 0056, 0054, 0275, 0011, 0066, 
+  0275, 0137, 0045, 0320, 0164, 0230, 0060, 0255, 0357, 0155, 0110, 0226, 0163, 0336, 0120, 0277, 
+  0102, 0376, 0211, 0004, 0300, 0351, 0166, 0001, 0074, 0217, 0123, 0366, 0137, 0304, 0051, 0067, 
+  0147, 0337, 0154, 0254, 0337, 0224, 0351, 0347, 0343, 0113, 0366, 0253, 0137, 0301, 0233, 0125, 
+  0064, 0000, 0050, 0165, 0165, 0141, 0171, 0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 
+  0055, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0055, 0160, 0141, 0156, 0145, 0056, 0165, 0151, 
+  0265, 0006, 0000, 0000, 0001, 0000, 0000, 0000, 0170, 0332, 0275, 0225, 0117, 0157, 0324, 0060, 
+  0020, 0305, 0357, 0375, 0024, 0326, 0134, 0121, 0232, 0224, 0126, 0300, 0041, 0161, 0045, 0220, 
+  0250, 0220, 0070, 0040, 0265, 0234, 0243, 0211, 0075, 0315, 0232, 0070, 0166, 0260, 0147, 0377, 
+  0361, 0351, 0361, 0146, 0263, 0155, 0241, 0352, 0166, 0051, 0013, 0247, 0130, 0316, 0233, 0314, 
+  0363, 0317, 0317, 0116, 0171, 0271, 0352, 0255, 0130, 0120, 0210, 0306, 0273, 0012, 0316, 0116, 
+  0013, 0020, 0344, 0224, 0327, 0306, 0265, 0025, 0174, 0275, 0371, 0230, 0275, 0203, 0113, 0171, 
+  0122, 0032, 0307, 0024, 0156, 0121, 0221, 0054, 0003, 0175, 0237, 0233, 0100, 0121, 0130, 0323, 
+  0124, 0320, 0162, 0367, 0012, 0356, 0077, 0160, 0176, 0372, 0272, 0200, 0134, 0226, 0114, 0375, 
+  0140, 0221, 0111, 0050, 0213, 0061, 0126, 0360, 0301, 0073, 0106, 0305, 0161, 0172, 0176, 0101, 
+  0107, 0040, 0006, 0014, 0344, 0270, 0202, 0053, 0356, 0256, 0323, 0154, 0007, 0262, 0034, 0202, 
+  0037, 0050, 0360, 0132, 0070, 0354, 0251, 0202, 0205, 0211, 0246, 0261, 0004, 0362, 0046, 0314, 
+  0251, 0314, 0167, 0157, 0237, 0322, 0145, 0152, 0146, 0254, 0006, 0351, 0274, 0243, 0072, 0222, 
+  0045, 0305, 0244, 0353, 0001, 0333, 0137, 0152, 0107, 0221, 0054, 0175, 0363, 0055, 0275, 0337, 
+  0031, 0114, 0036, 0256, 0202, 0321, 0040, 0214, 0256, 0340, 0161, 0375, 0313, 0255, 0055, 0215, 
+  0346, 0131, 0275, 0201, 0106, 0221, 0101, 0236, 0027, 0305, 0036, 0261, 0017, 0046, 0021, 0101, 
+  0116, 0054, 0101, 0046, 0250, 0154, 0024, 0332, 0075, 0372, 0031, 0255, 0006, 0164, 0372, 0171, 
+  0076, 0007, 0352, 0202, 0137, 0326, 0161, 0100, 0225, 0166, 0037, 0344, 0233, 0103, 0240, 0175, 
+  0352, 0377, 0212, 0216, 0121, 0336, 0325, 0233, 0041, 0110, 0134, 0040, 0143, 0310, 0064, 0335, 
+  0342, 0334, 0162, 0026, 0327, 0175, 0343, 0255, 0121, 0107, 0130, 0325, 0002, 0255, 0151, 0023, 
+  0120, 0162, 0172, 0217, 0152, 0060, 0053, 0262, 0165, 0064, 0077, 0222, 0227, 0263, 0213, 0213, 
+  0207, 0312, 0310, 0153, 0233, 0222, 0077, 0256, 0172, 0122, 0253, 0051, 0320, 0331, 0062, 0245, 
+  0074, 0364, 0030, 0272, 0115, 0354, 0363, 0111, 0231, 0157, 0071, 0245, 0301, 0304, 0355, 0051, 
+  0174, 0237, 0261, 0041, 0373, 0162, 0174, 0166, 0054, 0027, 0034, 0320, 0305, 0164, 0334, 0060, 
+  0325, 0124, 0260, 0246, 0010, 0362, 0172, 0114, 0257, 0100, 0061, 0031, 0375, 0217, 0041, 0332, 
+  0341, 0216, 0151, 0073, 0367, 0365, 0115, 0320, 0132, 0343, 0352, 0306, 0063, 0373, 0036, 0344, 
+  0333, 0342, 0270, 0310, 0357, 0046, 0122, 0236, 0273, 0024, 0350, 0107, 0375, 0267, 0261, 0333, 
+  0234, 0365, 0154, 0167, 0326, 0263, 0337, 0357, 0212, 0374, 0256, 0370, 0271, 0235, 0174, 0357, 
+  0127, 0333, 0313, 0143, 0262, 0131, 0307, 0031, 0021, 0377, 0351, 0345, 0161, 0240, 0351, 0251, 
+  0107, 0066, 0366, 0070, 0246, 0151, 0322, 0206, 0175, 0370, 0307, 0256, 0267, 0115, 0016, 0260, 
+  0235, 0357, 0176, 0043, 0151, 0170, 0377, 0007, 0072, 0371, 0011, 0375, 0121, 0163, 0311, 0000, 
+  0050, 0165, 0165, 0141, 0171, 0051, 0103, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0057, 0000, 
+  0006, 0000, 0000, 0000, 0023, 0000, 0000, 0000, 0157, 0162, 0147, 0057, 0007, 0000, 0000, 0000, 
+  0163, 0164, 0171, 0154, 0145, 0056, 0143, 0163, 0163, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 
+  0254, 0004, 0000, 0000, 0001, 0000, 0000, 0000, 0170, 0332, 0215, 0223, 0115, 0157, 0333, 0060, 
+  0014, 0206, 0357, 0376, 0025, 0104, 0201, 0141, 0111, 0120, 0071, 0336, 0220, 0000, 0235, 0163, 
+  0351, 0060, 0154, 0075, 0155, 0073, 0264, 0367, 0102, 0261, 0150, 0133, 0253, 0054, 0011, 0022, 
+  0023, 0047, 0053, 0366, 0337, 0047, 0371, 0043, 0131, 0123, 0143, 0250, 0003, 0073, 0011, 0145, 
+  0075, 0057, 0371, 0222, 0132, 0056, 0022, 0130, 0300, 0335, 0217, 0237, 0337, 0277, 0302, 0027, 
+  0243, 0211, 0027, 0344, 0103, 0144, 0231, 0044, 0151, 0061, 0374, 0145, 0015, 0267, 0360, 0234, 
+  0100, 0270, 0266, 0274, 0170, 0252, 0234, 0331, 0151, 0301, 0012, 0243, 0214, 0313, 0341, 0226, 
+  0152, 0154, 0360, 0161, 0133, 0075, 0166, 0201, 0115, 0362, 0047, 0111, 0226, 0013, 0170, 0250, 
+  0021, 0306, 0375, 0040, 0065, 0204, 0267, 0100, 0141, 0111, 0140, 0271, 0306, 0210, 0077, 0323, 
+  0207, 0037, 0114, 0111, 0117, 0235, 0314, 0153, 0021, 0162, 0134, 0173, 0313, 0035, 0152, 0032, 
+  0005, 0076, 0203, 0227, 0272, 0122, 0010, 0316, 0264, 0243, 0300, 0100, 0202, 0216, 0064, 0012, 
+  0205, 0365, 0121, 0213, 0011, 0116, 0234, 0305, 0015, 0317, 0003, 0345, 0236, 0216, 0012, 0075, 
+  0224, 0306, 0001, 0077, 0225, 0077, 0174, 0177, 0063, 0256, 0231, 0316, 0264, 0214, 0053, 0323, 
+  0231, 0066, 0362, 0060, 0273, 0260, 0344, 0372, 0344, 0021, 0367, 0070, 0206, 0262, 0164, 0065, 
+  0357, 0112, 0071, 0323, 0375, 0256, 0252, 0320, 0223, 0064, 0272, 0147, 0033, 0047, 0320, 0061, 
+  0062, 0066, 0207, 0017, 0366, 0000, 0336, 0050, 0051, 0340, 0266, 0017, 0373, 0315, 0244, 0272, 
+  0257, 0271, 0300, 0327, 0372, 0131, 0372, 0151, 0076, 0372, 0166, 0047, 0367, 0330, 0231, 0305, 
+  0367, 0301, 0014, 0067, 0132, 0067, 0324, 0174, 0137, 0043, 0122, 0220, 0152, 0020, 0032, 0356, 
+  0052, 0251, 0257, 0343, 0164, 0170, 0003, 0222, 0100, 0030, 0364, 0372, 0075, 0301, 0257, 0135, 
+  0143, 0241, 0255, 0121, 0203, 0157, 0045, 0025, 0165, 0150, 0003, 0220, 0351, 0050, 0050, 0044, 
+  0031, 0227, 0116, 0273, 0346, 0073, 0366, 0071, 0076, 0044, 0020, 0153, 0355, 0265, 0162, 0130, 
+  0205, 0072, 0157, 0354, 0341, 0302, 0030, 0153, 0074, 0161, 0305, 0102, 0363, 0335, 0061, 0276, 
+  0076, 0070, 0343, 0270, 0220, 0073, 0237, 0103, 0326, 0177, 0066, 0247, 0205, 0126, 0012, 0252, 
+  0173, 0323, 0342, 0235, 0305, 0347, 0177, 0220, 0271, 0246, 0232, 0205, 0062, 0224, 0230, 0225, 
+  0322, 0171, 0232, 0117, 0150, 0304, 0304, 0126, 0035, 0053, 0173, 0033, 0111, 0361, 0151, 0120, 
+  0114, 0165, 0200, 0115, 0045, 0374, 0357, 0361, 0361, 0161, 0066, 0273, 0321, 0214, 0326, 0236, 
+  0233, 0015, 0127, 0055, 0047, 0164, 0301, 0263, 0247, 0053, 0220, 0015, 0257, 0102, 0057, 0103, 
+  0224, 0360, 0100, 0151, 0354, 0326, 0254, 0060, 0126, 0242, 0200, 0322, 0231, 0006, 0204, 0154, 
+  0230, 0342, 0133, 0124, 0363, 0227, 0115, 0071, 0041, 0072, 0377, 0215, 0345, 0205, 0244, 0143, 
+  0110, 0057, 0135, 0257, 0343, 0150, 0105, 0030, 0213, 0323, 0144, 0332, 0034, 0264, 0321, 0170, 
+  0121, 0165, 0337, 0273, 0120, 0274, 0065, 0173, 0164, 0160, 0076, 0140, 0322, 0133, 0305, 0217, 
+  0114, 0363, 0060, 0101, 0221, 0134, 0206, 0005, 0346, 0345, 0157, 0314, 0341, 0143, 0066, 0266, 
+  0141, 0330, 0275, 0335, 0021, 0275, 0034, 0366, 0321, 0245, 0165, 0366, 0056, 0146, 0141, 0271, 
+  0020, 0141, 0272, 0362, 0321, 0366, 0277, 0017, 0126, 0216, 0312, 0000, 0050, 0165, 0165, 0141, 
+  0171, 0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0154, 0151, 0156, 0153, 0055, 
+  0163, 0165, 0147, 0147, 0145, 0163, 0164, 0151, 0157, 0156, 0055, 0147, 0162, 0151, 0144, 0056, 
+  0165, 0151, 0000, 0000, 0000, 0000, 0000, 0000, 0350, 0011, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0265, 0126, 0313, 0156, 0333, 0060, 0020, 0274, 0347, 0053, 0130, 0136, 0013, 0105, 
+  0261, 0013, 0024, 0075, 0110, 0012, 0220, 0002, 0011, 0012, 0344, 0226, 0364, 0054, 0254, 0250, 
+  0265, 0304, 0232, 0042, 0125, 0162, 0235, 0330, 0375, 0372, 0256, 0374, 0252, 0223, 0070, 0262, 
+  0352, 0126, 0067, 0221, 0032, 0356, 0153, 0226, 0263, 0114, 0256, 0227, 0215, 0021, 0117, 0350, 
+  0203, 0166, 0066, 0225, 0223, 0313, 0053, 0051, 0320, 0052, 0127, 0152, 0133, 0245, 0362, 0373, 
+  0343, 0155, 0364, 0105, 0136, 0147, 0027, 0211, 0266, 0204, 0176, 0006, 0012, 0263, 0344, 0103, 
+  0024, 0211, 0375, 0062, 0362, 0370, 0163, 0241, 0075, 0006, 0121, 0321, 0374, 0243, 0370, 0164, 
+  0071, 0235, 0212, 0050, 0312, 0022, 0302, 0246, 0065, 0100, 0050, 0224, 0201, 0020, 0122, 0371, 
+  0325, 0131, 0002, 0105, 0341, 0136, 0333, 0371, 0303, 0242, 0252, 0060, 0020, 0073, 0274, 0363, 
+  0272, 0224, 0242, 0005, 0217, 0226, 0122, 0171, 0107, 0363, 0365, 0106, 0226, 0264, 0336, 0265, 
+  0350, 0151, 0045, 0054, 0064, 0230, 0112, 0347, 0065, 0003, 0240, 0073, 0041, 0263, 0232, 0127, 
+  0277, 0072, 0153, 0046, 0211, 0167, 0270, 0067, 0047, 0236, 0164, 0320, 0205, 0101, 0231, 0075, 
+  0372, 0005, 0366, 0341, 0300, 0350, 0212, 0215, 0242, 0055, 0173, 0120, 0312, 0231, 0105, 0143, 
+  0363, 0320, 0202, 0342, 0262, 0310, 0354, 0363, 0041, 0126, 0325, 0332, 0224, 0131, 0342, 0212, 
+  0037, 0250, 0150, 0227, 0056, 0247, 0162, 0017, 0005, 0032, 0051, 0164, 0231, 0312, 0022, 0203, 
+  0362, 0272, 0355, 0342, 0317, 0315, 0172, 0173, 0344, 0200, 0353, 0055, 0052, 0020, 0170, 0352, 
+  0303, 0341, 0262, 0005, 0133, 0236, 0364, 0332, 0200, 0257, 0264, 0315, 0311, 0265, 0062, 0233, 
+  0114, 0173, 0200, 0317, 0036, 0332, 0223, 0326, 0072, 0120, 0336, 0270, 0222, 0263, 0175, 0166, 
+  0276, 0214, 0124, 0015, 0376, 0020, 0036, 0157, 0152, 0311, 0347, 0100, 0315, 0271, 0340, 0157, 
+  0014, 0030, 0234, 0121, 0016, 0304, 0015, 0125, 0163, 0074, 0075, 0236, 0070, 0340, 0075, 0356, 
+  0252, 0267, 0016, 0272, 0252, 0351, 0225, 0255, 0170, 0357, 0076, 0336, 0162, 0074, 0200, 0152, 
+  0134, 0222, 0207, 0134, 0333, 0231, 0073, 0311, 0364, 0055, 0230, 0060, 0204, 0352, 0223, 0044, 
+  0216, 0103, 0166, 0341, 0210, 0134, 0363, 0232, 0357, 0100, 0053, 0303, 0032, 0260, 0316, 0175, 
+  0213, 0057, 0165, 0023, 0155, 0162, 0215, 0271, 0124, 0133, 0300, 0070, 0034, 0116, 0306, 0343, 
+  0360, 0306, 0055, 0377, 0375, 0126, 0052, 0354, 0164, 0261, 0007, 0370, 0367, 0112, 0166, 0134, 
+  0164, 0316, 0275, 0237, 0275, 0334, 0036, 0307, 0256, 0333, 0152, 0220, 0173, 0354, 0232, 0153, 
+  0220, 0066, 0336, 0054, 0330, 0277, 0335, 0334, 0030, 0120, 0012, 0133, 0312, 0213, 0315, 0326, 
+  0370, 0024, 0154, 0132, 0125, 0360, 0065, 0265, 0201, 0047, 0024, 0260, 0361, 0124, 0256, 0060, 
+  0310, 0254, 0233, 0115, 0142, 0067, 0250, 0316, 0111, 0167, 0337, 0364, 0247, 0232, 0355, 0001, 
+  0171, 0346, 0001, 0071, 0177, 0176, 0276, 0057, 0072, 0211, 0347, 0067, 0151, 0365, 0262, 0217, 
+  0006, 0007, 0163, 0110, 0206, 0307, 0356, 0347, 0210, 0144, 0034, 0321, 0217, 0031, 0263, 0160, 
+  0050, 0035, 0357, 0305, 0371, 0255, 0201, 0012, 0317, 0217, 0111, 0053, 0236, 0276, 0335, 0047, 
+  0117, 0035, 0155, 0113, 0367, 0034, 0051, 0343, 0002, 0106, 0141, 0325, 0024, 0316, 0150, 0325, 
+  0133, 0273, 0367, 0067, 0006, 0351, 0333, 0364, 0077, 0316, 0250, 0151, 0277, 0276, 0305, 0273, 
+  0227, 0027, 0177, 0376, 0171, 0264, 0135, 0374, 0006, 0115, 0255, 0240, 0357, 0000, 0050, 0165, 
+  0165, 0141, 0171, 0051, 0143, 0157, 0156, 0164, 0141, 0143, 0164, 0163, 0055, 0167, 0151, 0156, 
+  0144, 0157, 0167, 0056, 0165, 0151, 0000, 0000, 0221, 0062, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0355, 0133, 0301, 0162, 0333, 0066, 0020, 0275, 0347, 0053, 0130, 0036, 0162, 0351, 
+  0300, 0262, 0223, 0151, 0233, 0161, 0154, 0145, 0354, 0264, 0111, 0072, 0115, 0047, 0235, 0332, 
+  0235, 0036, 0071, 0040, 0271, 0242, 0120, 0101, 0000, 0013, 0200, 0222, 0225, 0351, 0241, 0247, 
+  0376, 0102, 0377, 0240, 0037, 0226, 0057, 0351, 0002, 0044, 0145, 0212, 0042, 0051, 0112, 0262, 
+  0345, 0270, 0323, 0233, 0110, 0054, 0026, 0213, 0207, 0335, 0305, 0303, 0202, 0072, 0173, 0165, 
+  0063, 0345, 0336, 0014, 0224, 0146, 0122, 0234, 0373, 0047, 0107, 0307, 0276, 0007, 0042, 0222, 
+  0061, 0023, 0311, 0271, 0377, 0313, 0365, 0033, 0362, 0302, 0177, 0065, 0174, 0162, 0306, 0204, 
+  0001, 0065, 0242, 0021, 0014, 0317, 0276, 0040, 0304, 0133, 0076, 0022, 0005, 0277, 0147, 0114, 
+  0201, 0366, 0022, 0063, 0371, 0322, 0173, 0176, 0364, 0354, 0231, 0107, 0310, 0360, 0114, 0206, 
+  0277, 0101, 0144, 0274, 0210, 0123, 0255, 0317, 0375, 0267, 0146, 0362, 0223, 0114, 0045, 0016, 
+  0343, 0173, 0054, 0076, 0367, 0307, 0164, 0032, 0146, 0052, 0001, 0025, 0114, 0101, 0144, 0101, 
+  0132, 0264, 0015, 0317, 0242, 0061, 0343, 0161, 0103, 0357, 0113, 0171, 0323, 0330, 0063, 0304, 
+  0367, 0303, 0263, 0124, 0311, 0024, 0224, 0131, 0170, 0202, 0116, 0341, 0334, 0237, 0061, 0315, 
+  0102, 0016, 0376, 0360, 0132, 0145, 0160, 0066, 0050, 0133, 0327, 0344, 0246, 0124, 0045, 0114, 
+  0370, 0303, 0223, 0147, 0035, 0102, 0122, 0061, 0020, 0206, 0032, 0204, 0307, 0037, 0242, 0221, 
+  0206, 0105, 0224, 0127, 0345, 0333, 0114, 0176, 0117, 0103, 0340, 0373, 0033, 0367, 0125, 0207, 
+  0314, 0230, 0162, 0226, 0240, 0214, 0066, 0124, 0231, 0016, 0071, 0356, 0114, 0361, 0214, 0242, 
+  0102, 0163, 0152, 0050, 0216, 0177, 0356, 0057, 0100, 0373, 0303, 0367, 0114, 0243, 0315, 0022, 
+  0047, 0030, 0031, 0355, 0205, 0213, 0323, 0252, 0026, 0152, 0214, 0142, 0141, 0146, 0100, 0127, 
+  0176, 0027, 0052, 0347, 0300, 0222, 0261, 0361, 0275, 0031, 0345, 0031, 0076, 0206, 0222, 0307, 
+  0376, 0140, 0135, 0114, 0043, 0130, 0260, 0224, 0072, 0076, 0172, 0141, 0205, 0006, 0125, 0305, 
+  0332, 0054, 0070, 0072, 0225, 0303, 0255, 0350, 0024, 0263, 0051, 0311, 0115, 0266, 0302, 0205, 
+  0300, 0040, 0007, 0030, 0177, 0024, 0200, 0267, 0341, 0376, 0243, 0214, 0201, 0137, 0146, 0306, 
+  0340, 0202, 0071, 0227, 0321, 0122, 0231, 0100, 0212, 0140, 0304, 0224, 0066, 0166, 0204, 0040, 
+  0314, 0133, 0167, 0136, 0033, 0003, 0067, 0246, 0021, 0316, 0067, 0166, 0010, 0047, 0324, 0321, 
+  0133, 0111, 0073, 0204, 0242, 0061, 0223, 0125, 0251, 0375, 0047, 0250, 0063, 0165, 0277, 0323, 
+  0273, 0312, 0007, 0270, 0307, 0271, 0135, 0101, 0112, 0025, 0065, 0122, 0371, 0055, 0001, 0101, 
+  0214, 0114, 0375, 0341, 0327, 0033, 0003, 0207, 0204, 0022, 0101, 0230, 0166, 0213, 0266, 0002, 
+  0262, 0323, 0132, 0254, 0251, 0217, 0050, 0072, 0235, 0214, 0062, 0275, 0073, 0342, 0257, 0307, 
+  0124, 0044, 0340, 0135, 0304, 0061, 0246, 0130, 0355, 0135, 0112, 0071, 0371, 0364, 0347, 0077, 
+  0035, 0232, 0060, 0216, 0061, 0123, 0021, 0373, 0340, 0017, 0151, 0232, 0036, 0105, 0116, 0003, 
+  0302, 0041, 0047, 0217, 0032, 0211, 0017, 0202, 0063, 0201, 0110, 0104, 0221, 0314, 0004, 0346, 
+  0252, 0247, 0334, 0274, 0324, 0131, 0372, 0064, 0061, 0057, 0077, 0375, 0365, 0267, 0175, 0032, 
+  0024, 0217, 0333, 0240, 0043, 0235, 0126, 0102, 0013, 0255, 0035, 0135, 0063, 0015, 0004, 0135, 
+  0153, 0222, 0245, 0033, 0347, 0260, 0077, 0230, 0377, 0207, 0301, 0352, 0342, 0377, 0000, 0213, 
+  0120, 0122, 0025, 0173, 0127, 0143, 0314, 0165, 0121, 0326, 0271, 0122, 0053, 0213, 0074, 0147, 
+  0342, 0110, 0217, 0345, 0234, 0214, 0201, 0247, 0304, 0262, 0014, 0116, 0027, 0217, 0032, 0213, 
+  0167, 0070, 0221, 0155, 0134, 0174, 0334, 0055, 0377, 0371, 0117, 0370, 0042, 0224, 0231, 0361, 
+  0136, 0027, 0044, 0145, 0233, 0251, 0123, 0333, 0363, 0116, 0346, 0336, 0376, 0302, 0300, 0064, 
+  0105, 0173, 0241, 0004, 0244, 0264, 0363, 0127, 0046, 0142, 0071, 0367, 0075, 0014, 0144, 0344, 
+  0217, 0016, 0250, 0213, 0064, 0345, 0310, 0036, 0255, 0221, 0105, 0153, 0027, 0134, 0157, 0050, 
+  0327, 0135, 0170, 0305, 0060, 0242, 0031, 0067, 0301, 0234, 0305, 0146, 0354, 0017, 0137, 0034, 
+  0037, 0367, 0020, 0036, 0347, 0264, 0155, 0370, 0165, 0247, 0064, 0103, 0106, 0030, 0344, 0060, 
+  0046, 0102, 0116, 0201, 0104, 0233, 0301, 0067, 0314, 0130, 0246, 0327, 0264, 0207, 0065, 0164, 
+  0326, 0310, 0133, 0051, 0057, 0272, 0116, 0140, 0101, 0122, 0273, 0277, 0021, 0230, 0041, 0126, 
+  0276, 0207, 0133, 0126, 0314, 0101, 0271, 0226, 0300, 0265, 0004, 0256, 0045, 0210, 0102, 0337, 
+  0313, 0201, 0137, 0007, 0232, 0216, 0214, 0355, 0142, 0207, 0364, 0364, 0034, 0227, 0037, 0220, 
+  0032, 0011, 0151, 0071, 0344, 0312, 0150, 0350, 0254, 0140, 0140, 0155, 0250, 0374, 0165, 0377, 
+  0161, 0120, 0163, 0175, 0030, 0347, 0032, 0236, 0131, 0244, 0045, 0034, 0041, 0265, 0011, 0174, 
+  0065, 0140, 0336, 0305, 0213, 0153, 0333, 0166, 0111, 0213, 0263, 0120, 0105, 0262, 0257, 0173, 
+  0066, 0106, 0042, 0052, 0176, 0017, 0164, 0204, 0263, 0050, 0116, 0112, 0100, 0143, 0120, 0273, 
+  0263, 0300, 0055, 0134, 0161, 0212, 0031, 0200, 0270, 0225, 0147, 0056, 0002, 0343, 0114, 0345, 
+  0007, 0046, 0057, 0104, 0320, 0210, 0226, 0231, 0212, 0254, 0106, 0104, 0322, 0242, 0153, 0017, 
+  0155, 0171, 0113, 0251, 0147, 0243, 0212, 0021, 0247, 0011, 0316, 0061, 0144, 0061, 0236, 0065, 
+  0135, 0230, 0123, 0376, 0207, 0136, 0210, 0210, 0104, 0012, 0060, 0372, 0054, 0374, 0165, 0373, 
+  0055, 0110, 0173, 0132, 0265, 0111, 0307, 0016, 0146, 0125, 0224, 0131, 0117, 0331, 0302, 0230, 
+  0346, 0236, 0175, 0114, 0150, 0313, 0334, 0357, 0234, 0213, 0054, 0075, 0221, 0303, 0310, 0146, 
+  0210, 0375, 0334, 0146, 0014, 0067, 0051, 0306, 0324, 0146, 0247, 0331, 0302, 0277, 0266, 0313, 
+  0055, 0265, 0316, 0166, 0367, 0017, 0042, 0056, 0365, 0355, 0301, 0250, 0127, 0074, 0331, 0252, 
+  0103, 0345, 0220, 0105, 0343, 0170, 0357, 0203, 0125, 0377, 0315, 0260, 0074, 0331, 0107, 0140, 
+  0013, 0055, 0135, 0133, 0130, 0137, 0101, 0043, 0045, 0067, 0054, 0015, 0332, 0217, 0032, 0316, 
+  0135, 0074, 0001, 0363, 0262, 0040, 0320, 0232, 0260, 0043, 0334, 0306, 0046, 0020, 0127, 0262, 
+  0047, 0366, 0012, 0212, 0136, 0273, 0147, 0116, 0127, 0124, 0302, 0121, 0210, 0173, 0264, 0373, 
+  0171, 0204, 0251, 0077, 0107, 0266, 0266, 0070, 0027, 0146, 0362, 0301, 0275, 0250, 0057, 0116, 
+  0100, 0315, 0044, 0027, 0135, 0137, 0246, 0145, 0247, 0323, 0323, 0133, 0325, 0071, 0135, 0150, 
+  0344, 0035, 0161, 0334, 0204, 0104, 0157, 0136, 0364, 0375, 0224, 0046, 0160, 0220, 0374, 0133, 
+  0331, 0257, 0071, 0323, 0206, 0040, 0034, 0104, 0057, 0246, 0241, 0304, 0165, 0332, 0324, 0115, 
+  0263, 0217, 0330, 0355, 0244, 0037, 0373, 0111, 0151, 0064, 0141, 0042, 0131, 0323, 0144, 0337, 
+  0007, 0056, 0051, 0255, 0327, 0242, 0006, 0313, 0116, 0033, 0211, 0044, 0210, 0254, 0032, 0162, 
+  0365, 0132, 0337, 0301, 0242, 0317, 0111, 0331, 0212, 0212, 0163, 0364, 0315, 0370, 0057, 0353, 
+  0227, 0315, 0165, 0315, 0076, 0251, 0346, 0101, 0234, 0005, 0337, 0013, 0142, 0055, 0155, 0364, 
+  0226, 0275, 0334, 0000, 0104, 0274, 0233, 0023, 0254, 0024, 0266, 0220, 0223, 0105, 0310, 0306, 
+  0250, 0210, 0200, 0157, 0136, 0377, 0055, 0166, 0234, 0073, 0166, 0200, 0366, 0002, 0353, 0153, 
+  0147, 0373, 0136, 0171, 0331, 0151, 0360, 0162, 0054, 0160, 0173, 0157, 0134, 0242, 0273, 0130, 
+  0221, 0215, 0312, 0052, 0031, 0006, 0267, 0170, 0330, 0155, 0175, 0157, 0113, 0033, 0025, 0226, 
+  0032, 0350, 0366, 0202, 0107, 0153, 0010, 0064, 0124, 0216, 0065, 0213, 0035, 0225, 0156, 0252, 
+  0033, 0267, 0315, 0212, 0162, 0056, 0347, 0244, 0335, 0211, 0372, 0117, 0255, 0106, 0247, 0224, 
+  0075, 0152, 0335, 0035, 0237, 0332, 0040, 0267, 0007, 0315, 0371, 0031, 0017, 0075, 0224, 0227, 
+  0167, 0063, 0241, 0165, 0031, 0125, 0276, 0072, 0104, 0106, 0252, 0023, 0333, 0241, 0346, 0270, 
+  0216, 0304, 0341, 0327, 0257, 0333, 0303, 0034, 0070, 0372, 0244, 0060, 0213, 0346, 0356, 0040, 
+  0366, 0146, 0167, 0266, 0072, 0231, 0011, 0164, 0064, 0133, 0316, 0154, 0010, 0225, 0156, 0366, 
+  0206, 0211, 0316, 0255, 0172, 0331, 0062, 0150, 0014, 0056, 0146, 0267, 0050, 0122, 0070, 0127, 
+  0045, 0302, 0366, 0046, 0157, 0047, 0047, 0013, 0322, 0214, 0123, 0037, 0232, 0166, 0211, 0075, 
+  0367, 0340, 0147, 0267, 0076, 0317, 0366, 0333, 0202, 0355, 0276, 0132, 0324, 0236, 0022, 0151, 
+  0353, 0031, 0063, 0046, 0063, 0335, 0227, 0207, 0221, 0255, 0170, 0130, 0353, 0213, 0076, 0056, 
+  0371, 0237, 0336, 0116, 0135, 0065, 0054, 0260, 0227, 0322, 0240, 0361, 0010, 0360, 0315, 0361, 
+  0116, 0321, 0265, 0022, 0057, 0102, 0032, 0066, 0132, 0234, 0236, 0226, 0300, 0254, 0304, 0115, 
+  0001, 0346, 0262, 0155, 0227, 0352, 0324, 0172, 0250, 0131, 0062, 0320, 0020, 0151, 0007, 0342, 
+  0341, 0125, 0147, 0201, 0230, 0231, 0317, 0331, 0125, 0356, 0356, 0374, 0373, 0035, 0316, 0324, 
+  0213, 0301, 0120, 0306, 0365, 0166, 0271, 0263, 0202, 0121, 0065, 0205, 0176, 0126, 0124, 0077, 
+  0306, 0036, 0310, 0364, 0015, 0261, 0306, 0076, 0330, 0341, 0160, 0347, 0123, 0301, 0265, 0114, 
+  0022, 0016, 0125, 0307, 0034, 0321, 0231, 0124, 0314, 0300, 0343, 0164, 0316, 0025, 0247, 0062, 
+  0156, 0162, 0065, 0247, 0252, 0315, 0057, 0050, 0205, 0076, 0067, 0307, 0262, 0171, 0106, 0101, 
+  0374, 0370, 0134, 0252, 0352, 0114, 0261, 0024, 0360, 0070, 0067, 0304, 0157, 0245, 0200, 0373, 
+  0337, 0016, 0357, 0145, 0207, 0272, 0253, 0003, 0151, 0121, 0243, 0353, 0161, 0046, 0335, 0235, 
+  0077, 0175, 0310, 0057, 0216, 0163, 0157, 0161, 0204, 0240, 0270, 0310, 0013, 0212, 0053, 0345, 
+  0373, 0011, 0273, 0136, 0027, 0075, 0325, 0123, 0316, 0041, 0202, 0037, 0105, 0211, 0236, 0263, 
+  0024, 0012, 0322, 0276, 0351, 0136, 0267, 0176, 0272, 0253, 0227, 0304, 0032, 0311, 0326, 0310, 
+  0176, 0120, 0266, 0232, 0020, 0335, 0233, 0175, 0157, 0377, 0112, 0375, 0153, 0067, 0073, 0052, 
+  0023, 0002, 0235, 0245, 0306, 0356, 0254, 0124, 0160, 0053, 0025, 0054, 0245, 0166, 0260, 0243, 
+  0265, 0042, 0142, 0054, 0214, 0371, 0015, 0014, 0323, 0046, 0260, 0176, 0034, 0150, 0263, 0327, 
+  0301, 0161, 0213, 0345, 0154, 0277, 0260, 0351, 0372, 0030, 0363, 0020, 0226, 0155, 0374, 0364, 
+  0262, 0073, 0331, 0075, 0357, 0274, 0343, 0036, 0313, 0251, 0114, 0100, 0200, 0154, 0112, 0327, 
+  0255, 0113, 0225, 0062, 0041, 0016, 0124, 0025, 0261, 0137, 0063, 0314, 0372, 0227, 0010, 0152, 
+  0331, 0264, 0367, 0175, 0122, 0103, 0156, 0057, 0157, 0373, 0311, 0234, 0242, 0260, 0375, 0350, 
+  0151, 0247, 0017, 0061, 0363, 0017, 0140, 0163, 0277, 0266, 0077, 0117, 0016, 0002, 0333, 0254, 
+  0347, 0067, 0261, 0275, 0157, 0330, 0072, 0076, 0236, 0225, 0324, 0176, 0046, 0175, 0267, 0150, 
+  0156, 0117, 0206, 0356, 0270, 0054, 0373, 0210, 0013, 0260, 0053, 0273, 0164, 0201, 0173, 0236, 
+  0116, 0335, 0003, 0073, 0124, 0350, 0266, 0326, 0154, 0037, 0200, 0321, 0014, 0312, 0017, 0224, 
+  0232, 0026, 0035, 0271, 0370, 0133, 0045, 0263, 0264, 0162, 0377, 0237, 0357, 0076, 0330, 0020, 
+  0044, 0256, 0245, 0361, 0143, 0017, 0177, 0070, 0306, 0344, 0374, 0321, 0232, 0271, 0222, 0220, 
+  0061, 0003, 0047, 0140, 0164, 0371, 0243, 0214, 0240, 0312, 0167, 0005, 0203, 0172, 0133, 0155, 
+  0307, 0263, 0216, 0263, 0324, 0262, 0234, 0314, 0046, 0313, 0363, 0122, 0373, 0075, 0230, 0276, 
+  0122, 0303, 0257, 0333, 0336, 0342, 0141, 0175, 0246, 0200, 0034, 0056, 0277, 0055, 0250, 0114, 
+  0242, 0270, 0012, 0051, 0155, 0317, 0037, 0061, 0230, 0164, 0345, 0167, 0063, 0242, 0365, 0346, 
+  0272, 0325, 0203, 0252, 0256, 0166, 0213, 0256, 0054, 0251, 0253, 0030, 0344, 0110, 0336, 0322, 
+  0036, 0367, 0144, 0263, 0237, 0256, 0374, 0136, 0072, 0174, 0071, 0124, 0275, 0245, 0112, 0116, 
+  0135, 0122, 0250, 0150, 0271, 0365, 0325, 0333, 0177, 0227, 0074, 0371, 0027, 0314, 0325, 0222, 
+  0360, 0000, 0050, 0165, 0165, 0141, 0171, 0051, 0165, 0151, 0057, 0000, 0013, 0000, 0000, 0000, 
+  0003, 0000, 0000, 0000, 0010, 0000, 0000, 0000, 0012, 0000, 0000, 0000, 0015, 0000, 0000, 0000, 
+  0005, 0000, 0000, 0000, 0001, 0000, 0000, 0000, 0021, 0000, 0000, 0000, 0002, 0000, 0000, 0000, 
+  0014, 0000, 0000, 0000, 0004, 0000, 0000, 0000, 0022, 0000, 0000, 0000, 0020, 0000, 0000, 0000
+} };
+#else /* _MSC_VER */
+static const SECTION union { const guint8 data[10241]; const double alignment; void * const ptr;}  
resources_resource_data = {
+  "\107\126\141\162\151\141\156\164\000\000\000\000\000\000\000\000"
+  "\030\000\000\000\120\002\000\000\000\000\000\050\024\000\000\000"
+  "\000\000\000\000\002\000\000\000\002\000\000\000\002\000\000\000"
+  "\003\000\000\000\004\000\000\000\005\000\000\000\006\000\000\000"
+  "\007\000\000\000\010\000\000\000\010\000\000\000\010\000\000\000"
+  "\012\000\000\000\016\000\000\000\016\000\000\000\017\000\000\000"
+  "\021\000\000\000\021\000\000\000\022\000\000\000\022\000\000\000"
+  "\324\265\002\000\377\377\377\377\120\002\000\000\001\000\114\000"
+  "\124\002\000\000\130\002\000\000\034\266\164\136\023\000\000\000"
+  "\130\002\000\000\037\000\166\000\170\002\000\000\221\004\000\000"
+  "\217\136\330\233\023\000\000\000\221\004\000\000\042\000\166\000"
+  "\270\004\000\000\304\006\000\000\060\045\065\133\023\000\000\000"
+  "\304\006\000\000\033\000\166\000\340\006\000\000\042\011\000\000"
+  "\031\142\222\037\023\000\000\000\042\011\000\000\030\000\166\000"
+  "\100\011\000\000\350\014\000\000\356\176\323\373\023\000\000\000"
+  "\350\014\000\000\036\000\166\000\010\015\000\000\300\017\000\000"
+  "\263\066\320\203\016\000\000\000\300\017\000\000\004\000\114\000"
+  "\304\017\000\000\310\017\000\000\260\267\044\060\017\000\000\000"
+  "\310\017\000\000\006\000\114\000\320\017\000\000\324\017\000\000"
+  "\003\244\310\314\023\000\000\000\324\017\000\000\032\000\166\000"
+  "\360\017\000\000\224\022\000\000\327\246\223\250\006\000\000\000"
+  "\224\022\000\000\017\000\166\000\250\022\000\000\335\023\000\000"
+  "\360\234\140\055\023\000\000\000\335\023\000\000\030\000\166\000"
+  "\370\023\000\000\177\025\000\000\314\133\025\323\023\000\000\000"
+  "\177\025\000\000\031\000\166\000\230\025\000\000\163\026\000\000"
+  "\060\313\173\243\023\000\000\000\163\026\000\000\025\000\166\000"
+  "\210\026\000\000\230\031\000\000\240\376\061\016\023\000\000\000"
+  "\230\031\000\000\030\000\166\000\260\031\000\000\226\033\000\000"
+  "\076\121\363\003\007\000\000\000\226\033\000\000\011\000\114\000"
+  "\240\033\000\000\250\033\000\000\113\120\220\013\000\000\000\000"
+  "\250\033\000\000\004\000\114\000\254\033\000\000\260\033\000\000"
+  "\223\165\327\152\023\000\000\000\260\033\000\000\011\000\166\000"
+  "\300\033\000\000\342\035\000\000\031\230\161\204\023\000\000\000"
+  "\342\035\000\000\040\000\166\000\010\036\000\000\104\040\000\000"
+  "\233\307\032\100\023\000\000\000\104\040\000\000\022\000\166\000"
+  "\130\040\000\000\310\047\000\000\353\257\241\217\016\000\000\000"
+  "\310\047\000\000\003\000\114\000\314\047\000\000\000\050\000\000"
+  "\057\000\000\000\017\000\000\000\143\157\156\164\141\143\164\163"
+  "\055\151\156\055\141\160\160\055\156\157\164\151\146\151\143\141"
+  "\164\151\157\156\056\165\151\000\070\006\000\000\001\000\000\000"
+  "\170\332\265\125\313\156\333\060\020\274\347\053\204\275\026\216"
+  "\355\244\055\172\220\030\270\051\342\006\050\222\300\110\221\043"
+  "\261\242\326\026\153\212\144\111\372\221\176\175\051\333\212\335"
+  "\072\226\003\027\275\055\244\341\160\147\166\126\112\257\226\225"
+  "\112\346\344\274\064\072\203\376\171\017\022\322\302\024\122\117"
+  "\062\370\376\170\323\371\004\127\354\054\225\072\220\033\243\040"
+  "\226\072\372\071\223\216\174\242\144\236\301\044\114\337\301\226"
+  "\340\362\274\377\036\272\054\015\124\131\205\201\022\241\320\373"
+  "\014\256\215\016\050\202\277\325\003\153\357\114\220\143\051\060"
+  "\304\043\220\130\164\244\103\006\303\060\035\321\234\120\221\003"
+  "\226\132\147\054\271\360\234\150\254\050\203\271\364\062\127\004"
+  "\354\321\315\050\355\066\157\367\160\045\052\071\321\300\004\325"
+  "\015\267\000\347\033\240\017\350\302\056\116\224\122\025\054\065"
+  "\371\017\022\241\151\077\366\066\164\262\200\104\026\121\162\135"
+  "\235\334\241\060\152\126\151\356\055\212\350\061\260\376\105\013"
+  "\170\041\213\120\362\332\161\362\001\330\145\257\267\013\366\341"
+  "\131\305\201\254\172\334\034\100\153\073\172\327\336\070\213\156"
+  "\203\073\240\354\033\346\244\326\322\324\252\074\335\175\132\132"
+  "\324\305\233\247\264\147\376\337\362\035\332\243\144\025\056\371"
+  "\332\047\121\242\363\300\076\364\216\120\362\312\024\121\314\303"
+  "\340\156\170\317\237\106\203\007\376\164\077\372\302\257\277\016"
+  "\106\273\047\273\153\247\042\005\212\151\234\325\036\127\060\226"
+  "\143\210\271\056\201\265\335\251\150\034\136\007\166\137\250\273"
+  "\233\351\034\032\322\347\131\010\365\266\324\123\022\312\170\342"
+  "\371\372\311\311\303\232\277\165\125\306\106\314\074\067\232\013"
+  "\045\305\024\330\015\052\337\106\354\110\111\032\003\323\106\377"
+  "\001\363\361\072\124\315\032\324\134\024\067\252\214\201\211\053"
+  "\237\301\352\202\255\060\376\202\360\213\230\152\212\272\265\251"
+  "\343\174\310\241\333\012\047\364\017\173\211\232\257\224\036\027"
+  "\150\345\222\024\367\362\127\144\355\177\154\001\112\021\165\324"
+  "\045\260\205\324\205\131\164\126\012\073\376\271\312\115\224\367"
+  "\152\332\232\044\374\237\370\135\264\307\157\277\213\346\113\036"
+  "\313\355\117\340\354\067\021\116\103\063\000\050\165\165\141\171"
+  "\051\143\157\156\164\141\143\164\163\055\154\151\156\153\145\144"
+  "\055\160\145\162\163\157\156\141\163\055\144\151\141\154\157\147"
+  "\056\165\151\000\000\000\000\000\150\006\000\000\001\000\000\000"
+  "\170\332\265\125\115\217\323\060\020\275\357\257\260\174\105\273"
+  "\355\026\204\366\220\170\305\202\130\016\173\100\142\021\342\024"
+  "\115\234\151\062\324\261\203\075\351\307\277\147\232\155\125\240"
+  "\125\267\164\305\315\261\237\075\357\075\077\117\262\333\145\353"
+  "\324\034\143\242\340\163\175\175\065\326\012\275\015\025\371\072"
+  "\327\137\037\077\136\336\350\133\163\221\221\147\214\123\260\150"
+  "\262\210\077\173\212\230\224\243\062\327\065\317\136\351\335\001"
+  "\257\257\046\023\075\062\031\143\333\071\140\124\326\101\112\271"
+  "\176\037\074\203\345\364\100\176\206\325\147\201\007\017\351\003"
+  "\201\013\265\126\035\104\364\234\353\173\236\155\246\114\326\305"
+  "\320\141\344\225\362\320\142\256\347\224\250\164\250\315\143\354"
+  "\061\033\155\127\367\160\155\250\300\075\213\252\160\012\275\343"
+  "\142\101\025\067\332\274\035\217\117\000\067\110\165\303\332\274"
+  "\371\023\155\033\162\225\342\125\047\120\046\166\130\102\024\376"
+  "\241\374\201\226\267\372\105\331\047\204\012\343\335\260\170\246"
+  "\270\324\227\103\005\255\070\202\117\142\060\310\266\134\257\060"
+  "\151\363\144\255\172\147\155\350\075\247\337\217\031\075\221\221"
+  "\301\100\166\313\171\270\124\017\356\162\370\024\032\145\130\036"
+  "\142\176\067\114\237\311\071\104\222\273\005\226\170\150\043\071"
+  "\141\262\340\366\374\073\120\365\076\122\365\037\313\376\205\267"
+  "\301\365\255\057\122\007\126\242\257\315\315\021\154\014\213\035"
+  "\360\172\162\212\230\057\066\006\347\260\372\106\276\012\213\363"
+  "\145\065\151\070\110\042\126\164\301\221\135\151\343\121\344\035"
+  "\331\062\337\337\002\075\207\126\274\261\307\052\341\262\003\137"
+  "\075\313\150\176\042\056\065\040\312\213\365\073\321\206\374\051"
+  "\246\075\120\342\165\366\024\111\070\335\020\357\002\066\361\056"
+  "\346\204\057\360\061\241\223\132\022\216\102\032\206\300\175\360"
+  "\170\364\305\034\176\102\207\110\103\211\356\005\027\014\216\152"
+  "\211\254\305\365\343\074\002\164\103\235\103\215\340\173\350\225"
+  "\005\257\326\216\051\273\151\274\252\134\251\215\150\137\053\156"
+  "\260\125\323\030\332\365\150\207\161\142\370\277\271\260\077\261"
+  "\355\374\062\334\375\064\056\176\001\021\350\131\064\000\050\165"
+  "\165\141\171\051\143\157\156\164\141\143\164\163\055\141\166\141"
+  "\164\141\162\055\163\145\154\145\143\164\157\162\056\165\151\000"
+  "\004\013\000\000\001\000\000\000\170\332\335\126\313\156\333\060"
+  "\020\274\347\053\004\136\213\306\261\213\002\071\110\012\352\002"
+  "\356\065\100\335\263\260\242\326\322\126\053\122\045\051\333\271"
+  "\365\153\372\141\375\222\256\343\332\201\343\064\222\203\302\175"
+  "\334\014\151\070\032\316\214\227\214\157\326\015\107\113\164\236"
+  "\254\111\324\370\362\112\105\150\264\055\310\224\211\372\064\237"
+  "\275\276\126\067\351\105\114\046\240\133\200\306\064\166\370\245"
+  "\043\207\076\142\312\023\125\206\372\225\172\040\170\163\071\231"
+  "\250\121\032\007\154\132\206\200\221\146\360\076\121\357\255\011"
+  "\240\203\177\267\204\000\356\043\062\352\140\235\212\132\160\150"
+  "\102\242\076\204\372\326\266\126\170\124\032\267\316\266\350\302"
+  "\135\144\240\301\104\151\060\331\302\352\316\253\164\006\354\061"
+  "\036\355\000\151\254\053\342\042\215\155\376\131\010\167\037\023"
+  "\262\251\135\037\023\055\311\123\316\250\322\271\353\016\130\116"
+  "\370\340\043\150\003\256\044\223\061\056\202\112\307\127\375\110"
+  "\107\145\065\020\032\154\073\014\230\333\020\154\323\203\265\216"
+  "\304\151\010\022\223\112\305\347\100\032\370\031\274\157\101\113"
+  "\011\036\263\376\312\360\031\333\325\306\364\210\212\104\011\326"
+  "\133\003\076\013\125\327\344\006\210\263\322\121\161\226\104\264"
+  "\345\256\061\331\136\376\333\147\260\316\256\206\001\375\175\141"
+  "\305\272\254\261\205\310\065\326\034\150\030\155\375\220\165\240"
+  "\153\141\073\042\300\165\013\246\350\127\277\040\346\136\067\132"
+  "\353\151\233\343\101\064\243\375\307\107\077\123\032\024\226\017"
+  "\126\327\377\115\122\215\374\037\356\267\055\163\045\223\027\031"
+  "\223\301\236\045\260\176\152\311\365\071\372\320\343\346\211\165"
+  "\030\277\254\016\347\032\226\025\060\225\042\123\343\346\064\371"
+  "\175\263\147\332\311\374\063\333\066\353\012\321\143\226\157\037"
+  "\035\061\063\344\310\052\012\016\214\227\363\011\144\207\211\272"
+  "\103\021\077\207\032\043\210\156\111\207\316\341\367\257\337\206"
+  "\355\271\307\035\143\063\137\111\167\141\100\216\016\065\322\022"
+  "\175\126\340\002\072\016\307\013\274\330\007\274\023\301\244\153"
+  "\054\124\124\111\223\030\235\214\370\115\365\357\267\277\177\347"
+  "\127\320\266\130\154\204\154\216\345\177\154\116\115\117\116\161"
+  "\173\263\220\034\147\304\075\041\276\240\340\147\010\120\214\375"
+  "\373\342\353\231\053\177\112\326\144\240\254\375\203\335\255\124"
+  "\176\076\134\150\057\176\000\101\335\014\301\000\050\165\165\141"
+  "\171\051\143\157\156\164\141\143\164\163\055\163\145\164\165\160"
+  "\055\167\151\156\144\157\167\056\165\151\000\000\000\000\000\000"
+  "\210\016\000\000\001\000\000\000\170\332\255\127\133\217\323\072"
+  "\020\176\347\127\370\370\025\322\056\273\173\020\132\265\101\134"
+  "\304\105\102\002\004\210\307\310\161\146\023\123\307\016\366\144"
+  "\273\345\327\063\166\233\322\155\273\151\350\126\312\203\023\317"
+  "\214\347\362\315\067\316\344\305\155\255\331\015\070\257\254\231"
+  "\362\247\243\063\316\300\110\133\050\123\116\371\367\157\157\223"
+  "\347\374\105\372\150\242\014\202\273\026\022\322\311\177\111\302"
+  "\326\257\211\203\137\255\162\340\131\211\263\307\354\142\164\176"
+  "\316\222\044\235\040\324\215\026\010\114\152\341\375\224\277\266"
+  "\006\205\104\377\025\260\155\176\050\123\330\071\147\215\160\140"
+  "\160\312\337\341\354\145\323\150\045\005\222\027\253\335\164\322"
+  "\070\333\200\303\005\063\242\206\051\277\121\136\345\032\170\372"
+  "\315\265\060\031\167\273\073\162\005\134\213\126\143\066\127\005"
+  "\126\074\175\176\166\066\100\270\002\125\126\310\323\147\275\322"
+  "\112\132\223\205\045\117\113\143\153\110\344\052\254\115\035\131"
+  "\051\135\060\134\064\244\200\012\065\344\302\121\064\066\377\011"
+  "\022\273\174\120\310\357\101\024\340\136\305\315\043\103\225\302"
+  "\144\327\126\266\236\247\157\205\366\175\242\321\023\316\320\011"
+  "\343\251\060\202\314\117\371\002\110\263\053\015\213\265\351\061"
+  "\341\053\073\317\244\266\036\262\274\105\264\146\317\251\036\027"
+  "\232\060\022\243\334\074\071\344\140\234\116\306\335\176\310\321"
+  "\236\234\274\132\332\145\252\240\343\202\073\031\241\013\327\307"
+  "\235\040\117\007\044\265\310\101\357\115\123\366\205\074\351\321"
+  "\154\075\044\255\241\212\152\145\016\173\104\011\127\153\054\211"
+  "\246\031\375\332\262\276\104\121\354\063\043\164\022\137\203\232"
+  "\004\277\212\171\053\173\057\161\366\051\176\270\047\173\231\300"
+  "\331\122\143\067\217\153\335\253\253\277\047\044\321\271\275\210"
+  "\021\106\202\146\361\010\046\114\301\266\235\037\057\017\242\305"
+  "\252\320\353\017\215\220\063\242\226\035\017\302\367\054\364\014"
+  "\117\075\012\167\327\332\132\251\063\067\034\076\205\065\360\140"
+  "\370\170\060\136\241\272\201\303\155\066\034\151\121\052\243\272"
+  "\110\042\276\331\141\313\075\310\174\103\101\036\217\314\323\040"
+  "\155\043\321\047\104\132\244\044\046\055\015\023\100\350\205\330"
+  "\076\346\201\133\114\126\305\037\337\335\362\155\131\202\107\050"
+  "\222\145\047\156\222\323\277\200\025\114\321\017\325\035\077\357"
+  "\303\356\127\351\254\326\120\074\164\374\125\076\032\042\302\315"
+  "\032\113\320\132\360\324\000\015\370\036\225\360\052\112\232\326"
+  "\304\107\330\072\241\327\343\160\057\126\266\235\177\137\054\136"
+  "\133\335\326\017\350\260\132\334\252\272\255\273\231\335\077\205"
+  "\003\214\051\272\322\331\071\126\235\312\145\257\112\055\134\251"
+  "\114\206\266\341\351\305\371\141\301\334\022\150\352\141\262\221"
+  "\257\170\372\164\200\050\241\145\133\360\076\070\274\163\252\070"
+  "\076\237\067\102\253\222\352\041\041\264\165\037\132\206\012\346"
+  "\326\021\203\164\331\356\015\226\352\222\171\152\004\352\003\236"
+  "\236\137\366\110\132\247\350\334\170\353\343\051\141\024\351\012"
+  "\250\207\144\347\143\044\303\343\173\144\150\324\240\265\152\274"
+  "\372\275\333\351\203\331\371\007\150\342\257\073\336\010\104\247"
+  "\210\227\300\157\254\073\142\242\014\020\027\122\001\133\172\273"
+  "\030\375\037\231\151\123\143\060\243\234\050\111\073\363\170\113"
+  "\156\356\104\163\320\330\355\312\330\331\121\071\374\254\101\170"
+  "\240\013\207\016\021\056\154\353\130\055\224\141\242\050\350\327"
+  "\303\263\334\332\331\025\303\112\171\106\317\274\002\107\351\204"
+  "\071\353\256\347\154\256\264\146\071\004\005\050\106\354\303\165"
+  "\060\302\146\000\315\322\332\132\060\030\065\314\232\300\061\214"
+  "\046\224\155\015\076\211\302\064\331\203\072\235\002\065\153\075"
+  "\201\073\054\267\104\175\270\024\041\355\371\121\357\260\072\300"
+  "\243\161\256\006\237\010\237\047\043\325\313\007\223\352\375\327"
+  "\272\177\370\320\375\031\322\362\357\117\345\243\077\161\140\124"
+  "\245\000\050\165\165\141\171\051\143\157\156\164\141\143\164\163"
+  "\055\143\162\157\160\055\143\150\145\145\163\145\055\144\151\141"
+  "\154\157\147\056\165\151\000\000\066\015\000\000\001\000\000\000"
+  "\170\332\325\127\315\162\323\060\020\276\367\051\074\272\062\156"
+  "\322\002\063\034\154\167\150\072\005\316\224\341\250\131\313\033"
+  "\113\130\221\214\044\067\315\215\247\341\301\170\022\326\316\137"
+  "\323\244\061\015\155\051\227\304\263\336\237\317\373\175\273\226"
+  "\223\263\233\211\216\256\321\171\145\115\312\116\216\207\054\102"
+  "\043\154\241\114\231\262\057\127\227\361\073\166\226\035\045\312"
+  "\004\164\143\020\230\045\016\277\067\312\241\217\264\312\123\126"
+  "\206\352\025\133\047\170\175\174\172\312\006\131\022\160\122\153"
+  "\010\030\011\015\336\247\154\144\115\000\021\374\310\331\172\044"
+  "\021\075\136\050\320\266\144\121\015\016\115\110\331\207\120\175"
+  "\125\246\260\123\226\045\065\171\241\013\263\310\300\004\123\046"
+  "\300\360\261\025\215\147\331\045\150\217\311\140\351\260\345\072"
+  "\261\005\150\226\135\271\146\237\127\201\143\150\164\340\123\125"
+  "\004\311\262\067\303\341\037\070\113\124\245\014\375\336\076\070"
+  "\073\243\324\101\362\371\263\365\302\361\225\252\171\000\137\345"
+  "\340\270\124\273\042\274\052\015\350\315\032\054\222\140\012\215"
+  "\056\145\326\360\225\321\117\241\256\261\110\231\261\055\023\102"
+  "\052\135\144\211\315\277\241\010\113\072\250\331\237\211\217\212"
+  "\105\212\034\175\167\271\005\353\132\171\225\153\354\205\277\217"
+  "\236\105\165\322\202\100\151\165\201\216\040\015\026\326\301\034"
+  "\324\332\320\375\105\141\126\123\326\240\202\106\152\010\333\201"
+  "\375\043\002\145\072\357\156\076\035\350\255\262\347\115\010\326"
+  "\154\327\324\220\243\146\121\160\140\074\211\036\250\176\312\146"
+  "\110\251\107\140\004\352\075\060\016\200\333\343\351\120\240\272"
+  "\106\317\027\272\355\321\222\320\112\124\130\154\152\111\164\260"
+  "\371\352\336\035\111\255\170\253\111\067\264\050\266\060\324\326"
+  "\253\240\332\126\235\334\056\074\130\371\157\020\276\137\234\262"
+  "\343\272\235\214\047\224\351\356\224\161\007\057\156\155\054\312"
+  "\151\071\305\336\066\116\340\162\142\346\266\145\354\316\260\075"
+  "\003\170\156\157\236\345\141\074\165\235\232\316\262\267\017\320"
+  "\170\327\372\000\025\162\060\066\110\164\074\177\260\370\257\050"
+  "\074\172\077\017\377\365\343\347\013\233\202\073\001\306\162\057"
+  "\355\224\203\326\207\114\314\106\253\016\236\033\274\251\051\147"
+  "\077\245\143\245\373\137\162\353\041\034\036\066\204\017\137\167"
+  "\027\326\340\177\267\354\012\002\175\057\145\076\314\064\235\171"
+  "\272\246\054\347\251\051\113\172\327\142\021\323\201\246\355\157"
+  "\313\354\302\357\137\061\334\263\146\173\141\165\273\052\023\144"
+  "\174\134\251\274\200\301\226\240\111\002\054\103\123\034\060\322"
+  "\265\022\367\152\343\276\146\174\232\100\211\317\262\332\225\040"
+  "\234\013\356\350\327\101\134\113\033\154\354\147\223\334\022\352"
+  "\015\062\357\036\266\036\133\332\013\034\335\341\376\131\104\333"
+  "\332\171\173\130\334\042\367\257\113\256\014\313\357\030\272\134"
+  "\177\002\035\375\006\230\371\324\370\000\050\165\165\141\171\051"
+  "\147\164\153\057\011\000\000\000\147\156\157\155\145\057\000\000"
+  "\016\000\000\000\143\157\156\164\141\143\164\163\055\143\157\156"
+  "\164\141\143\164\055\145\144\151\164\157\162\056\165\151\000\000"
+  "\164\014\000\000\001\000\000\000\170\332\265\227\137\157\332\060"
+  "\020\300\337\373\051\054\277\116\201\265\223\246\075\004\127\145"
+  "\033\333\244\266\017\123\253\075\106\216\175\005\017\307\316\354"
+  "\013\055\375\364\273\204\300\250\050\264\115\330\023\306\361\335"
+  "\375\356\237\057\111\317\037\012\313\026\020\242\361\156\304\117"
+  "\007\357\071\003\247\274\066\156\072\342\267\067\223\344\023\077"
+  "\027\047\251\161\010\341\116\052\020\151\200\077\225\011\020\231"
+  "\065\371\210\117\161\376\216\377\123\360\141\160\166\306\207\042"
+  "\055\300\125\314\350\021\007\155\060\121\336\241\124\230\324\273"
+  "\134\244\006\241\020\251\104\014\046\257\020\230\223\005\214\070"
+  "\035\040\025\134\324\022\003\251\365\000\012\151\154\102\053\062"
+  "\026\041\016\146\276\200\164\270\021\333\325\140\145\016\226\063"
+  "\014\322\105\053\121\346\226\066\227\020\271\370\116\242\254\321"
+  "\367\104\301\160\105\322\221\347\336\207\171\107\236\137\044\332"
+  "\233\247\234\171\007\211\253\212\234\242\077\120\140\155\107\232"
+  "\053\237\033\013\254\321\167\064\236\276\331\072\056\115\337\134"
+  "\365\245\251\202\215\135\355\103\036\311\112\017\343\316\250\171"
+  "\375\250\043\300\365\163\342\157\043\310\115\300\231\226\313\216"
+  "\004\343\347\304\337\130\016\076\242\074\346\155\322\152\072\046"
+  "\122\337\042\355\217\344\074\102\327\072\275\336\221\155\155\017"
+  "\353\153\137\244\264\056\111\002\230\262\062\306\021\377\274\032"
+  "\012\261\375\375\112\014\076\160\126\312\000\016\167\036\117\174"
+  "\050\150\164\224\301\227\020\160\331\322\054\114\064\104\300\305"
+  "\115\250\050\233\353\247\073\347\174\060\244\124\256\274\245\141"
+  "\205\106\111\273\175\136\315\214\325\042\365\371\157\120\270\046"
+  "\374\206\363\213\046\102\143\031\336\140\173\237\256\053\012\303"
+  "\270\102\044\206\146\064\122\300\063\015\110\103\040\313\127\333"
+  "\235\375\253\043\234\025\136\123\152\304\316\304\075\040\127\105"
+  "\310\112\137\172\012\311\213\066\064\015\375\266\136\252\362\065"
+  "\376\216\375\103\167\217\142\051\025\275\203\160\361\361\265\151"
+  "\235\321\277\307\332\355\127\045\366\262\251\343\316\170\007\332"
+  "\000\356\331\227\046\253\333\342\303\025\000\055\132\240\175\134"
+  "\077\012\071\205\356\134\112\272\354\316\253\212\100\046\322\306"
+  "\103\107\113\363\000\066\213\346\221\264\236\036\212\262\241\142"
+  "\312\352\045\027\123\237\150\177\357\222\270\054\162\157\215\072"
+  "\350\342\313\033\173\053\147\253\113\254\161\163\320\275\073\144"
+  "\177\302\056\033\003\354\102\051\137\071\214\235\262\266\015\034"
+  "\240\240\176\372\217\300\077\033\003\254\275\030\267\125\104\134"
+  "\132\272\167\033\256\165\327\102\304\120\121\337\056\040\151\257"
+  "\173\172\075\037\266\047\067\016\122\267\315\251\335\166\213\204"
+  "\366\063\134\226\304\013\116\077\211\315\106\144\177\276\327\127"
+  "\176\075\012\066\037\020\047\177\001\252\223\216\221\000\050\165"
+  "\165\141\171\051\150\145\154\160\055\157\166\145\162\154\141\171"
+  "\056\165\151\000\000\000\000\000\133\006\000\000\001\000\000\000"
+  "\170\332\315\225\261\116\303\060\020\206\367\076\205\345\241\043"
+  "\045\163\223\164\100\152\331\000\145\140\104\127\347\112\014\216"
+  "\235\236\057\111\363\366\030\332\010\224\241\152\121\124\145\263"
+  "\316\377\375\167\337\331\262\343\325\241\064\242\101\362\332\331"
+  "\104\106\167\367\162\225\316\142\155\031\151\007\012\323\330\155"
+  "\077\120\261\120\006\274\117\344\206\077\263\302\021\253\232\375"
+  "\253\266\271\153\245\320\171\042\013\064\325\233\013\076\006\072"
+  "\231\306\252\320\046\077\227\233\205\170\250\030\244\025\271\012"
+  "\211\073\141\241\304\104\066\332\353\255\101\231\106\361\242\337"
+  "\272\300\157\103\256\256\056\165\033\210\130\163\220\010\046\260"
+  "\336\000\103\110\110\144\207\136\012\345\302\034\016\234\110\177"
+  "\252\043\332\043\163\372\024\120\033\215\355\125\115\366\213\177"
+  "\366\011\112\241\101\002\166\044\323\365\330\104\217\341\004\377"
+  "\132\056\216\034\141\161\342\272\051\336\334\360\362\231\164\011"
+  "\324\315\337\171\151\107\206\175\040\004\106\001\302\142\373\043"
+  "\003\305\223\205\337\211\101\300\217\074\215\014\201\124\061\131"
+  "\376\165\064\034\300\276\106\377\375\174\214\075\207\076\140\264"
+  "\237\356\165\330\217\114\375\122\353\363\260\327\004\176\077\216"
+  "\331\027\230\147\125\254\000\050\165\165\141\171\051\143\157\156"
+  "\164\141\143\164\163\055\143\157\156\164\141\143\164\055\146\157"
+  "\162\155\056\165\151\000\000\000\226\004\000\000\001\000\000\000"
+  "\170\332\265\224\311\116\303\060\020\206\357\175\012\343\053\012"
+  "\335\244\212\103\342\112\040\265\047\116\024\161\214\246\316\220"
+  "\014\365\206\355\156\157\217\133\132\220\100\112\003\022\247\070"
+  "\316\347\331\376\077\316\247\073\255\330\006\175\040\153\012\076"
+  "\274\031\160\206\106\332\212\114\135\360\247\305\054\273\345\123"
+  "\321\313\311\104\364\057\040\121\344\127\131\306\076\137\063\217"
+  "\157\153\362\030\130\035\127\327\154\174\063\032\261\054\023\171"
+  "\104\355\024\104\144\122\101\010\005\277\267\046\202\214\341\364"
+  "\234\131\257\071\163\340\321\304\202\317\343\152\356\251\342\042"
+  "\167\336\072\364\161\317\014\150\054\370\206\002\055\025\162\261"
+  "\360\153\314\373\347\257\042\227\015\251\112\344\166\371\212\062"
+  "\236\163\244\060\217\322\133\245\260\172\046\123\331\055\147\124"
+  "\025\134\003\231\062\154\177\021\375\033\327\340\316\201\251\056"
+  "\162\233\216\134\150\040\025\127\306\275\113\271\215\065\255\271"
+  "\303\261\243\045\370\322\131\105\162\237\116\140\222\253\255\214"
+  "\237\107\140\035\255\206\110\362\342\014\317\072\075\300\356\231"
+  "\252\330\334\221\371\373\340\064\354\312\355\041\012\027\223\301"
+  "\240\255\113\120\124\247\104\022\017\276\352\042\364\321\057\107"
+  "\171\345\241\142\062\350\313\372\167\036\372\147\225\255\247\324"
+  "\115\032\272\115\215\045\305\322\364\101\265\360\076\131\042\070"
+  "\220\351\307\343\142\070\152\041\245\125\153\155\072\302\032\174"
+  "\175\320\260\003\124\106\353\270\030\117\056\203\113\033\223\241"
+  "\276\263\375\017\225\322\342\244\132\207\215\363\075\221\226\137"
+  "\127\114\357\035\352\222\255\073\000\050\165\165\141\171\051\143"
+  "\157\156\164\141\143\164\163\055\141\143\143\157\165\156\164\163"
+  "\055\154\151\163\164\056\165\151\045\001\000\000\001\000\000\000"
+  "\170\332\145\217\061\157\002\061\014\205\167\176\105\352\025\205"
+  "\153\351\322\041\011\242\225\312\302\110\347\052\015\006\105\344"
+  "\234\253\355\103\360\357\111\053\150\125\165\262\375\336\263\364"
+  "\075\267\070\365\305\034\221\045\127\362\360\060\273\007\203\224"
+  "\352\066\323\336\303\333\346\325\076\301\042\114\134\046\105\336"
+  "\305\204\301\335\131\153\176\116\313\370\071\146\106\061\173\075"
+  "\114\315\343\154\076\067\326\006\247\330\017\045\052\232\124\242"
+  "\210\207\227\112\032\223\312\062\245\072\222\312\072\213\202\031"
+  "\042\043\251\207\225\036\276\204\347\172\202\340\006\256\003\262"
+  "\236\015\305\036\075\034\263\344\217\202\020\066\074\242\353\156"
+  "\356\277\234\140\301\244\255\305\173\137\267\055\116\225\376\304"
+  "\105\317\245\321\177\363\134\137\166\334\006\164\301\165\127\263"
+  "\273\141\267\365\267\361\344\002\261\337\146\342\000\050\165\165"
+  "\141\171\051\143\157\156\164\141\143\164\163\055\154\151\163\164"
+  "\055\160\141\156\145\056\165\151\331\013\000\000\001\000\000\000"
+  "\170\332\325\126\115\157\023\061\020\275\363\053\214\257\260\315"
+  "\227\012\250\112\266\152\021\355\245\007\004\105\034\055\307\236"
+  "\335\065\361\332\213\075\111\232\177\317\354\346\243\011\151\066"
+  "\001\251\025\110\221\022\073\157\146\075\363\336\074\357\360\362"
+  "\241\264\154\006\041\032\357\106\274\167\326\345\014\234\362\332"
+  "\270\174\304\277\335\337\044\037\370\145\372\152\370\072\111\330"
+  "\055\070\010\022\101\263\271\301\202\345\126\152\140\203\263\336"
+  "\371\131\237\171\307\356\213\051\273\232\346\254\167\116\237\213"
+  "\301\340\242\333\147\375\156\157\300\222\204\022\030\207\020\062"
+  "\251\040\155\162\155\226\111\200\237\123\023\040\262\034\047\157"
+  "\352\164\335\072\140\210\120\126\226\036\306\224\225\061\216\370"
+  "\107\357\120\052\214\167\046\342\147\351\200\263\112\006\160\070"
+  "\342\267\070\271\011\262\004\236\016\253\340\053\010\270\140\216"
+  "\326\043\256\244\023\231\127\323\310\323\033\151\043\014\073\153"
+  "\300\036\264\200\207\112\072\175\062\120\104\100\236\336\207\151"
+  "\033\066\026\122\373\271\300\105\105\207\163\336\355\140\125\141"
+  "\254\116\207\176\374\003\024\256\253\244\132\156\203\321\373\245"
+  "\370\140\250\130\211\304\022\117\211\056\064\112\332\226\107\317"
+  "\114\064\143\013\373\107\074\364\330\257\040\203\052\076\071\014"
+  "\013\316\214\036\361\314\130\242\110\100\263\163\172\376\303\024"
+  "\034\101\126\301\224\062\054\204\121\336\011\327\360\011\332\140"
+  "\222\031\247\223\270\050\307\336\032\165\152\074\051\305\314\044"
+  "\312\346\210\307\050\335\211\214\340\242\241\340\023\342\050\050"
+  "\067\104\307\273\266\334\226\064\136\170\253\251\225\010\017\310"
+  "\031\006\351\242\135\236\155\304\027\120\167\206\004\302\320\263"
+  "\330\160\260\235\055\232\334\111\273\226\123\363\267\120\205\164"
+  "\071\150\316\350\133\133\010\273\124\075\376\275\244\370\251\311"
+  "\221\031\326\141\316\163\026\347\262\252\100\067\213\116\072\354"
+  "\054\203\250\014\251\046\144\001\173\365\130\310\120\110\244\204"
+  "\005\117\273\055\205\243\257\236\306\165\066\251\073\053\055\036"
+  "\224\244\012\336\132\320\337\111\001\176\276\124\245\132\025\043"
+  "\054\125\043\232\225\041\127\172\011\201\156\054\342\010\156\166"
+  "\042\256\210\115\175\143\031\104\125\153\233\246\314\001\215\166"
+  "\113\210\363\042\026\344\050\322\332\375\364\317\303\135\257\005"
+  "\067\067\032\217\100\012\060\171\201\277\141\116\227\300\225\252"
+  "\035\357\132\206\045\373\262\131\106\101\075\153\141\174\157\156"
+  "\017\145\277\236\042\222\237\066\251\255\161\023\061\136\156\274"
+  "\200\230\032\224\040\277\121\304\374\344\270\327\130\071\006\373"
+  "\224\171\060\345\313\222\046\237\052\272\243\022\130\200\214\056"
+  "\363\332\115\260\200\372\142\037\277\145\131\360\045\253\013\244"
+  "\236\263\365\004\021\044\007\302\120\047\353\300\143\064\213\372"
+  "\236\206\110\124\276\157\223\116\233\175\356\230\131\123\367\216"
+  "\213\121\063\266\110\020\153\300\051\256\124\357\257\256\331\210"
+  "\062\340\337\211\155\133\016\032\054\040\374\217\202\110\277\100"
+  "\351\147\360\117\360\271\323\305\155\106\043\056\054\275\011\066"
+  "\275\137\045\320\164\230\060\255\357\155\110\226\163\336\120\277"
+  "\102\376\211\004\300\351\166\001\074\217\123\366\137\304\051\067"
+  "\147\337\154\254\337\224\351\347\343\113\366\253\137\301\233\125"
+  "\064\000\050\165\165\141\171\051\143\157\156\164\141\143\164\163"
+  "\055\143\157\156\164\141\143\164\055\160\141\156\145\056\165\151"
+  "\265\006\000\000\001\000\000\000\170\332\275\225\117\157\324\060"
+  "\020\305\357\375\024\326\134\121\232\224\126\300\041\161\045\220"
+  "\250\220\070\040\265\234\243\211\075\315\232\070\166\260\147\377"
+  "\361\351\361\146\263\155\241\352\166\051\013\247\130\316\233\314"
+  "\363\317\317\116\171\271\352\255\130\120\210\306\273\012\316\116"
+  "\013\020\344\224\327\306\265\025\174\275\371\230\275\203\113\171"
+  "\122\032\307\024\156\121\221\054\003\175\237\233\100\121\130\323"
+  "\124\320\162\367\012\356\077\160\176\372\272\200\134\226\114\375"
+  "\140\221\111\050\213\061\126\360\301\073\106\305\161\172\176\101"
+  "\107\040\006\014\344\270\202\053\356\256\323\154\007\262\034\202"
+  "\037\050\360\132\070\354\251\202\205\211\246\261\004\362\046\314"
+  "\251\314\167\157\237\322\145\152\146\254\006\351\274\243\072\222"
+  "\045\305\244\353\001\333\137\152\107\221\054\175\363\055\275\337"
+  "\031\114\036\256\202\321\040\214\256\340\161\375\313\255\055\215"
+  "\346\131\275\201\106\221\101\236\027\305\036\261\017\046\021\101"
+  "\116\054\101\046\250\154\024\332\075\372\031\255\006\164\372\171"
+  "\076\007\352\202\137\326\161\100\225\166\037\344\233\103\240\175"
+  "\352\377\212\216\121\336\325\233\041\110\134\040\143\310\064\335"
+  "\342\334\162\026\327\175\343\255\121\107\130\325\002\255\151\023"
+  "\120\162\172\217\152\060\053\262\165\064\077\222\227\263\213\213"
+  "\207\312\310\153\233\222\077\256\172\122\253\051\320\331\062\245"
+  "\074\364\030\272\115\354\363\111\231\157\071\245\301\304\355\051"
+  "\174\237\261\041\373\162\174\166\054\027\034\320\305\164\334\060"
+  "\325\124\260\246\010\362\172\114\257\100\061\031\375\217\041\332"
+  "\341\216\151\073\367\365\115\320\132\343\352\306\063\373\036\344"
+  "\333\342\270\310\357\046\122\236\273\024\350\107\375\267\261\333"
+  "\234\365\154\167\326\263\337\357\212\374\256\370\271\235\174\357"
+  "\127\333\313\143\262\131\307\031\021\377\351\345\161\240\351\251"
+  "\107\066\366\070\246\151\322\206\175\370\307\256\267\115\016\260"
+  "\235\357\176\043\151\170\377\007\072\371\011\375\121\163\311\000"
+  "\050\165\165\141\171\051\103\157\156\164\141\143\164\163\057\000"
+  "\006\000\000\000\023\000\000\000\157\162\147\057\007\000\000\000"
+  "\163\164\171\154\145\056\143\163\163\000\000\000\000\000\000\000"
+  "\254\004\000\000\001\000\000\000\170\332\215\223\115\157\333\060"
+  "\014\206\357\376\025\104\201\141\111\120\071\336\220\000\235\163"
+  "\351\060\154\075\155\073\264\367\102\261\150\133\253\054\011\022"
+  "\023\047\053\366\337\047\371\043\131\123\143\250\003\073\011\145"
+  "\075\057\371\222\132\056\022\130\300\335\217\237\337\277\302\027"
+  "\243\211\027\344\103\144\231\044\151\061\374\145\015\267\360\234"
+  "\100\270\266\274\170\252\234\331\151\301\012\243\214\313\341\226"
+  "\152\154\360\161\133\075\166\201\115\362\047\111\226\013\170\250"
+  "\021\306\375\040\065\204\267\100\141\111\140\271\306\210\077\323"
+  "\207\037\114\111\117\235\314\153\021\162\134\173\313\035\152\032"
+  "\005\076\203\227\272\122\010\316\264\243\300\100\202\216\064\012"
+  "\205\365\121\213\011\116\234\305\015\317\003\345\236\216\012\075"
+  "\224\306\001\077\225\077\174\177\063\256\231\316\264\214\053\323"
+  "\231\066\362\060\273\260\344\372\344\021\367\070\206\262\164\065"
+  "\357\112\071\323\375\256\252\320\223\064\272\147\033\047\320\061"
+  "\062\066\207\017\366\000\336\050\051\340\266\017\373\315\244\272"
+  "\257\271\300\327\372\131\372\151\076\372\166\047\367\330\231\305"
+  "\367\301\014\067\132\067\324\174\137\043\122\220\152\020\032\356"
+  "\052\251\257\343\164\170\003\222\100\030\364\372\075\301\257\135"
+  "\143\241\255\121\203\157\045\025\165\150\003\220\351\050\050\044"
+  "\031\227\116\273\346\073\366\071\076\044\020\153\355\265\162\130"
+  "\205\072\157\354\341\302\030\153\074\161\305\102\363\335\061\276"
+  "\076\070\343\270\220\073\237\103\326\177\066\247\205\126\012\252"
+  "\173\323\342\235\305\347\177\220\271\246\232\205\062\224\230\225"
+  "\322\171\232\117\150\304\304\126\035\053\173\033\111\361\151\120"
+  "\114\165\200\115\045\374\357\361\361\161\066\273\321\214\326\236"
+  "\233\015\127\055\047\164\301\263\247\053\220\015\257\102\057\103"
+  "\224\360\100\151\354\326\254\060\126\242\200\322\231\006\204\154"
+  "\230\342\133\124\363\227\115\071\041\072\377\215\345\205\244\143"
+  "\110\057\135\257\343\150\105\030\213\323\144\332\034\264\321\170"
+  "\121\165\337\273\120\274\065\173\164\160\076\140\322\133\305\217"
+  "\114\363\060\101\221\134\206\005\346\345\157\314\341\143\066\266"
+  "\141\330\275\335\021\275\034\366\321\245\165\366\056\146\141\271"
+  "\020\141\272\362\321\366\277\017\126\216\312\000\050\165\165\141"
+  "\171\051\143\157\156\164\141\143\164\163\055\154\151\156\153\055"
+  "\163\165\147\147\145\163\164\151\157\156\055\147\162\151\144\056"
+  "\165\151\000\000\000\000\000\000\350\011\000\000\001\000\000\000"
+  "\170\332\265\126\313\156\333\060\020\274\347\053\130\136\013\105"
+  "\261\013\024\075\110\012\220\002\011\012\344\226\364\054\254\250"
+  "\265\304\232\042\125\162\235\330\375\372\256\374\252\223\070\262"
+  "\352\126\067\221\032\356\153\226\263\114\256\227\215\021\117\350"
+  "\203\166\066\225\223\313\053\051\320\052\127\152\133\245\362\373"
+  "\343\155\364\105\136\147\027\211\266\204\176\006\012\263\344\103"
+  "\024\211\375\062\362\370\163\241\075\006\121\321\374\243\370\164"
+  "\071\235\212\050\312\022\302\246\065\100\050\224\201\020\122\371"
+  "\325\131\002\105\341\136\333\371\303\242\252\060\020\073\274\363"
+  "\272\224\242\005\217\226\122\171\107\363\365\106\226\264\336\265"
+  "\350\151\045\054\064\230\112\347\065\003\240\073\041\263\232\127"
+  "\277\072\153\046\211\167\270\067\047\236\164\320\205\101\231\075"
+  "\372\005\366\341\300\350\212\215\242\055\173\120\312\231\105\143"
+  "\363\320\202\342\262\310\354\363\041\126\325\332\224\131\342\212"
+  "\037\250\150\227\056\247\162\017\005\032\051\164\231\312\022\203"
+  "\362\272\355\342\317\315\172\173\344\200\353\055\052\020\170\352"
+  "\303\341\262\005\133\236\364\332\200\257\264\315\311\265\062\233"
+  "\114\173\200\317\036\332\223\326\072\120\336\270\222\263\175\166"
+  "\276\214\124\015\376\020\036\157\152\311\347\100\315\271\340\157"
+  "\014\030\234\121\016\304\015\125\163\074\075\236\070\340\075\356"
+  "\252\267\016\272\252\351\225\255\170\357\076\336\162\074\200\152"
+  "\134\222\207\134\333\231\073\311\364\055\230\060\204\352\223\044"
+  "\216\103\166\341\210\134\363\232\357\100\053\303\032\260\316\175"
+  "\213\057\165\023\155\162\215\271\124\133\300\070\034\116\306\343"
+  "\360\306\055\377\375\126\052\354\164\261\007\370\367\112\166\134"
+  "\164\316\275\237\275\334\036\307\256\333\152\220\173\354\232\153"
+  "\220\066\336\054\330\277\335\334\030\120\012\133\312\213\315\326"
+  "\370\024\154\132\125\360\065\265\201\047\024\260\361\124\256\060"
+  "\310\254\233\115\142\067\250\316\111\167\337\364\247\232\355\001"
+  "\171\346\001\071\177\176\276\057\072\211\347\067\151\365\262\217"
+  "\006\007\163\110\206\307\356\347\210\144\034\321\217\031\263\160"
+  "\050\035\357\305\371\255\201\012\317\217\111\053\236\276\335\047"
+  "\117\035\155\113\367\034\051\343\002\106\141\325\024\316\150\325"
+  "\133\273\367\067\006\351\333\364\077\316\250\151\277\276\305\273"
+  "\227\027\177\376\171\264\135\374\006\115\255\240\357\000\050\165"
+  "\165\141\171\051\143\157\156\164\141\143\164\163\055\167\151\156"
+  "\144\157\167\056\165\151\000\000\221\062\000\000\001\000\000\000"
+  "\170\332\355\133\301\162\333\066\020\275\347\053\130\036\162\351"
+  "\300\262\223\151\233\161\154\145\354\264\111\072\115\047\235\332"
+  "\235\036\071\040\271\242\120\101\000\013\200\222\225\351\241\247"
+  "\376\102\377\240\037\226\057\351\002\044\145\212\042\051\112\262"
+  "\345\270\323\233\110\054\026\213\207\335\305\303\202\072\173\165"
+  "\063\345\336\014\224\146\122\234\373\047\107\307\276\007\042\222"
+  "\061\023\311\271\377\313\365\033\362\302\177\065\174\162\306\204"
+  "\001\065\242\021\014\317\276\040\304\133\076\022\005\277\147\114"
+  "\201\366\022\063\371\322\173\176\364\354\231\107\310\360\114\206"
+  "\277\101\144\274\210\123\255\317\375\267\146\362\223\114\045\016"
+  "\343\173\054\076\367\307\164\032\146\052\001\025\114\101\144\101"
+  "\132\264\015\317\242\061\343\161\103\357\113\171\323\330\063\304"
+  "\367\303\263\124\311\024\224\131\170\202\116\341\334\237\061\315"
+  "\102\016\376\360\132\145\160\066\050\133\327\344\246\124\045\114"
+  "\370\303\223\147\035\102\122\061\020\206\032\204\307\037\242\221"
+  "\206\105\224\127\345\333\114\176\117\103\340\373\033\367\125\207"
+  "\314\230\162\226\240\214\066\124\231\016\071\356\114\361\214\242"
+  "\102\163\152\050\216\177\356\057\100\373\303\367\114\243\315\022"
+  "\047\030\031\355\205\213\323\252\026\152\214\142\141\146\100\127"
+  "\176\027\052\347\300\222\261\361\275\031\345\031\076\206\222\307"
+  "\376\140\135\114\043\130\260\224\072\076\172\141\205\006\125\305"
+  "\332\054\070\072\225\303\255\350\024\263\051\311\115\266\302\205"
+  "\300\040\007\030\177\024\200\267\341\376\243\214\201\137\146\306"
+  "\340\202\071\227\321\122\231\100\212\140\304\224\066\166\204\040"
+  "\314\133\167\136\033\003\067\246\021\316\067\166\010\047\324\321"
+  "\133\111\073\204\242\061\223\125\251\375\047\250\063\165\277\323"
+  "\273\312\007\270\307\271\135\101\112\025\065\122\371\055\001\101"
+  "\214\114\375\341\327\033\003\207\204\022\101\230\166\213\266\002"
+  "\262\323\132\254\251\217\050\072\235\214\062\275\073\342\257\307"
+  "\124\044\340\135\304\061\246\130\355\135\112\071\371\364\347\077"
+  "\035\232\060\216\061\123\021\373\340\017\151\232\036\105\116\003"
+  "\302\041\047\217\032\211\017\202\063\201\110\104\221\314\004\346"
+  "\252\247\334\274\324\131\372\064\061\057\077\375\365\267\175\032"
+  "\024\217\333\240\043\235\126\102\013\255\035\135\063\015\004\135"
+  "\153\222\245\033\347\260\077\230\377\207\301\352\342\377\000\213"
+  "\120\122\025\173\127\143\314\165\121\326\271\122\053\213\074\147"
+  "\342\110\217\345\234\214\201\247\304\262\014\116\027\217\032\213"
+  "\167\070\221\155\134\174\334\055\377\371\117\370\042\224\231\361"
+  "\136\027\044\145\233\251\123\333\363\116\346\336\376\302\300\064"
+  "\105\173\241\004\244\264\363\127\046\142\071\367\075\014\144\344"
+  "\217\016\250\213\064\345\310\036\255\221\105\153\027\134\157\050"
+  "\327\135\170\305\060\242\031\067\301\234\305\146\354\017\137\034"
+  "\037\367\020\036\347\264\155\370\165\247\064\103\106\030\344\060"
+  "\046\102\116\201\104\233\301\067\314\130\246\327\264\207\065\164"
+  "\326\310\133\051\057\272\116\140\101\122\273\277\021\230\041\126"
+  "\276\207\133\126\314\101\271\226\300\265\004\256\045\210\102\337"
+  "\313\201\137\007\232\216\214\355\142\207\364\364\034\227\037\220"
+  "\032\011\151\071\344\312\150\350\254\140\140\155\250\374\165\377"
+  "\161\120\163\175\030\347\032\236\131\244\045\034\041\265\011\174"
+  "\065\140\336\305\213\153\333\166\111\213\263\120\105\262\257\173"
+  "\066\106\042\052\176\017\164\204\263\050\116\112\100\143\120\273"
+  "\263\300\055\134\161\212\031\200\270\225\147\056\002\343\114\345"
+  "\007\046\057\104\320\210\226\231\212\254\106\104\322\242\153\017"
+  "\155\171\113\251\147\243\212\021\247\011\316\061\144\061\236\065"
+  "\135\230\123\376\207\136\210\210\104\012\060\372\054\374\165\373"
+  "\055\110\173\132\265\111\307\016\146\125\224\131\117\331\302\230"
+  "\346\236\175\114\150\313\334\357\234\213\054\075\221\303\310\146"
+  "\210\375\334\146\014\067\051\306\324\146\247\331\302\277\266\313"
+  "\055\265\316\166\367\017\042\056\365\355\301\250\127\074\331\252"
+  "\103\345\220\105\343\170\357\203\125\377\315\260\074\331\107\140"
+  "\013\055\135\133\130\137\101\043\045\067\054\015\332\217\032\316"
+  "\135\074\001\363\262\040\320\232\260\043\334\306\046\020\127\262"
+  "\047\366\012\212\136\273\147\116\127\124\302\121\210\173\264\373"
+  "\171\204\251\077\107\266\266\070\027\146\362\301\275\250\057\116"
+  "\100\315\044\027\135\137\246\145\247\323\323\133\325\071\135\150"
+  "\344\035\161\334\204\104\157\136\364\375\224\046\160\220\374\133"
+  "\331\257\071\323\206\040\034\104\057\246\241\304\165\332\324\115"
+  "\263\217\330\355\244\037\373\111\151\064\141\042\131\323\144\337"
+  "\007\056\051\255\327\242\006\313\116\033\211\044\210\254\032\162"
+  "\365\132\337\301\242\317\111\331\212\212\163\364\315\370\057\353"
+  "\227\315\165\315\076\251\346\101\234\005\337\013\142\055\155\364"
+  "\226\275\334\000\104\274\233\023\254\024\266\220\223\105\310\306"
+  "\250\210\200\157\136\377\055\166\234\073\166\200\366\002\353\153"
+  "\147\373\136\171\331\151\360\162\054\160\173\157\134\242\273\130"
+  "\221\215\312\052\031\006\267\170\330\155\175\157\113\033\025\226"
+  "\032\350\366\202\107\153\010\064\124\216\065\213\035\225\156\252"
+  "\033\267\315\212\162\056\347\244\335\211\372\117\255\106\247\224"
+  "\075\152\335\035\237\332\040\267\007\315\371\031\017\075\224\227"
+  "\167\063\241\165\031\125\276\072\104\106\252\023\333\241\346\270"
+  "\216\304\341\327\257\333\303\034\070\372\244\060\213\346\356\040"
+  "\366\146\167\266\072\231\011\164\064\133\316\154\010\225\156\366"
+  "\206\211\316\255\172\331\062\150\014\056\146\267\050\122\070\127"
+  "\045\302\366\046\157\047\047\013\322\214\123\037\232\166\211\075"
+  "\367\340\147\267\076\317\366\333\202\355\276\132\324\236\022\151"
+  "\353\031\063\046\063\335\227\207\221\255\170\130\353\213\076\056"
+  "\371\237\336\116\135\065\054\260\227\322\240\361\010\360\315\361"
+  "\116\321\265\022\057\102\032\066\132\234\236\226\300\254\304\115"
+  "\001\346\262\155\227\352\324\172\250\131\062\320\020\151\007\342"
+  "\341\125\147\201\230\231\317\331\125\356\356\374\373\035\316\324"
+  "\213\301\120\306\365\166\271\263\202\121\065\205\176\126\124\077"
+  "\306\036\310\364\015\261\306\076\330\341\160\347\123\301\265\114"
+  "\022\016\125\307\034\321\231\124\314\300\343\164\316\025\247\062"
+  "\156\162\065\247\252\315\057\050\205\076\067\307\262\171\106\101"
+  "\374\370\134\252\352\114\261\024\360\070\067\304\157\245\200\373"
+  "\337\016\357\145\207\272\253\003\151\121\243\353\161\046\335\235"
+  "\077\175\310\057\216\163\157\161\204\240\270\310\013\212\053\345"
+  "\373\011\273\136\027\075\325\123\316\041\202\037\105\211\236\263"
+  "\024\012\322\276\351\136\267\176\272\253\227\304\032\311\326\310"
+  "\176\120\266\232\020\335\233\175\157\377\112\375\153\067\073\052"
+  "\023\002\235\245\306\356\254\124\160\053\025\054\245\166\260\243"
+  "\265\042\142\054\214\371\015\014\323\046\260\176\034\150\263\327"
+  "\301\161\213\345\154\277\260\351\372\030\363\020\226\155\374\364"
+  "\262\073\331\075\357\274\343\036\313\251\114\100\200\154\112\327"
+  "\255\113\225\062\041\016\124\025\261\137\063\314\372\227\010\152"
+  "\331\264\367\175\122\103\156\057\157\373\311\234\242\260\375\350"
+  "\151\247\017\061\363\017\140\163\277\266\077\117\016\002\333\254"
+  "\347\067\261\275\157\330\072\076\236\225\324\176\046\175\267\150"
+  "\156\117\206\356\270\054\373\210\013\260\053\273\164\201\173\236"
+  "\116\335\003\073\124\350\266\326\154\037\200\321\014\312\017\224"
+  "\232\026\035\271\370\133\045\263\264\162\377\237\357\076\330\020"
+  "\044\256\245\361\143\017\177\070\306\344\374\321\232\271\222\220"
+  "\061\003\047\140\164\371\243\214\240\312\167\005\203\172\133\155"
+  "\307\263\216\263\324\262\234\314\046\313\363\122\373\075\230\276"
+  "\122\303\257\333\336\342\141\175\246\200\034\056\277\055\250\114"
+  "\242\270\012\051\155\317\037\061\230\164\345\167\063\242\365\346"
+  "\272\325\203\252\256\166\213\256\054\251\253\030\344\110\336\322"
+  "\036\367\144\263\237\256\374\136\072\174\071\124\275\245\112\116"
+  "\135\122\250\150\271\365\325\333\177\227\074\371\027\314\325\222"
+  "\360\000\050\165\165\141\171\051\165\151\057\000\013\000\000\000"
+  "\003\000\000\000\010\000\000\000\012\000\000\000\015\000\000\000"
+  "\005\000\000\000\001\000\000\000\021\000\000\000\002\000\000\000"
+  "\014\000\000\000\004\000\000\000\022\000\000\000\020\000\000\000"
+  "" };
+#endif /* !_MSC_VER */
+
+static GStaticResource static_resource = { resources_resource_data.data, sizeof 
(resources_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
+G_GNUC_INTERNAL GResource *resources_get_resource (void);
+GResource *resources_get_resource (void)
+{
+  return g_static_resource_get_resource (&static_resource);
+}
+/*
+  If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
+  destructors, in a sane way, including e.g. on library unload. If not you're on
+  your own.
+
+  Some compilers need #pragma to handle this, which does not work with macros,
+  so the way you need to use this is (for constructors):
+
+  #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
+  #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(my_constructor)
+  #endif
+  G_DEFINE_CONSTRUCTOR(my_constructor)
+  static void my_constructor(void) {
+   ...
+  }
+
+*/
+
+#ifndef __GTK_DOC_IGNORE__
+
+#if  __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+
+#define G_HAS_CONSTRUCTORS 1
+
+#define G_DEFINE_CONSTRUCTOR(_func) static void __attribute__((constructor)) _func (void);
+#define G_DEFINE_DESTRUCTOR(_func) static void __attribute__((destructor)) _func (void);
+
+#elif defined (_MSC_VER) && (_MSC_VER >= 1500)
+/* Visual studio 2008 and later has _Pragma */
+
+#include <stdlib.h>
+
+#define G_HAS_CONSTRUCTORS 1
+
+/* We do some weird things to avoid the constructors being optimized
+ * away on VS2015 if WholeProgramOptimization is enabled. First we
+ * make a reference to the array from the wrapper to make sure its
+ * references. Then we use a pragma to make sure the wrapper function
+ * symbol is always included at the link stage. Also, the symbols
+ * need to be extern (but not dllexport), even though they are not
+ * really used from another object file.
+ */
+
+/* We need to account for differences between the mangling of symbols
+ * for Win32 (x86) and x64 programs, as symbols on Win32 are prefixed
+ * with an underscore but symbols on x64 are not.
+ */
+#ifdef _WIN64
+#define G_MSVC_SYMBOL_PREFIX ""
+#else
+#define G_MSVC_SYMBOL_PREFIX "_"
+#endif
+
+#define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX)
+#define G_DEFINE_DESTRUCTOR(_func) G_MSVC_DTOR (_func, G_MSVC_SYMBOL_PREFIX)
+
+#define G_MSVC_CTOR(_func,_sym_prefix) \
+  static void _func(void); \
+  extern int (* _array ## _func)(void);              \
+  int _func ## _wrapper(void) { _func(); g_slist_find (NULL,  _array ## _func); return 0; } \
+  __pragma(comment(linker,"/include:" _sym_prefix # _func "_wrapper")) \
+  __pragma(section(".CRT$XCU",read)) \
+  __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _wrapper;
+
+#define G_MSVC_DTOR(_func,_sym_prefix) \
+  static void _func(void); \
+  extern int (* _array ## _func)(void);              \
+  int _func ## _constructor(void) { atexit (_func); g_slist_find (NULL,  _array ## _func); return 0; } \
+   __pragma(comment(linker,"/include:" _sym_prefix # _func "_constructor")) \
+  __pragma(section(".CRT$XCU",read)) \
+  __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _constructor;
+
+#elif defined (_MSC_VER)
+
+#define G_HAS_CONSTRUCTORS 1
+
+/* Pre Visual studio 2008 must use #pragma section */
+#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1
+#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1
+
+#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \
+  section(".CRT$XCU",read)
+#define G_DEFINE_CONSTRUCTOR(_func) \
+  static void _func(void); \
+  static int _func ## _wrapper(void) { _func(); return 0; } \
+  __declspec(allocate(".CRT$XCU")) static int (*p)(void) = _func ## _wrapper;
+
+#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \
+  section(".CRT$XCU",read)
+#define G_DEFINE_DESTRUCTOR(_func) \
+  static void _func(void); \
+  static int _func ## _constructor(void) { atexit (_func); return 0; } \
+  __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor;
+
+#elif defined(__SUNPRO_C)
+
+/* This is not tested, but i believe it should work, based on:
+ * http://opensource.apple.com/source/OpenSSL098/OpenSSL098-35/src/fips/fips_premain.c
+ */
+
+#define G_HAS_CONSTRUCTORS 1
+
+#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1
+#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1
+
+#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \
+  init(_func)
+#define G_DEFINE_CONSTRUCTOR(_func) \
+  static void _func(void);
+
+#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \
+  fini(_func)
+#define G_DEFINE_DESTRUCTOR(_func) \
+  static void _func(void);
+
+#else
+
+/* constructors not supported for this compiler */
+
+#endif
+
+#endif /* __GTK_DOC_IGNORE__ */
+
+#ifdef G_HAS_CONSTRUCTORS
+
+#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
+#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(resource_constructor)
+#endif
+G_DEFINE_CONSTRUCTOR(resource_constructor)
+#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA
+#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(resource_destructor)
+#endif
+G_DEFINE_DESTRUCTOR(resource_destructor)
+
+#else
+#warning "Constructor not supported on this compiler, linking in resources will not work"
+#endif
+
+static void resource_constructor (void)
+{
+  g_static_resource_init (&static_resource);
+}
+
+static void resource_destructor (void)
+{
+  g_static_resource_fini (&static_resource);
+}
diff --git a/_build/data/org.gnome.Contacts.desktop.in b/_build/data/org.gnome.Contacts.desktop.in
new file mode 100644
index 0000000..3b79278
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.desktop.in
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Name=Contacts
+Comment=A contacts manager for GNOME
+# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list 
MUST also end with a semicolon!
+Keywords=friends;address book;
+# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+Icon=org.gnome.Contacts.Devel
+Exec=gnome-contacts
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=GNOME;GTK;Office;ContactManagement;
+OnlyShowIn=GNOME;Unity;
+DBusActivatable=true
diff --git a/_build/data/org.gnome.Contacts.h b/_build/data/org.gnome.Contacts.h
new file mode 100644
index 0000000..2b5cd66
--- /dev/null
+++ b/_build/data/org.gnome.Contacts.h
@@ -0,0 +1,7 @@
+#ifndef __RESOURCE_resources_H__
+#define __RESOURCE_resources_H__
+
+#include <gio/gio.h>
+
+G_GNUC_INTERNAL GResource *resources_get_resource (void);
+#endif
diff --git a/_build/man/gnome-contacts.1 b/_build/man/gnome-contacts.1
new file mode 100644
index 0000000..0adfd66
--- /dev/null
+++ b/_build/man/gnome-contacts.1
@@ -0,0 +1,110 @@
+'\" t
+.\"     Title: gnome-contacts
+.\"    Author: Alexander Larsson <alexl redhat com>
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\"      Date: 01/09/2020
+.\"    Manual: User Commands
+.\"    Source: GNOME
+.\"  Language: English
+.\"
+.TH "GNOME\-CONTACTS" "1" "" "GNOME" "User Commands"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+
+
+        
+
+        
+
+        .SH "NAME"
+gnome-contacts \- Access and store information about contacts
+
+
+        .SH "SYNOPSIS"
+
+                .HP \w'\fBgnome\-contacts\ \fR\fB[OPTION...]\fR\ 'u
+
+                        \fBgnome\-contacts \fR\fB[OPTION...]\fR
+                
+
+        
+
+        .SH "DESCRIPTION"
+
+                
+
+                .PP
+\fBgnome\-contacts\fR
+is a graphical user interface to access and store information about your contacts\&.
+
+
+                .PP
+gnome\-contacts uses the folks library to pull together contact information from various sources, including 
telepathy, evolution\-data\-server, your configured GNOME online accounts, etc\&.
+
+        
+
+        .SH "OPTIONS"
+
+                
+
+                
+
+                        .PP
+\fB\-?\fR, \fB\-\-help\fR
+.RS 4
+
+                                
+
+                                Prints a short help text and exits\&.
+
+                        .RE
+
+                        .PP
+\fB\-e\fR, \fB\-\-email\fR
+.RS 4
+
+                                
+
+                                Show contact with this email address\&.
+
+                        .RE
+
+                        .PP
+\fB\-i\fR, \fB\-\-individual\fR
+.RS 4
+
+                                
+
+                                Show contact with this individual id\&.
+
+                        .RE
+
+                        .PP
+\fB\-v\fR, \fB\-\-version\fR
+.RS 4
+
+                                
+
+                                Show the current version of Contacts\&.
+
+                        .RE
+                
+        
+
diff --git a/_build/meson-info/intro-benchmarks.json b/_build/meson-info/intro-benchmarks.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/_build/meson-info/intro-benchmarks.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/_build/meson-info/intro-buildoptions.json b/_build/meson-info/intro-buildoptions.json
new file mode 100644
index 0000000..98a100b
--- /dev/null
+++ b/_build/meson-info/intro-buildoptions.json
@@ -0,0 +1 @@
+[{"name": "auto_features", "value": "auto", "section": "core", "machine": "any", "choices": ["enabled", 
"disabled", "auto"], "type": "combo", "description": "Override value of all 'auto' features"}, {"name": 
"backend", "value": "ninja", "section": "core", "machine": "any", "choices": ["ninja", "vs", "vs2010", 
"vs2015", "vs2017", "vs2019", "xcode"], "type": "combo", "description": "Backend to use"}, {"name": 
"buildtype", "value": "debug", "section": "core", "machine": "any", "choices": ["plain", "debug", 
"debugoptimized", "release", "minsize", "custom"], "type": "combo", "description": "Build type to use"}, 
{"name": "debug", "value": true, "section": "core", "machine": "any", "type": "boolean", "description": 
"Debug"}, {"name": "default_library", "value": "shared", "section": "core", "machine": "any", "choices": 
["shared", "static", "both"], "type": "combo", "description": "Default library type"}, {"name": 
"install_umask", "value": 18, "section": "core", "machine": "any", "ty
 pe": "in
 teger", "description": "Default umask to apply on permissions of installed files"}, {"name": "layout", 
"value": "mirror", "section": "core", "machine": "any", "choices": ["mirror", "flat"], "type": "combo", 
"description": "Build directory layout"}, {"name": "optimization", "value": "0", "section": "core", 
"machine": "any", "choices": ["0", "g", "1", "2", "3", "s"], "type": "combo", "description": "Optimization 
level"}, {"name": "strip", "value": false, "section": "core", "machine": "any", "type": "boolean", 
"description": "Strip targets on install"}, {"name": "unity", "value": "off", "section": "core", "machine": 
"any", "choices": ["on", "off", "subprojects"], "type": "combo", "description": "Unity build"}, {"name": 
"warning_level", "value": "1", "section": "core", "machine": "any", "choices": ["0", "1", "2", "3"], "type": 
"combo", "description": "Compiler warning level to use"}, {"name": "werror", "value": false, "section": 
"core", "machine": "any", "type": "boolean", "desc
 ription"
 : "Treat warnings as errors"}, {"name": "wrap_mode", "value": "default", "section": "core", "machine": 
"any", "choices": ["default", "nofallback", "nodownload", "forcefallback"], "type": "combo", "description": 
"Wrap mode"}, {"name": "cmake_prefix_path", "value": [], "section": "core", "machine": "host", "type": 
"array", "description": "List of additional prefixes for cmake to search"}, {"name": "pkg_config_path", 
"value": ["/app/lib/pkgconfig", "/app/share/pkgconfig", "/usr/lib/pkgconfig", "/usr/share/pkgconfig"], 
"section": "core", "machine": "host", "type": "array", "description": "List of additional paths for 
pkg-config to search"}, {"name": "build.cmake_prefix_path", "value": [], "section": "core", "machine": 
"build", "type": "array", "description": "List of additional prefixes for cmake to search"}, {"name": 
"build.pkg_config_path", "value": ["/app/lib/pkgconfig", "/app/share/pkgconfig", "/usr/lib/pkgconfig", 
"/usr/share/pkgconfig"], "section": "core", "machine": "buil
 d", "typ
 e": "array", "description": "List of additional paths for pkg-config to search"}, {"name": 
"backend_max_links", "value": 0, "section": "backend", "machine": "any", "type": "integer", "description": 
"Maximum number of linker processes to run or 0 for no limit"}, {"name": "b_asneeded", "value": true, 
"section": "base", "machine": "any", "type": "boolean", "description": "Use -Wl,--as-needed when linking"}, 
{"name": "b_colorout", "value": "always", "section": "base", "machine": "any", "choices": ["auto", "always", 
"never"], "type": "combo", "description": "Use colored output"}, {"name": "b_coverage", "value": false, 
"section": "base", "machine": "any", "type": "boolean", "description": "Enable coverage tracking."}, {"name": 
"b_lto", "value": false, "section": "base", "machine": "any", "type": "boolean", "description": "Use link 
time optimization"}, {"name": "b_lundef", "value": true, "section": "base", "machine": "any", "type": 
"boolean", "description": "Use -Wl,--no-undefined 
 when lin
 king"}, {"name": "b_ndebug", "value": "false", "section": "base", "machine": "any", "choices": ["true", 
"false", "if-release"], "type": "combo", "description": "Disable asserts"}, {"name": "b_pch", "value": true, 
"section": "base", "machine": "any", "type": "boolean", "description": "Use precompiled headers"}, {"name": 
"b_pgo", "value": "off", "section": "base", "machine": "any", "choices": ["off", "generate", "use"], "type": 
"combo", "description": "Use profile guided optimization"}, {"name": "b_pie", "value": false, "section": 
"base", "machine": "any", "type": "boolean", "description": "Build executables as position independent"}, 
{"name": "b_sanitize", "value": "none", "section": "base", "machine": "any", "choices": ["none", "address", 
"thread", "undefined", "memory", "address,undefined"], "type": "combo", "description": "Code sanitizer to 
use"}, {"name": "b_staticpic", "value": true, "section": "base", "machine": "any", "type": "boolean", 
"description": "Build static lib
 raries a
 s position independent"}, {"name": "c_args", "value": [], "section": "compiler", "machine": "host", "type": 
"array", "description": "Extra arguments passed to the C compiler"}, {"name": "c_link_args", "value": 
["-L/app/lib"], "section": "compiler", "machine": "host", "type": "array", "description": "Extra arguments 
passed to the C linker"}, {"name": "c_std", "value": "none", "section": "compiler", "machine": "host", 
"choices": ["none", "c89", "c99", "c11", "c17", "c18", "gnu89", "gnu99", "gnu11", "gnu17", "gnu18"], "type": 
"combo", "description": "C language standard to use"}, {"name": "vala_args", "value": [], "section": 
"compiler", "machine": "host", "type": "array", "description": "Extra arguments passed to the Vala 
compiler"}, {"name": "vala_link_args", "value": [], "section": "compiler", "machine": "host", "type": 
"array", "description": "Extra arguments passed to the Vala linker"}, {"name": "build.c_args", "value": [], 
"section": "compiler", "machine": "build", "type":
  "array"
 , "description": "Extra arguments passed to the C compiler"}, {"name": "build.c_link_args", "value": 
["-L/app/lib"], "section": "compiler", "machine": "build", "type": "array", "description": "Extra arguments 
passed to the C linker"}, {"name": "build.c_std", "value": "none", "section": "compiler", "machine": "build", 
"choices": ["none", "c89", "c99", "c11", "c17", "c18", "gnu89", "gnu99", "gnu11", "gnu17", "gnu18"], "type": 
"combo", "description": "C language standard to use"}, {"name": "build.vala_args", "value": [], "section": 
"compiler", "machine": "build", "type": "array", "description": "Extra arguments passed to the Vala 
compiler"}, {"name": "build.vala_link_args", "value": [], "section": "compiler", "machine": "build", "type": 
"array", "description": "Extra arguments passed to the Vala linker"}, {"name": "bindir", "value": "bin", 
"section": "directory", "machine": "any", "type": "string", "description": "Executable directory"}, {"name": 
"datadir", "value": "share", "s
 ection":
  "directory", "machine": "any", "type": "string", "description": "Data file directory"}, {"name": 
"includedir", "value": "include", "section": "directory", "machine": "any", "type": "string", "description": 
"Header file directory"}, {"name": "infodir", "value": "share/info", "section": "directory", "machine": 
"any", "type": "string", "description": "Info page directory"}, {"name": "libdir", "value": "lib", "section": 
"directory", "machine": "any", "type": "string", "description": "Library directory"}, {"name": "libexecdir", 
"value": "libexec", "section": "directory", "machine": "any", "type": "string", "description": "Library 
executable directory"}, {"name": "localedir", "value": "share/locale", "section": "directory", "machine": 
"any", "type": "string", "description": "Locale data directory"}, {"name": "localstatedir", "value": "var", 
"section": "directory", "machine": "any", "type": "string", "description": "Localstate data directory"}, 
{"name": "mandir", "value": "share/m
 an", "se
 ction": "directory", "machine": "any", "type": "string", "description": "Manual page directory"}, {"name": 
"prefix", "value": "/app", "section": "directory", "machine": "any", "type": "string", "description": 
"Installation prefix"}, {"name": "sbindir", "value": "sbin", "section": "directory", "machine": "any", 
"type": "string", "description": "System executable directory"}, {"name": "sharedstatedir", "value": "com", 
"section": "directory", "machine": "any", "type": "string", "description": "Architecture-independent data 
directory"}, {"name": "sysconfdir", "value": "etc", "section": "directory", "machine": "any", "type": 
"string", "description": "Sysconf data directory"}, {"name": "cheese", "value": true, "section": "user", 
"machine": "any", "type": "boolean", "description": "Enable cheese webcam support."}, {"name": "docs", 
"value": false, "section": "user", "machine": "any", "type": "boolean", "description": "Whether to build the 
valadoc docs."}, {"name": "manpage", "value"
 : true, 
 "section": "user", "machine": "any", "type": "boolean", "description": "Enable building man pages."}, 
{"name": "profile", "value": "development", "section": "user", "machine": "any", "choices": ["default", 
"development"], "type": "combo", "description": "Indicate whether this is a nightly build (used for CI 
purposes)"}, {"name": "telepathy", "value": false, "section": "user", "machine": "any", "type": "boolean", 
"description": "Enable Telepathy call/chat support."}, {"name": "errorlogs", "value": true, "section": 
"test", "machine": "any", "type": "boolean", "description": "Whether to print the logs from failing tests"}, 
{"name": "stdsplit", "value": true, "section": "test", "machine": "any", "type": "boolean", "description": 
"Split stdout and stderr in test logs"}]
\ No newline at end of file
diff --git a/_build/meson-info/intro-buildsystem_files.json b/_build/meson-info/intro-buildsystem_files.json
new file mode 100644
index 0000000..568b8d4
--- /dev/null
+++ b/_build/meson-info/intro-buildsystem_files.json
@@ -0,0 +1 @@
+["/home/julian/playground/gnome-contacts/meson.build", 
"/home/julian/playground/gnome-contacts/meson_options.txt", 
"/home/julian/playground/gnome-contacts/src/meson.build", 
"/home/julian/playground/gnome-contacts/data/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/meson_options.txt", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/src/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/examples/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/doc/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/doc/xml/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/tests/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/po/meson.build", 
"/home/julian/playground/gnome-contacts/subprojects/libhandy/glade/meson.build", 
"/home/julian/playground/gnome-conta
 cts/man/
 meson.build", "/home/julian/playground/gnome-contacts/docs/meson.build", 
"/home/julian/playground/gnome-contacts/tests/meson.build", 
"/home/julian/playground/gnome-contacts/po/meson.build"]
\ No newline at end of file
diff --git a/_build/meson-info/intro-dependencies.json b/_build/meson-info/intro-dependencies.json
new file mode 100644
index 0000000..16e42de
--- /dev/null
+++ b/_build/meson-info/intro-dependencies.json
@@ -0,0 +1 @@
+[{"name": "folks", "compile_args": ["-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-I/app/include/gee-0.8"], "link_args": ["/app/lib/libfolks.so", "/app/lib/libgee-0.8.so", 
"/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", "/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": 
"folks-eds", "compile_args": ["-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/app/include/gee-0.8", 
"-I/app/include/evolution-data-server", "-I/usr/include/libmount", "-I/usr/include/blkid", 
"-I/usr/include/libsecret-1", "-I/usr/include/gio-unix-2.0", "-I/usr/include/libxml2", 
"-I/usr/include/libsoup-2.4", "-I/usr/include/nss", "-pthread"], "link_args": ["/app/lib/libfolks-eds.so", 
"/app/lib/libfolks.so", "/app/lib/libgee-0.8.so", "/app/lib/libebook-1.2.so", 
"/app/lib/libedata-book-1.2.so", "/app/lib/libebackend-1.2.so", "/app/lib/libebook-cont
 acts-1.2
 .so", "/app/lib/libedataserver-1.2.so", "-Wl,--export-dynamic", "-pthread", 
"/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so", "/usr/lib/x86_64-linux-gnu/libsecret-1.so", 
"/usr/lib/x86_64-linux-gnu/libxml2.so", "/usr/lib/x86_64-linux-gnu/libsoup-2.4.so", 
"/usr/lib/x86_64-linux-gnu/libgio-2.0.so", "/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "gee-0.8", "compile_args": ["-I/app/include/gee-0.8", 
"-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include"], "link_args": ["/app/lib/libgee-0.8.so", 
"/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", "/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": 
"gio-unix-2.0", "compile_args": ["-I/usr/include/gio-unix-2.0", "-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-pthread", "-I/usr/include/libmount", "-I/usr/include/blkid"], "link_args": [
 "/usr/li
 b/x86_64-linux-gnu/libgio-2.0.so", "/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "glib-2.0", "compile_args": 
["-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include"], "link_args": 
["/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "gmodule-export-2.0", "compile_args": ["-pthread", 
"-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include"], "link_args": 
["-Wl,--export-dynamic", "-pthread", "/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "gnome-desktop-3.0", "compile_args": 
["-I/app/include/gnome-desktop-3.0", "-I/usr/include/gtk-3.0", "-I/usr/include/pango-1.0", 
"-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/usr/include/harfbuzz", "-I/usr/include/libmount", 
"-I/usr/include/blkid", "-I/usr/include/fribidi", "-I/usr/include/freetype2", "-I/usr/incl
 ude/libp
 ng16", "-I/usr/include/cairo", "-I/usr/include/pixman-1", "-I/usr/include/gdk-pixbuf-2.0", 
"-I/usr/include/gio-unix-2.0", "-I/usr/include/atk-1.0", "-I/usr/include/at-spi2-atk/2.0", 
"-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", "-I/usr/include/at-spi-2.0", 
"-I/usr/include/gsettings-desktop-schemas", "-pthread"], "link_args": ["/app/lib/libgnome-desktop-3.so", 
"/usr/lib/x86_64-linux-gnu/libgtk-3.so", "/usr/lib/x86_64-linux-gnu/libgdk-3.so", 
"/usr/lib/x86_64-linux-gnu/libz.so", "/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libpango-1.0.so", "/usr/lib/x86_64-linux-gnu/libharfbuzz.so", 
"/usr/lib/x86_64-linux-gnu/libatk-1.0.so", "/usr/lib/x86_64-linux-gnu/libcairo-gobject.so", 
"/usr/lib/x86_64-linux-gnu/libcairo.so", "/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgio-2.0.so", "/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "goa-1.0", "
 compile_
 args": ["-I/app/include/goa-1.0", "-I/app/lib/goa-1.0/include", "-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-pthread", "-I/usr/include/libmount", "-I/usr/include/blkid"], "link_args": ["/app/lib/libgoa-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libgio-2.0.so", "/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "gtk+-3.0", "compile_args": ["-I/usr/include/gtk-3.0", 
"-I/usr/include/pango-1.0", "-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/usr/include/harfbuzz", "-I/usr/include/libmount", 
"-I/usr/include/blkid", "-I/usr/include/fribidi", "-I/usr/include/freetype2", "-I/usr/include/libpng16", 
"-I/usr/include/cairo", "-I/usr/include/pixman-1", "-I/usr/include/gdk-pixbuf-2.0", 
"-I/usr/include/gio-unix-2.0", "-I/usr/include/atk-1.0", "-I/usr/include/at-spi2-atk/2.0", "-I/u
 sr/inclu
 de/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", "-I/usr/include/at-spi-2.0", "-pthread"], 
"link_args": ["/usr/lib/x86_64-linux-gnu/libgtk-3.so", "/usr/lib/x86_64-linux-gnu/libgdk-3.so", 
"/usr/lib/x86_64-linux-gnu/libz.so", "/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libpango-1.0.so", "/usr/lib/x86_64-linux-gnu/libharfbuzz.so", 
"/usr/lib/x86_64-linux-gnu/libatk-1.0.so", "/usr/lib/x86_64-linux-gnu/libcairo-gobject.so", 
"/usr/lib/x86_64-linux-gnu/libcairo.so", "/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgio-2.0.so", "/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "libebook-1.2", "compile_args": 
["-I/app/include/evolution-data-server", "-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-I/usr/include/libmount", "-I/usr/include/blkid", "-I/usr/include/libsecret-1", "-I/
 usr/incl
 ude/gio-unix-2.0", "-I/usr/include/libxml2", "-I/usr/include/libsoup-2.4", "-I/usr/include/nss", 
"-pthread"], "link_args": ["/app/lib/libebook-1.2.so", "/app/lib/libedata-book-1.2.so", 
"/app/lib/libebackend-1.2.so", "/app/lib/libebook-contacts-1.2.so", "/app/lib/libedataserver-1.2.so", 
"-Wl,--export-dynamic", "-pthread", "/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libsecret-1.so", "/usr/lib/x86_64-linux-gnu/libxml2.so", 
"/usr/lib/x86_64-linux-gnu/libsoup-2.4.so", "/usr/lib/x86_64-linux-gnu/libgio-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", "/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": 
"libedataserver-1.2", "compile_args": ["-I/app/include/evolution-data-server", "-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-I/usr/include/libmount", "-I/usr/include/blkid", "-I/usr/include/libsecret-1", 
"-I/usr/include/gio-unix-2.0", "-I/usr/include/libxml2", "-
 I/usr/in
 clude/libsoup-2.4", "-pthread", "-I/usr/include/nss"], "link_args": ["/app/lib/libedataserver-1.2.so", 
"-Wl,--export-dynamic", "-pthread", "/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libsecret-1.so", "/usr/lib/x86_64-linux-gnu/libxml2.so", 
"/usr/lib/x86_64-linux-gnu/libsoup-2.4.so", "/usr/lib/x86_64-linux-gnu/libgio-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", "/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": 
"libedataserverui-1.2", "compile_args": ["-I/app/include/evolution-data-server", "-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-I/usr/include/libmount", "-I/usr/include/blkid", "-I/usr/include/libsecret-1", 
"-I/usr/include/gio-unix-2.0", "-I/usr/include/libxml2", "-I/usr/include/libsoup-2.4", 
"-I/usr/include/gtk-3.0", "-I/usr/include/pango-1.0", "-I/usr/include/harfbuzz", "-I/usr/include/fribidi", 
"-I/usr/include/freetype2", "-I/usr/include/lib
 png16", 
 "-I/usr/include/cairo", "-I/usr/include/pixman-1", "-I/usr/include/gdk-pixbuf-2.0", 
"-I/usr/include/atk-1.0", "-I/usr/include/at-spi2-atk/2.0", "-I/usr/include/dbus-1.0", 
"-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", "-I/usr/include/at-spi-2.0", "-I/usr/include/nss", 
"-pthread"], "link_args": ["/app/lib/libedataserverui-1.2.so", "/usr/lib/x86_64-linux-gnu/libgtk-3.so", 
"/usr/lib/x86_64-linux-gnu/libgdk-3.so", "/usr/lib/x86_64-linux-gnu/libz.so", 
"/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so", "/usr/lib/x86_64-linux-gnu/libpango-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libharfbuzz.so", "/usr/lib/x86_64-linux-gnu/libatk-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libcairo-gobject.so", "/usr/lib/x86_64-linux-gnu/libcairo.so", 
"/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so", "/app/lib/libecal-2.0.so", "/app/lib/libical-glib.so", 
"/app/lib/libical.so", "/app/lib/libicalss.so", "/app/lib/libicalvcal.so", "/app/lib/libedataserver-1.2.so", 
"-Wl,--export-dynamic", "-pthread", "/usr/lib/x86_6
 4-linux-
 gnu/libgmodule-2.0.so", "/usr/lib/x86_64-linux-gnu/libsecret-1.so", "/usr/lib/x86_64-linux-gnu/libxml2.so", 
"/usr/lib/x86_64-linux-gnu/libsoup-2.4.so", "/usr/lib/x86_64-linux-gnu/libgio-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", "/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": 
"cheese", "compile_args": ["-I/app/include/cheese", "-I/usr/include/clutter-1.0", "-I/usr/include/cogl", 
"-I/usr/include/cairo", "-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/usr/include/pixman-1", "-I/usr/include/freetype2", 
"-I/usr/include/libpng16", "-I/usr/include/harfbuzz", "-I/usr/include/gdk-pixbuf-2.0", 
"-I/usr/include/libmount", "-I/usr/include/blkid", "-I/usr/include/atk-1.0", "-I/usr/include/pango-1.0", 
"-I/usr/include/fribidi", "-I/usr/include/json-glib-1.0", "-I/usr/include/gtk-3.0", 
"-I/usr/include/gio-unix-2.0", "-I/usr/include/gstreamer-1.0", "-I/usr/include/clutter-gst-3.0", "-I/usr/
 include/
 orc-0.4", "-pthread"], "link_args": ["/app/lib/libcheese.so", "/usr/lib/x86_64-linux-gnu/libclutter-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libcogl-path.so", "/usr/lib/x86_64-linux-gnu/libatk-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libcogl-pango.so", "/usr/lib/x86_64-linux-gnu/libcogl.so", "-pthread", 
"/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so", "/usr/lib/x86_64-linux-gnu/libwayland-egl.so", 
"/usr/lib/x86_64-linux-gnu/libEGL.so", "/usr/lib/x86_64-linux-gnu/libXrandr.so", 
"/usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so", "/usr/lib/x86_64-linux-gnu/libgdk-3.so", 
"/usr/lib/x86_64-linux-gnu/libz.so", "/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libpango-1.0.so", "/usr/lib/x86_64-linux-gnu/libharfbuzz.so", 
"/usr/lib/x86_64-linux-gnu/libcairo-gobject.so", "/usr/lib/x86_64-linux-gnu/libcairo.so", 
"/usr/lib/x86_64-linux-gnu/libwayland-cursor.so", "/usr/lib/x86_64-linux-gnu/libwayland-client.so", 
"/usr/lib/x86_64-linux-gnu/libxkbcommon.so", "/usr/lib/x86_64-l
 inux-gnu
 /libwayland-server.so", "/usr/lib/x86_64-linux-gnu/libX11.so", "/usr/lib/x86_64-linux-gnu/libXext.so", 
"/usr/lib/x86_64-linux-gnu/libXdamage.so", "/usr/lib/x86_64-linux-gnu/libXfixes.so", 
"/usr/lib/x86_64-linux-gnu/libXcomposite.so", "/usr/lib/x86_64-linux-gnu/libXi.so", 
"/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so", "/usr/lib/x86_64-linux-gnu/libgio-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so", "/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": "cheese-gtk", "compile_args": 
["-I/app/include/cheese", "-I/usr/include/clutter-gtk-1.0", "-I/usr/include/clutter-1.0", 
"-I/usr/include/cogl", "-I/usr/include/cairo", "-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-I/usr/include/pixman-1", "-I/usr/include/freetype2", "-I/usr/include/libpng16", "-I/usr/include/harfbuzz", 
"-I/usr/include/gdk-pixbuf-2.0", "-I/usr/include/libmount", "-I/usr/in
 clude/bl
 kid", "-I/usr/include/atk-1.0", "-I/usr/include/pango-1.0", "-I/usr/include/fribidi", 
"-I/usr/include/json-glib-1.0", "-I/usr/include/gtk-3.0", "-I/usr/include/gio-unix-2.0", 
"-I/usr/include/at-spi2-atk/2.0", "-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", 
"-I/usr/include/at-spi-2.0", "-pthread"], "link_args": ["/app/lib/libcheese-gtk.so", 
"/usr/lib/x86_64-linux-gnu/libclutter-gtk-1.0.so", "/usr/lib/x86_64-linux-gnu/libclutter-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libcogl-path.so", "/usr/lib/x86_64-linux-gnu/libcogl-pango.so", 
"/usr/lib/x86_64-linux-gnu/libcogl.so", "-pthread", "/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libwayland-egl.so", "/usr/lib/x86_64-linux-gnu/libEGL.so", 
"/usr/lib/x86_64-linux-gnu/libXrandr.so", "/usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libwayland-cursor.so", "/usr/lib/x86_64-linux-gnu/libwayland-client.so", 
"/usr/lib/x86_64-linux-gnu/libxkbcommon.so", "/usr/lib/
 x86_64-l
 inux-gnu/libwayland-server.so", "/usr/lib/x86_64-linux-gnu/libX11.so", 
"/usr/lib/x86_64-linux-gnu/libXext.so", "/usr/lib/x86_64-linux-gnu/libXdamage.so", 
"/usr/lib/x86_64-linux-gnu/libXfixes.so", "/usr/lib/x86_64-linux-gnu/libXcomposite.so", 
"/usr/lib/x86_64-linux-gnu/libXi.so", "/usr/lib/x86_64-linux-gnu/libgtk-3.so", 
"/usr/lib/x86_64-linux-gnu/libgdk-3.so", "/usr/lib/x86_64-linux-gnu/libz.so", 
"/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so", "/usr/lib/x86_64-linux-gnu/libpango-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libharfbuzz.so", "/usr/lib/x86_64-linux-gnu/libatk-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libcairo-gobject.so", "/usr/lib/x86_64-linux-gnu/libcairo.so", 
"/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so", "/usr/lib/x86_64-linux-gnu/libgio-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", "/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}, {"name": 
"libhandy-0.0", "compile_args": ["-I/app/include/libhandy-0.0", "-I/usr/include/gtk-3.0", 
"-I/usr/include/pango-1.0", "-I/u
 sr/inclu
 de/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/usr/include/harfbuzz", "-I/usr/include/libmount", 
"-I/usr/include/blkid", "-I/usr/include/fribidi", "-I/usr/include/freetype2", "-I/usr/include/libpng16", 
"-I/usr/include/cairo", "-I/usr/include/pixman-1", "-I/usr/include/gdk-pixbuf-2.0", 
"-I/usr/include/gio-unix-2.0", "-I/usr/include/atk-1.0", "-I/usr/include/at-spi2-atk/2.0", 
"-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", "-I/usr/include/at-spi-2.0", 
"-pthread"], "link_args": ["/app/lib/libhandy-0.0.so", "/usr/lib/x86_64-linux-gnu/libgtk-3.so", 
"/usr/lib/x86_64-linux-gnu/libgdk-3.so", "/usr/lib/x86_64-linux-gnu/libz.so", 
"/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so", "/usr/lib/x86_64-linux-gnu/libpango-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libharfbuzz.so", "/usr/lib/x86_64-linux-gnu/libatk-1.0.so", 
"/usr/lib/x86_64-linux-gnu/libcairo-gobject.so", "/usr/lib/x86_64-linux-gnu/libca
 iro.so",
  "/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so", "/usr/lib/x86_64-linux-gnu/libgio-2.0.so", 
"/usr/lib/x86_64-linux-gnu/libgobject-2.0.so", "/usr/lib/x86_64-linux-gnu/libglib-2.0.so"]}]
\ No newline at end of file
diff --git a/_build/meson-info/intro-installed.json b/_build/meson-info/intro-installed.json
new file mode 100644
index 0000000..98ba4bb
--- /dev/null
+++ b/_build/meson-info/intro-installed.json
@@ -0,0 +1 @@
+{"/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.desktop": 
"/app/share/applications/org.gnome.Contacts.Devel.desktop", 
"/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.appdata.xml": 
"/app/share/metainfo/org.gnome.Contacts.Devel.appdata.xml", 
"/home/julian/playground/gnome-contacts/_build/src/gnome-contacts": "/app/bin/gnome-contacts", 
"/home/julian/playground/gnome-contacts/_build/src/gnome-contacts-search-provider": 
"/app/libexec/gnome-contacts-search-provider", 
"/home/julian/playground/gnome-contacts/_build/man/gnome-contacts.1": "/app/share/man/man1/gnome-contacts.1", 
"/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.service": 
"/app/share/dbus-1/services/org.gnome.Contacts.Devel.service", 
"/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.SearchProvider.service": 
"/app/share/dbus-1/services/org.gnome.Contacts.Devel.SearchProvider.service", "/home/julian/playground
 /gnome-c
 ontacts/_build/data/org.gnome.Contacts.Devel.search-provider.ini": 
"/app/share/gnome-shell/search-providers/org.gnome.Contacts.Devel.search-provider.ini", 
"/home/julian/playground/gnome-contacts/src/org.gnome.Contacts.gschema.xml": 
"/app/share/glib-2.0/schemas/org.gnome.Contacts.gschema.xml"}
\ No newline at end of file
diff --git a/_build/meson-info/intro-projectinfo.json b/_build/meson-info/intro-projectinfo.json
new file mode 100644
index 0000000..6eed9ee
--- /dev/null
+++ b/_build/meson-info/intro-projectinfo.json
@@ -0,0 +1 @@
+{"version": "3.35.1", "descriptive_name": "gnome-contacts", "subproject_dir": "subprojects", "subprojects": 
[]}
\ No newline at end of file
diff --git a/_build/meson-info/intro-targets.json b/_build/meson-info/intro-targets.json
new file mode 100644
index 0000000..5557a6e
--- /dev/null
+++ b/_build/meson-info/intro-targets.json
@@ -0,0 +1 @@
+[{"name": "org.gnome.Contacts_c", "id": "3a6eb07@@org.gnome.Contacts_c@cus", "type": "custom", "defined_in": 
"/home/julian/playground/gnome-contacts/data/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.c"], "build_by_default": false, 
"target_sources": [{"language": "unknown", "compiler": ["glib-compile-resources", "@INPUT@", "--sourcedir", 
"../data", "--c-name", "resources", "--internal", "--generate", "--target", "@OUTPUT@", "--dependency-file", 
"@DEPFILE@"], "parameters": [], "sources": 
["/home/julian/playground/gnome-contacts/data/contacts.gresource.xml"], "generated_sources": []}], 
"subproject": null, "installed": false}, {"name": "org.gnome.Contacts_h", "id": 
"3a6eb07@@org.gnome.Contacts_h@cus", "type": "custom", "defined_in": 
"/home/julian/playground/gnome-contacts/data/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.h"], "build_by_default": false, 
"target_sources": [{"l
 anguage"
 : "unknown", "compiler": ["glib-compile-resources", "@INPUT@", "--sourcedir", "../data", "--c-name", 
"resources", "--internal", "--generate", "--target", "@OUTPUT@"], "parameters": [], "sources": 
["/home/julian/playground/gnome-contacts/data/contacts.gresource.xml"], "generated_sources": []}], 
"subproject": null, "installed": false}, {"name": "org.gnome.Contacts.Devel.desktop_data_merge", "id": 
"3a6eb07@@org.gnome.Contacts.Devel.desktop_data_merge@cus", "type": "custom", "defined_in": 
"/home/julian/playground/gnome-contacts/data/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.desktop"], "build_by_default": 
true, "target_sources": [{"language": "unknown", "compiler": ["/usr/bin/meson", "--internal", "msgfmthelper", 
"@INPUT@", "@OUTPUT@", "desktop", "/home/julian/playground/gnome-contacts/po"], "parameters": [], "sources": 
["/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.desktop.in"], "generated_sou
 rces": [
 ]}], "subproject": null, "installed": true, "install_filename": 
["/app/share/applications/org.gnome.Contacts.Devel.desktop"]}, {"name": 
"org.gnome.Contacts.Devel.appdata.xml_data_merge", "id": 
"3a6eb07@@org.gnome.Contacts.Devel.appdata.xml_data_merge@cus", "type": "custom", "defined_in": 
"/home/julian/playground/gnome-contacts/data/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.appdata.xml"], 
"build_by_default": true, "target_sources": [{"language": "unknown", "compiler": ["/usr/bin/meson", 
"--internal", "msgfmthelper", "@INPUT@", "@OUTPUT@", "xml", "/home/julian/playground/gnome-contacts/po"], 
"parameters": [], "sources": 
["/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.appdata.xml.in"], 
"generated_sources": []}], "subproject": null, "installed": true, "install_filename": 
["/app/share/metainfo/org.gnome.Contacts.Devel.appdata.xml"]}, {"name": "gnome-contacts-pot", "id": 
"6199aec@@gnome-contacts-
 pot@run"
 , "type": "run", "defined_in": "/home/julian/playground/gnome-contacts/po/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/po/gnome-contacts-pot"], "build_by_default": false, 
"target_sources": [], "subproject": null, "installed": false}, {"name": "gnome-contacts-gmo", "id": 
"6199aec@@gnome-contacts-gmo@run", "type": "run", "defined_in": 
"/home/julian/playground/gnome-contacts/po/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/po/gnome-contacts-gmo"], "build_by_default": false, 
"target_sources": [], "subproject": null, "installed": false}, {"name": "gnome-contacts-update-po", "id": 
"6199aec@@gnome-contacts-update-po@run", "type": "run", "defined_in": 
"/home/julian/playground/gnome-contacts/po/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/po/gnome-contacts-update-po"], "build_by_default": false, 
"target_sources": [], "subproject": null, "installed": false}, {"name": "gsettings-compile-src", "id": "2
 5a6634@@
 gsettings-compile-src@cus", "type": "custom", "defined_in": 
"/home/julian/playground/gnome-contacts/src/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/src/gschemas.compiled"], "build_by_default": false, 
"target_sources": [{"language": "unknown", "compiler": ["/usr/bin/glib-compile-schemas", "--targetdir", 
"src", "../src"], "parameters": [], "sources": [], "generated_sources": []}], "subproject": null, 
"installed": false}, {"name": "contacts", "id": "25a6634@@contacts@sta", "type": "static library", 
"defined_in": "/home/julian/playground/gnome-contacts/src/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/src/libcontacts.a", 
"/home/julian/playground/gnome-contacts/_build/src/contacts.h", 
"/home/julian/playground/gnome-contacts/_build/src/contacts.vapi"], "build_by_default": true, 
"target_sources": [{"language": "vala", "compiler": ["valac"], "parameters": ["-C", "--debug", "--debug", 
"--vapidir", "/home/julian/playground/gnom
 e-contac
 ts/vapi", "--pkg", "cheese-gtk", "--pkg", "cheese", "--pkg", "libhandy-0.0", "--pkg", 
"libedataserverui-1.2", "--pkg", "libedataserver-1.2", "--pkg", "libebook-1.2", "--pkg", "gtk+-3.0", "--pkg", 
"goa-1.0", "--pkg", "gnome-desktop-3.0", "--target-glib", "2.44", "--pkg", "glib-2.0", "--pkg", 
"gio-unix-2.0", "--pkg", "gee-0.8", "--pkg", "folks-eds", "--pkg", "folks", "--color=always", "--directory", 
"src/25a6634@@contacts@sta", "--basedir", "../src", "--library", "contacts", "--header", "src/contacts.h", 
"--vapi", "../contacts.vapi", "--target-glib=2.44", "--pkg", "config", "--pkg", "custom", "-D", 
"HAVE_CHEESE"], "sources": ["/home/julian/playground/gnome-contacts/src/contacts-esd-setup.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-fake-persona-store.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-im-service.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-store.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-typeset.vala", "/h
 ome/juli
 an/playground/gnome-contacts/src/contacts-type-descriptor.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-utils.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-avatar-utils.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-vcard-type-mapping.vala"], "generated_sources": []}, 
{"language": "c", "compiler": ["ccache", "cc"], "parameters": 
["-I/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta", 
"-I/home/julian/playground/gnome-contacts/_build/src", "-I/home/julian/playground/gnome-contacts/src", 
"-I/home/julian/playground/gnome-contacts/_build", "-I/home/julian/playground/gnome-contacts", 
"-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/app/include/gee-0.8", 
"-I/app/include/evolution-data-server", "-I/usr/include/libmount", "-I/usr/include/blkid", 
"-I/usr/include/libsecret-1", "-I/usr/include/gio-unix-2.0", "-I/usr/include/libxml2", "-I/usr/in
 clude/li
 bsoup-2.4", "-I/usr/include/nss", "-I/app/include/gnome-desktop-3.0", "-I/usr/include/gtk-3.0", 
"-I/usr/include/pango-1.0", "-I/usr/include/harfbuzz", "-I/usr/include/fribidi", "-I/usr/include/freetype2", 
"-I/usr/include/libpng16", "-I/usr/include/cairo", "-I/usr/include/pixman-1", 
"-I/usr/include/gdk-pixbuf-2.0", "-I/usr/include/atk-1.0", "-I/usr/include/at-spi2-atk/2.0", 
"-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", "-I/usr/include/at-spi-2.0", 
"-I/usr/include/gsettings-desktop-schemas", "-I/app/include/goa-1.0", "-I/app/lib/goa-1.0/include", 
"-I/app/include/libhandy-0.0", "-I/app/include/cheese", "-I/usr/include/clutter-1.0", "-I/usr/include/cogl", 
"-I/usr/include/json-glib-1.0", "-I/usr/include/gstreamer-1.0", "-I/usr/include/clutter-gst-3.0", 
"-I/usr/include/orc-0.4", "-I/usr/include/clutter-gtk-1.0", "-fdiagnostics-color=always", "-pipe", 
"-D_FILE_OFFSET_BITS=64", "-w", "-g", "-fPIC", "-pthread", "-include", "config.h", "-DGNOME_DESKTOP_USE
 _UNSTABL
 E_API", "-DHANDY_USE_UNSTABLE_API", "-DLOCALEDIR=\"/app/share/locale\""], "sources": [], 
"generated_sources": 
["/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-esd-setup.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-fake-persona-store.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-im-service.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-store.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-typeset.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-type-descriptor.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-utils.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-avatar-utils.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@contacts@sta/contacts-vcard-type-mapping.
 c"]}], "
 subproject": null, "installed": false}, {"name": "gnome-contacts", "id": "25a6634@@gnome-contacts@exe", 
"type": "executable", "defined_in": "/home/julian/playground/gnome-contacts/src/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/src/gnome-contacts"], "build_by_default": true, 
"target_sources": [{"language": "vala", "compiler": ["valac"], "parameters": ["-C", "--debug", "--debug", 
"--vapidir", "/home/julian/playground/gnome-contacts/vapi", "--pkg", "cheese-gtk", "--pkg", "cheese", 
"--pkg", "libhandy-0.0", "--pkg", "libedataserverui-1.2", "--pkg", "libedataserver-1.2", "--pkg", 
"libebook-1.2", "--pkg", "gtk+-3.0", "--pkg", "goa-1.0", "--pkg", "gnome-desktop-3.0", "--target-glib", 
"2.44", "--pkg", "glib-2.0", "--pkg", "gio-unix-2.0", "--pkg", "gee-0.8", "--pkg", "folks-eds", "--pkg", 
"folks", "--color=always", "--directory", "src/25a6634@@gnome-contacts@exe", "--basedir", "../src", 
"--gresources=../data/contacts.gresource.xml", "--target-glib=2.44",
  "--pkg"
 , "config", "--pkg", "custom", "-D", "HAVE_CHEESE"], "sources": 
["/home/julian/playground/gnome-contacts/src/contacts-accounts-list.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-app.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-avatar.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-avatar-selector.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-contact-editor.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-contact-form.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-contact-list.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-contact-pane.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-contact-sheet.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-crop-cheese-dialog.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-in-app-notification.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-link-suggestion-grid.vala", 
"/home/julian/playground/gnome-cont
 acts/src
 /contacts-linked-personas-dialog.vala", "/home/julian/playground/gnome-contacts/src/contacts-linking.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-list-pane.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-max-width-bin.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-settings.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-setup-window.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-type-combo.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-ui-state.vala", 
"/home/julian/playground/gnome-contacts/src/contacts-window.vala", 
"/home/julian/playground/gnome-contacts/src/main.vala"], "generated_sources": []}, {"language": "c", 
"compiler": ["ccache", "cc"], "parameters": 
["-I/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe", 
"-I/home/julian/playground/gnome-contacts/_build/src", "-I/home/julian/playground/gnome-contacts/src", 
"-I/home/julian/playground/gnome-contacts/_build", "-I/h
 ome/juli
 an/playground/gnome-contacts", "-I/home/julian/playground/gnome-contacts/_build/data", 
"-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/app/include/gee-0.8", 
"-I/app/include/evolution-data-server", "-I/usr/include/libmount", "-I/usr/include/blkid", 
"-I/usr/include/libsecret-1", "-I/usr/include/gio-unix-2.0", "-I/usr/include/libxml2", 
"-I/usr/include/libsoup-2.4", "-I/usr/include/nss", "-I/app/include/gnome-desktop-3.0", 
"-I/usr/include/gtk-3.0", "-I/usr/include/pango-1.0", "-I/usr/include/harfbuzz", "-I/usr/include/fribidi", 
"-I/usr/include/freetype2", "-I/usr/include/libpng16", "-I/usr/include/cairo", "-I/usr/include/pixman-1", 
"-I/usr/include/gdk-pixbuf-2.0", "-I/usr/include/atk-1.0", "-I/usr/include/at-spi2-atk/2.0", 
"-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", "-I/usr/include/at-spi-2.0", 
"-I/usr/include/gsettings-desktop-schemas", "-I/app/include/goa-1.0", "-I
 /app/lib
 /goa-1.0/include", "-I/app/include/libhandy-0.0", "-I/app/include/cheese", "-I/usr/include/clutter-1.0", 
"-I/usr/include/cogl", "-I/usr/include/json-glib-1.0", "-I/usr/include/gstreamer-1.0", 
"-I/usr/include/clutter-gst-3.0", "-I/usr/include/orc-0.4", "-I/usr/include/clutter-gtk-1.0", 
"-fdiagnostics-color=always", "-pipe", "-D_FILE_OFFSET_BITS=64", "-Wall", "-Winvalid-pch", "-g", "-pthread", 
"-include", "config.h", "-DGNOME_DESKTOP_USE_UNSTABLE_API", "-DHANDY_USE_UNSTABLE_API", 
"-DLOCALEDIR=\"/app/share/locale\""], "sources": 
["/home/julian/playground/gnome-contacts/src/cc-crop-area.c", 
"/home/julian/playground/gnome-contacts/src/cheese-flash.c"], "generated_sources": 
["/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.c"]}, {"language": "c", "compiler": 
["ccache", "cc"], "parameters": 
["-I/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe", 
"-I/home/julian/playground/gnome-contacts/_build/src", "-I/home/julian/playground/gnome-
 contacts
 /src", "-I/home/julian/playground/gnome-contacts/_build", "-I/home/julian/playground/gnome-contacts", 
"-I/home/julian/playground/gnome-contacts/_build/data", "-I/usr/include/glib-2.0", 
"-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", "-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", 
"-I/app/include/gee-0.8", "-I/app/include/evolution-data-server", "-I/usr/include/libmount", 
"-I/usr/include/blkid", "-I/usr/include/libsecret-1", "-I/usr/include/gio-unix-2.0", 
"-I/usr/include/libxml2", "-I/usr/include/libsoup-2.4", "-I/usr/include/nss", 
"-I/app/include/gnome-desktop-3.0", "-I/usr/include/gtk-3.0", "-I/usr/include/pango-1.0", 
"-I/usr/include/harfbuzz", "-I/usr/include/fribidi", "-I/usr/include/freetype2", "-I/usr/include/libpng16", 
"-I/usr/include/cairo", "-I/usr/include/pixman-1", "-I/usr/include/gdk-pixbuf-2.0", "-I/usr/include/atk-1.0", 
"-I/usr/include/at-spi2-atk/2.0", "-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", 
"-I/usr/include/at-spi-2.0", "-
 I/usr/in
 clude/gsettings-desktop-schemas", "-I/app/include/goa-1.0", "-I/app/lib/goa-1.0/include", 
"-I/app/include/libhandy-0.0", "-I/app/include/cheese", "-I/usr/include/clutter-1.0", "-I/usr/include/cogl", 
"-I/usr/include/json-glib-1.0", "-I/usr/include/gstreamer-1.0", "-I/usr/include/clutter-gst-3.0", 
"-I/usr/include/orc-0.4", "-I/usr/include/clutter-gtk-1.0", "-fdiagnostics-color=always", "-pipe", 
"-D_FILE_OFFSET_BITS=64", "-w", "-g", "-pthread", "-include", "config.h", "-DGNOME_DESKTOP_USE_UNSTABLE_API", 
"-DHANDY_USE_UNSTABLE_API", "-DLOCALEDIR=\"/app/share/locale\""], "sources": [], "generated_sources": 
["/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-app.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-avatar.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/
 contacts
 -avatar-selector.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-form.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-list.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c",
 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c",
 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c",
 "/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-linked-personas-
 dialog.c
 ", "/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-linking.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-list-pane.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-settings.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-setup-window.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-type-combo.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-ui-state.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/contacts-window.c", 
"/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts@exe/main.c"]}], "subproject": 
null, "installed": true, "install_filename": ["/app/bin/gnome-co
 ntacts"]
 }, {"name": "gnome-contacts-search-provider", "id": "25a6634@@gnome-contacts-search-provider@exe", "type": 
"executable", "defined_in": "/home/julian/playground/gnome-contacts/src/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/src/gnome-contacts-search-provider"], "build_by_default": 
true, "target_sources": [{"language": "vala", "compiler": ["valac"], "parameters": ["-C", "--debug", 
"--debug", "--vapidir", "/home/julian/playground/gnome-contacts/vapi", "--pkg", "cheese-gtk", "--pkg", 
"cheese", "--pkg", "libhandy-0.0", "--pkg", "libedataserverui-1.2", "--pkg", "libedataserver-1.2", "--pkg", 
"libebook-1.2", "--pkg", "gtk+-3.0", "--pkg", "goa-1.0", "--pkg", "gnome-desktop-3.0", "--target-glib", 
"2.44", "--pkg", "glib-2.0", "--pkg", "gio-unix-2.0", "--pkg", "gee-0.8", "--pkg", "folks-eds", "--pkg", 
"folks", "--color=always", "--directory", "src/25a6634@@gnome-contacts-search-provider@exe", "--basedir", 
"../src", "--target-glib=2.44", "--pkg", "config", 
 "--pkg",
  "custom", "-D", "HAVE_CHEESE"], "sources": 
["/home/julian/playground/gnome-contacts/src/contacts-shell-search-provider.vala"], "generated_sources": []}, 
{"language": "c", "compiler": ["ccache", "cc"], "parameters": 
["-I/home/julian/playground/gnome-contacts/_build/src/25a6634@@gnome-contacts-search-provider@exe", 
"-I/home/julian/playground/gnome-contacts/_build/src", "-I/home/julian/playground/gnome-contacts/src", 
"-I/home/julian/playground/gnome-contacts/_build", "-I/home/julian/playground/gnome-contacts", 
"-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/app/include/gee-0.8", 
"-I/app/include/evolution-data-server", "-I/usr/include/libmount", "-I/usr/include/blkid", 
"-I/usr/include/libsecret-1", "-I/usr/include/gio-unix-2.0", "-I/usr/include/libxml2", 
"-I/usr/include/libsoup-2.4", "-I/usr/include/nss", "-I/app/include/gnome-desktop-3.0", 
"-I/usr/include/gtk-3.0", "-I/usr/include/pango-1.0", "-
 I/usr/in
 clude/harfbuzz", "-I/usr/include/fribidi", "-I/usr/include/freetype2", "-I/usr/include/libpng16", 
"-I/usr/include/cairo", "-I/usr/include/pixman-1", "-I/usr/include/gdk-pixbuf-2.0", "-I/usr/include/atk-1.0", 
"-I/usr/include/at-spi2-atk/2.0", "-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", 
"-I/usr/include/at-spi-2.0", "-I/usr/include/gsettings-desktop-schemas", "-I/app/include/goa-1.0", 
"-I/app/lib/goa-1.0/include", "-I/app/include/libhandy-0.0", "-I/app/include/cheese", 
"-I/usr/include/clutter-1.0", "-I/usr/include/cogl", "-I/usr/include/json-glib-1.0", 
"-I/usr/include/gstreamer-1.0", "-I/usr/include/clutter-gst-3.0", "-I/usr/include/orc-0.4", 
"-I/usr/include/clutter-gtk-1.0", "-fdiagnostics-color=always", "-pipe", "-D_FILE_OFFSET_BITS=64", "-w", 
"-g", "-pthread", "-include", "config.h", "-DGNOME_DESKTOP_USE_UNSTABLE_API", "-DHANDY_USE_UNSTABLE_API", 
"-DLOCALEDIR=\"/app/share/locale\""], "sources": [], "generated_sources": ["/home/julian/playground
 /gnome-c
 ontacts/_build/src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c"]}], 
"subproject": null, "installed": true, "install_filename": ["/app/libexec/gnome-contacts-search-provider"]}, 
{"name": "manfile-gnome-contacts", "id": "48b676e@@manfile-gnome-contacts@cus", "type": "custom", 
"defined_in": "/home/julian/playground/gnome-contacts/man/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/man/gnome-contacts.1"], "build_by_default": true, 
"target_sources": [{"language": "unknown", "compiler": ["/usr/bin/xsltproc", "--nonet", "--stringparam", 
"man.output.quietly", "1", "--stringparam", "funcsynopsis.style", "ansi", "--stringparam", 
"man.th.extra1.suppress", "1", "--stringparam", "man.authors.section.enabled", "0", "--stringparam", 
"man.copyright.section.enabled", "0", "-o", "@OUTPUT@", 
"http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl";, "@INPUT@"], "parameters": [], 
"sources": ["/home/julian/playground/gnom
 e-contac
 ts/man/gnome-contacts.xml"], "generated_sources": []}], "subproject": null, "installed": true, 
"install_filename": ["/app/share/man/man1/gnome-contacts.1"]}, {"name": "basic-test", "id": 
"59830eb@@basic-test@exe", "type": "executable", "defined_in": 
"/home/julian/playground/gnome-contacts/tests/meson.build", "filename": 
["/home/julian/playground/gnome-contacts/_build/tests/basic-test"], "build_by_default": true, 
"target_sources": [{"language": "vala", "compiler": ["valac"], "parameters": ["-C", "--debug", "--debug", 
"--vapidir", "/home/julian/playground/gnome-contacts/vapi", "--pkg", "cheese-gtk", "--pkg", "cheese", 
"--pkg", "libhandy-0.0", "--pkg", "libedataserverui-1.2", "--pkg", "libedataserver-1.2", "--pkg", 
"libebook-1.2", "--pkg", "gtk+-3.0", "--pkg", "goa-1.0", "--pkg", "gnome-desktop-3.0", "--target-glib", 
"2.44", "--pkg", "glib-2.0", "--pkg", "gio-unix-2.0", "--pkg", "gee-0.8", "--pkg", "folks-eds", "--pkg", 
"folks", "--color=always", "--directory", "tests/59830eb@@
 basic-te
 st@exe", "--basedir", "../tests"], "sources": 
["/home/julian/playground/gnome-contacts/tests/basic-test.vala"], "generated_sources": []}, {"language": "c", 
"compiler": ["ccache", "cc"], "parameters": 
["-I/home/julian/playground/gnome-contacts/_build/tests/59830eb@@basic-test@exe", 
"-I/home/julian/playground/gnome-contacts/_build/tests", "-I/home/julian/playground/gnome-contacts/tests", 
"-I/home/julian/playground/gnome-contacts/_build/src", "-I/home/julian/playground/gnome-contacts/src", 
"-I/usr/include/glib-2.0", "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 
"-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include", "-I/app/include/gee-0.8", 
"-I/app/include/evolution-data-server", "-I/usr/include/libmount", "-I/usr/include/blkid", 
"-I/usr/include/libsecret-1", "-I/usr/include/gio-unix-2.0", "-I/usr/include/libxml2", 
"-I/usr/include/libsoup-2.4", "-I/usr/include/nss", "-I/app/include/gnome-desktop-3.0", 
"-I/usr/include/gtk-3.0", "-I/usr/include/pango-1.0", "-I/usr/include/harfbuzz
 ", "-I/u
 sr/include/fribidi", "-I/usr/include/freetype2", "-I/usr/include/libpng16", "-I/usr/include/cairo", 
"-I/usr/include/pixman-1", "-I/usr/include/gdk-pixbuf-2.0", "-I/usr/include/atk-1.0", 
"-I/usr/include/at-spi2-atk/2.0", "-I/usr/include/dbus-1.0", "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", 
"-I/usr/include/at-spi-2.0", "-I/usr/include/gsettings-desktop-schemas", "-I/app/include/goa-1.0", 
"-I/app/lib/goa-1.0/include", "-I/app/include/libhandy-0.0", "-I/app/include/cheese", 
"-I/usr/include/clutter-1.0", "-I/usr/include/cogl", "-I/usr/include/json-glib-1.0", 
"-I/usr/include/gstreamer-1.0", "-I/usr/include/clutter-gst-3.0", "-I/usr/include/orc-0.4", 
"-I/usr/include/clutter-gtk-1.0", "-fdiagnostics-color=always", "-pipe", "-D_FILE_OFFSET_BITS=64", "-w", 
"-g", "-pthread"], "sources": [], "generated_sources": 
["/home/julian/playground/gnome-contacts/_build/tests/59830eb@@basic-test@exe/basic-test.c"]}], "subproject": 
null, "installed": false}]
\ No newline at end of file
diff --git a/_build/meson-info/intro-tests.json b/_build/meson-info/intro-tests.json
new file mode 100644
index 0000000..6a8e19c
--- /dev/null
+++ b/_build/meson-info/intro-tests.json
@@ -0,0 +1 @@
+[{"cmd": ["/usr/bin/desktop-file-validate", 
"/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.desktop"], "env": {}, "name": 
"validate-desktop", "workdir": null, "timeout": 30, "suite": ["gnome-contacts:data"], "is_parallel": true}, 
{"cmd": ["/usr/bin/appstream-util", "validate-relax", "--nonet", 
"/home/julian/playground/gnome-contacts/_build/data/org.gnome.Contacts.Devel.appdata.xml"], "env": {}, 
"name": "validate-appdata", "workdir": null, "timeout": 30, "suite": ["gnome-contacts:data"], "is_parallel": 
true}, {"cmd": ["/home/julian/playground/gnome-contacts/_build/tests/basic-test"], "env": {}, "name": 
"basic-test", "workdir": null, "timeout": 30, "suite": ["gnome-contacts:gnome-contacts"], "is_parallel": 
true}]
\ No newline at end of file
diff --git a/_build/meson-info/meson-info.json b/_build/meson-info/meson-info.json
new file mode 100644
index 0000000..333642e
--- /dev/null
+++ b/_build/meson-info/meson-info.json
@@ -0,0 +1 @@
+{"meson_version": {"full": "0.51.2", "major": 0, "minor": 51, "patch": 2}, "directories": {"source": 
"/home/julian/playground/gnome-contacts", "build": "/home/julian/playground/gnome-contacts/_build", "info": 
"/home/julian/playground/gnome-contacts/_build/meson-info"}, "introspection": {"version": {"full": "1.0.0", 
"major": 1, "minor": 0, "patch": 0}, "information": {"benchmarks": {"file": "intro-benchmarks.json", 
"updated": true}, "buildoptions": {"file": "intro-buildoptions.json", "updated": true}, "buildsystem_files": 
{"file": "intro-buildsystem_files.json", "updated": true}, "dependencies": {"file": 
"intro-dependencies.json", "updated": true}, "installed": {"file": "intro-installed.json", "updated": true}, 
"projectinfo": {"file": "intro-projectinfo.json", "updated": true}, "targets": {"file": "intro-targets.json", 
"updated": true}, "tests": {"file": "intro-tests.json", "updated": true}}}, "build_files_updated": true, 
"error": false}
\ No newline at end of file
diff --git a/_build/meson-logs/install-log.txt b/_build/meson-logs/install-log.txt
new file mode 100644
index 0000000..559ec43
--- /dev/null
+++ b/_build/meson-logs/install-log.txt
@@ -0,0 +1,17 @@
+# List of files installed by Meson
+# Does not contain files installed by custom scripts.
+/app/share/icons/hicolor/scalable/apps/org.gnome.Contacts.Devel.svg
+/app/share/icons/hicolor/scalable/apps/org.gnome.Contacts.Devel.svg
+/app/share/icons/hicolor/scalable/apps/org.gnome.Contacts.svg
+/app/share/icons/hicolor/scalable/apps/org.gnome.Contacts.svg
+/app/share/icons/hicolor/symbolic/apps/org.gnome.Contacts-symbolic.svg
+/app/share/icons/hicolor/symbolic/apps/org.gnome.Contacts-symbolic.svg
+/app/share/applications/org.gnome.Contacts.Devel.desktop
+/app/share/metainfo/org.gnome.Contacts.Devel.appdata.xml
+/app/bin/gnome-contacts
+/app/libexec/gnome-contacts-search-provider
+/app/share/man/man1/gnome-contacts.1
+/app/share/dbus-1/services/org.gnome.Contacts.Devel.service
+/app/share/dbus-1/services/org.gnome.Contacts.Devel.SearchProvider.service
+/app/share/gnome-shell/search-providers/org.gnome.Contacts.Devel.search-provider.ini
+/app/share/glib-2.0/schemas/org.gnome.Contacts.gschema.xml
diff --git a/_build/meson-logs/meson-log.txt b/_build/meson-logs/meson-log.txt
new file mode 100644
index 0000000..09df367
--- /dev/null
+++ b/_build/meson-logs/meson-log.txt
@@ -0,0 +1,373 @@
+Build started at 2020-01-09T17:48:06.941308
+Main binary: /usr/bin/python3
+Python system: Linux
+The Meson build system
+Version: 0.51.2
+Source dir: /home/julian/playground/gnome-contacts
+Build dir: /home/julian/playground/gnome-contacts/_build
+Build type: native build
+WARNING: Unknown options: "tracing"
+Project name: gnome-contacts
+Project version: 3.35.1
+No CFLAGS in the environment, not changing global flags.
+Appending LDFLAGS from environment: '-L/app/lib '
+No CPPFLAGS in the environment, not changing global flags.
+Sanity testing C compiler: ccache cc
+Is cross compiler: False.
+Sanity check compiler command line: ccache cc -L/app/lib -pipe -D_FILE_OFFSET_BITS=64 
/home/julian/playground/gnome-contacts/_build/meson-private/sanitycheckc.c -o 
/home/julian/playground/gnome-contacts/_build/meson-private/sanitycheckc.exe
+Sanity check compile stdout:
+
+-----
+Sanity check compile stderr:
+
+-----
+Running test binary command: /home/julian/playground/gnome-contacts/_build/meson-private/sanitycheckc.exe
+No VALAFLAGS in the environment, not changing global flags.
+No LDFLAGS in the environment, not changing global flags.
+Running compile:
+Working directory:  /tmp/tmpp6o5ya7o
+Command line:  valac /tmp/tmpp6o5ya7o/testfile.vala -C 
+
+Code:
+ class MesonSanityCheck : Object { }
+Compiler stdout:
+ 
+Compiler stderr:
+ 
+No CFLAGS in the environment, not changing global flags.
+Appending LDFLAGS from environment: '-L/app/lib '
+No CPPFLAGS in the environment, not changing global flags.
+Sanity testing C compiler: ccache cc
+Is cross compiler: False.
+Sanity check compiler command line: ccache cc -L/app/lib -pipe -D_FILE_OFFSET_BITS=64 
/home/julian/playground/gnome-contacts/_build/meson-private/sanitycheckc.c -o 
/home/julian/playground/gnome-contacts/_build/meson-private/sanitycheckc.exe
+Sanity check compile stdout:
+
+-----
+Sanity check compile stderr:
+
+-----
+Running test binary command: /home/julian/playground/gnome-contacts/_build/meson-private/sanitycheckc.exe
+C compiler for the host machine: ccache cc (gcc 9.2.0 "cc (GCC) 9.2.0")
+No VALAFLAGS in the environment, not changing global flags.
+No LDFLAGS in the environment, not changing global flags.
+Using cached compile:
+Cached command line:  valac /tmp/tmpp6o5ya7o/testfile.vala -C 
+
+Code:
+ class MesonSanityCheck : Object { }
+Cached compiler stdout:
+ 
+Cached compiler stderr:
+ 
+Vala compiler for the host machine: valac (valac 0.47.2.1-ce69)
+Build machine cpu family: x86_64
+Build machine cpu: x86_64
+Running compile:
+Working directory:  /tmp/tmpgi92ln97
+Command line:  ccache cc -L/app/lib /tmp/tmpgi92ln97/testfile.c -o /tmp/tmpgi92ln97/output.exe -pipe 
-D_FILE_OFFSET_BITS=64 -O0 -Wl,--start-group -lm -Wl,--end-group -Wl,--allow-shlib-undefined 
+
+Code:
+ int main() { return 0; }
+Compiler stdout:
+ 
+Compiler stderr:
+ 
+Library m found: YES
+Pkg-config binary for MachineChoice.HOST is not cached.
+Pkg-config binary missing from cross or native file, or env var undefined.
+Trying a default pkg-config fallback at pkg-config
+Trying pkg-config binary pkg-config for machine MachineChoice.HOST at ['/usr/bin/pkg-config']
+Found pkg-config: /usr/bin/pkg-config (1.6.3)
+Determining dependency 'folks' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion folks` -> 0
+0.13.2
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags folks` -> 0
+-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config folks --libs` -> 0
+-L/app/lib -lfolks -L/usr/lib/x86_64-linux-gnu -lgee-0.8 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config folks --libs` -> 0
+-L/app/lib -lfolks -lgee-0.8 -lgobject-2.0 -lglib-2.0
+Running compile:
+Working directory:  /tmp/tmpo96s8pmu
+Command line:  ccache cc -L/app/lib /tmp/tmpo96s8pmu/testfile.c -o /tmp/tmpo96s8pmu/output.exe -pipe 
-D_FILE_OFFSET_BITS=64 -O0 
+
+Code:
+ #include<stdio.h>
+        
+        int main() {
+            printf("%ld\n", (long)(sizeof(void *)));
+            return 0;
+        };
+Compiler stdout:
+ 
+Compiler stderr:
+ 
+Program stdout:
+
+8
+
+Program stderr:
+
+
+Running compile:
+Working directory:  /tmp/tmpveefat02
+Command line:  ccache cc /tmp/tmpveefat02/testfile.c -o /tmp/tmpveefat02/output.obj -pipe -c 
-D_FILE_OFFSET_BITS=64 -O0 --print-search-dirs 
+
+Code:
+ 
+Compiler stdout:
+ install: /usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/
+programs: 
=/usr/libexec/gcc/x86_64-unknown-linux-gnu/9.2.0/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/9.2.0/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/:/usr/lib/gcc/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu/9.2.0/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../x86_64-unknown-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../x86_64-unknown-linux-gnu/bin/
+libraries: 
=/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/9.2.0/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../x86_64-unknown-linux-gnu/lib/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../x86_64-unknown-linux-gnu/lib/../lib64/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../x86_64-unknown-linux-gnu/9.2.0/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../lib64/:/lib/x86_64-unknown-linux-gnu/9.2.0/:/lib/x86_64-linux-gnu/:/lib/../lib64/:/usr/lib/x86_64-unknown-linux-gnu/9.2.0/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../x86_64-unknown-linux-gnu/lib/:/usr/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../:/lib/:/usr/lib/
+
+Compiler stderr:
+ 
+Run-time dependency folks found: YES 0.13.2
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'folks-eds' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion folks-eds` -> 0
+0.13.2
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags folks-eds` -> 0
+-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/app/include/gee-0.8 -I/app/include/evolution-data-server 
-I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 
-I/usr/include/libxml2 -I/usr/include/libsoup-2.4 -I/usr/include/nss -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config folks-eds --libs` -> 0
+-L/app/lib -lfolks-eds -lfolks -L/usr/lib/x86_64-linux-gnu -lgee-0.8 -lebook-1.2 -ledata-book-1.2 
-lebackend-1.2 -lebook-contacts-1.2 -ledataserver-1.2 -Wl,--export-dynamic -pthread -lgmodule-2.0 -lsecret-1 
-lxml2 -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config folks-eds --libs` -> 0
+-L/app/lib -lfolks-eds -lfolks -lgee-0.8 -lebook-1.2 -ledata-book-1.2 -lebackend-1.2 -lebook-contacts-1.2 
-ledataserver-1.2 -Wl,--export-dynamic -pthread -lgmodule-2.0 -lsecret-1 -lxml2 -lsoup-2.4 -lgio-2.0 
-lgobject-2.0 -lglib-2.0
+Run-time dependency folks-eds found: YES 0.13.2
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'gee-0.8' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion gee-0.8` -> 0
+0.20.2
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags gee-0.8` -> 0
+-I/app/include/gee-0.8 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gee-0.8 --libs` -> 0
+-L/app/lib -lgee-0.8 -L/usr/lib/x86_64-linux-gnu -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gee-0.8 --libs` -> 0
+-L/app/lib -lgee-0.8 -lgobject-2.0 -lglib-2.0
+Run-time dependency gee-0.8 found: YES 0.20.2
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'gio-unix-2.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion gio-unix-2.0` -> 0
+2.63.3
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags gio-unix-2.0` -> 0
+-I/usr/include/gio-unix-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -pthread -I/usr/include/libmount -I/usr/include/blkid
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gio-unix-2.0 --libs` -> 0
+-L/usr/lib/x86_64-linux-gnu -lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gio-unix-2.0 --libs` -> 0
+-lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency gio-unix-2.0 found: YES 2.63.3
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'glib-2.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion glib-2.0` -> 0
+2.63.3
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags glib-2.0` -> 0
+-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config glib-2.0 --libs` -> 0
+-L/usr/lib/x86_64-linux-gnu -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config glib-2.0 --libs` -> 0
+-lglib-2.0
+Run-time dependency glib-2.0 found: YES 2.63.3
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'gmodule-export-2.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion gmodule-export-2.0` -> 0
+2.63.3
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags gmodule-export-2.0` -> 0
+-pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gmodule-export-2.0 --libs` -> 0
+-Wl,--export-dynamic -pthread -L/usr/lib/x86_64-linux-gnu -lgmodule-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gmodule-export-2.0 --libs` -> 0
+-Wl,--export-dynamic -pthread -lgmodule-2.0 -lglib-2.0
+Run-time dependency gmodule-export-2.0 found: YES 2.63.3
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'gnome-desktop-3.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion gnome-desktop-3.0` -> 0
+3.35.3
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags gnome-desktop-3.0` -> 0
+-I/app/include/gnome-desktop-3.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/usr/include/harfbuzz -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -I/usr/include/gsettings-desktop-schemas -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gnome-desktop-3.0 --libs` -> 0
+-L/app/lib -lgnome-desktop-3 -L/usr/lib/x86_64-linux-gnu -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 
-lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gnome-desktop-3.0 --libs` -> 0
+-L/app/lib -lgnome-desktop-3 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 
-lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency gnome-desktop-3.0 found: YES 3.35.3
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'goa-1.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion goa-1.0` -> 0
+3.35.3
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags goa-1.0` -> 0
+-I/app/include/goa-1.0 -I/app/lib/goa-1.0/include -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -pthread 
-I/usr/include/libmount -I/usr/include/blkid
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config goa-1.0 --libs` -> 0
+-L/app/lib -lgoa-1.0 -L/usr/lib/x86_64-linux-gnu -lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config goa-1.0 --libs` -> 0
+-L/app/lib -lgoa-1.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency goa-1.0 found: YES 3.35.3
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'gtk+-3.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion gtk+-3.0` -> 0
+3.24.13
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags gtk+-3.0` -> 0
+-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/usr/include/harfbuzz -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gtk+-3.0 --libs` -> 0
+-L/usr/lib/x86_64-linux-gnu -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 
-lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config gtk+-3.0 --libs` -> 0
+-lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo 
-lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency gtk+-3.0 found: YES 3.24.13
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'libebook-1.2' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion libebook-1.2` -> 0
+3.35.90
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags libebook-1.2` -> 0
+-I/app/include/evolution-data-server -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/nss -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libebook-1.2 --libs` -> 0
+-L/app/lib -lebook-1.2 -L/usr/lib/x86_64-linux-gnu -ledata-book-1.2 -lebackend-1.2 -lebook-contacts-1.2 
-ledataserver-1.2 -Wl,--export-dynamic -pthread -lgmodule-2.0 -lsecret-1 -lxml2 -lsoup-2.4 -lgio-2.0 
-lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libebook-1.2 --libs` -> 0
+-L/app/lib -lebook-1.2 -ledata-book-1.2 -lebackend-1.2 -lebook-contacts-1.2 -ledataserver-1.2 
-Wl,--export-dynamic -pthread -lgmodule-2.0 -lsecret-1 -lxml2 -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency libebook-1.2 found: YES 3.35.90
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'libedataserver-1.2' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion libedataserver-1.2` -> 0
+3.35.90
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags libedataserver-1.2` -> 0
+-I/app/include/evolution-data-server -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-pthread -I/usr/include/nss
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libedataserver-1.2 --libs` -> 0
+-L/app/lib -ledataserver-1.2 -L/usr/lib/x86_64-linux-gnu -Wl,--export-dynamic -pthread -lgmodule-2.0 
-lsecret-1 -lxml2 -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libedataserver-1.2 --libs` -> 0
+-L/app/lib -ledataserver-1.2 -Wl,--export-dynamic -pthread -lgmodule-2.0 -lsecret-1 -lxml2 -lsoup-2.4 
-lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency libedataserver-1.2 found: YES 3.35.90
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'libedataserverui-1.2' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion libedataserverui-1.2` -> 0
+3.35.90
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags libedataserverui-1.2` -> 0
+-I/app/include/evolution-data-server -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/usr/include/libmount -I/usr/include/blkid 
-I/usr/include/libsecret-1 -I/usr/include/gio-unix-2.0 -I/usr/include/libxml2 -I/usr/include/libsoup-2.4 
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/at-spi-2.0 -I/usr/include/nss -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libedataserverui-1.2 --libs` -> 0
+-L/app/lib -ledataserverui-1.2 -L/usr/lib/x86_64-linux-gnu -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 
-lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lecal-2.0 -lical-glib -lical -licalss 
-licalvcal -ledataserver-1.2 -Wl,--export-dynamic -pthread -lgmodule-2.0 -lsecret-1 -lxml2 -lsoup-2.4 
-lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libedataserverui-1.2 --libs` -> 0
+-L/app/lib -ledataserverui-1.2 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 
-lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lecal-2.0 -lical-glib -lical -licalss -licalvcal -ledataserver-1.2 
-Wl,--export-dynamic -pthread -lgmodule-2.0 -lsecret-1 -lxml2 -lsoup-2.4 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency libedataserverui-1.2 found: YES 3.35.90
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'cheese' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion cheese` -> 0
+3.34.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags cheese` -> 0
+-I/app/include/cheese -I/usr/include/clutter-1.0 -I/usr/include/cogl -I/usr/include/cairo 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/usr/include/pixman-1 -I/usr/include/freetype2 
-I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount 
-I/usr/include/blkid -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/fribidi 
-I/usr/include/json-glib-1.0 -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/gstreamer-1.0 
-I/usr/include/clutter-gst-3.0 -I/usr/include/orc-0.4 -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config cheese --libs` -> 0
+-L/app/lib -lcheese -L/usr/lib/x86_64-linux-gnu -lclutter-1.0 -lcogl-path -latk-1.0 -lcogl-pango -lcogl 
-pthread -lgmodule-2.0 -lwayland-egl -lEGL -lXrandr -ljson-glib-1.0 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 
-lharfbuzz -lcairo-gobject -lcairo -lwayland-cursor -lwayland-client -lxkbcommon -lwayland-server -lX11 
-lXext -lXdamage -lXfixes -lXcomposite -lXi -lgdk_pixbuf-2.0 -lgio-2.0 -lgstreamer-1.0 -lgobject-2.0 
-lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config cheese --libs` -> 0
+-L/app/lib -lcheese -lclutter-1.0 -lcogl-path -latk-1.0 -lcogl-pango -lcogl -pthread -lgmodule-2.0 
-lwayland-egl -lEGL -lXrandr -ljson-glib-1.0 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz 
-lcairo-gobject -lcairo -lwayland-cursor -lwayland-client -lxkbcommon -lwayland-server -lX11 -lXext -lXdamage 
-lXfixes -lXcomposite -lXi -lgdk_pixbuf-2.0 -lgio-2.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency cheese found: YES 3.34.0
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'cheese-gtk' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion cheese-gtk` -> 0
+3.34.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags cheese-gtk` -> 0
+-I/app/include/cheese -I/usr/include/clutter-gtk-1.0 -I/usr/include/clutter-1.0 -I/usr/include/cogl 
-I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include -I/usr/include/pixman-1 -I/usr/include/freetype2 
-I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount 
-I/usr/include/blkid -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/fribidi 
-I/usr/include/json-glib-1.0 -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config cheese-gtk --libs` -> 0
+-L/app/lib -lcheese-gtk -L/usr/lib/x86_64-linux-gnu -lclutter-gtk-1.0 -lclutter-1.0 -lcogl-path -lcogl-pango 
-lcogl -pthread -lgmodule-2.0 -lwayland-egl -lEGL -lXrandr -ljson-glib-1.0 -lwayland-cursor -lwayland-client 
-lxkbcommon -lwayland-server -lX11 -lXext -lXdamage -lXfixes -lXcomposite -lXi -lgtk-3 -lgdk-3 -lz 
-lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 
-lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config cheese-gtk --libs` -> 0
+-L/app/lib -lcheese-gtk -lclutter-gtk-1.0 -lclutter-1.0 -lcogl-path -lcogl-pango -lcogl -pthread 
-lgmodule-2.0 -lwayland-egl -lEGL -lXrandr -ljson-glib-1.0 -lwayland-cursor -lwayland-client -lxkbcommon 
-lwayland-server -lX11 -lXext -lXdamage -lXfixes -lXcomposite -lXi -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 
-lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency cheese-gtk found: YES 3.34.0
+Pkg-config binary for MachineChoice.HOST is cached.
+Determining dependency 'libhandy-0.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion libhandy-0.0` -> 0
+0.0.13
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags libhandy-0.0` -> 0
+-I/app/include/libhandy-0.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/libffi-3.2.1/include 
-I/usr/include/harfbuzz -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi 
-I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/at-spi-2.0 -pthread
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libhandy-0.0 --libs` -> 0
+-L/app/lib/ -lhandy-0.0 -L/usr/lib/x86_64-linux-gnu -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 
-lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config libhandy-0.0 --libs` -> 0
+-L/app/lib/ -lhandy-0.0 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 
-lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
+Run-time dependency libhandy-0.0 found: YES 0.0.13
+Program valadoc found: NO
+Configuring config.h using configuration
+Program build-aux/meson_post_install.py found: YES (/usr/bin/python3 
/home/julian/playground/gnome-contacts/build-aux/meson_post_install.py)
+Pkg-config binary for MachineChoice.BUILD is not cached.
+Pkg-config binary missing from cross or native file, or env var undefined.
+Trying a default pkg-config fallback at pkg-config
+Trying pkg-config binary pkg-config for machine MachineChoice.BUILD at ['/usr/bin/pkg-config']
+Found pkg-config: /usr/bin/pkg-config (1.6.3)
+Determining dependency 'glib-2.0' with pkg-config executable '/usr/bin/pkg-config'
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --modversion glib-2.0` -> 0
+2.63.3
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config --cflags glib-2.0` -> 0
+-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config glib-2.0 --libs` -> 0
+-L/usr/lib/x86_64-linux-gnu -lglib-2.0
+PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+Called `/usr/bin/pkg-config glib-2.0 --libs` -> 0
+-lglib-2.0
+Configuring org.gnome.Contacts.desktop.in using configuration
+Program desktop-file-validate found: YES (/usr/bin/desktop-file-validate)
+Adding test "validate-desktop"
+Configuring org.gnome.Contacts.appdata.xml.in using configuration
+Program appstream-util found: YES (/usr/bin/appstream-util)
+Adding test "validate-appdata"
+Configuring org.gnome.Contacts.Devel.service using configuration
+Configuring org.gnome.Contacts.Devel.SearchProvider.service using configuration
+Configuring org.gnome.Contacts.Devel.search-provider.ini using configuration
+Program xsltproc found: YES (/usr/bin/xsltproc)
+Adding test "basic-test"
+Build targets in project: 13
+Found ninja-1.9.0 at /usr/bin/ninja
diff --git a/_build/meson-private/build.dat b/_build/meson-private/build.dat
new file mode 100644
index 0000000..b72a890
Binary files /dev/null and b/_build/meson-private/build.dat differ
diff --git a/_build/meson-private/cleantrees.dat b/_build/meson-private/cleantrees.dat
new file mode 100644
index 0000000..8720d70
Binary files /dev/null and b/_build/meson-private/cleantrees.dat differ
diff --git a/_build/meson-private/cmd_line.txt b/_build/meson-private/cmd_line.txt
new file mode 100644
index 0000000..ecf5311
--- /dev/null
+++ b/_build/meson-private/cmd_line.txt
@@ -0,0 +1,7 @@
+[options]
+tracing = true
+profile = development
+prefix = /app
+
+[properties]
+
diff --git a/_build/meson-private/coredata.dat b/_build/meson-private/coredata.dat
new file mode 100644
index 0000000..8721132
Binary files /dev/null and b/_build/meson-private/coredata.dat differ
diff --git a/_build/meson-private/install.dat b/_build/meson-private/install.dat
new file mode 100644
index 0000000..49f368b
Binary files /dev/null and b/_build/meson-private/install.dat differ
diff --git a/_build/meson-private/meson.lock b/_build/meson-private/meson.lock
new file mode 100644
index 0000000..e69de29
diff --git a/_build/meson-private/meson_benchmark_setup.dat b/_build/meson-private/meson_benchmark_setup.dat
new file mode 100644
index 0000000..482c0e3
Binary files /dev/null and b/_build/meson-private/meson_benchmark_setup.dat differ
diff --git a/_build/meson-private/meson_test_setup.dat b/_build/meson-private/meson_test_setup.dat
new file mode 100644
index 0000000..92a8b0c
Binary files /dev/null and b/_build/meson-private/meson_test_setup.dat differ
diff --git a/_build/meson-private/sanitycheckc.c b/_build/meson-private/sanitycheckc.c
new file mode 100644
index 0000000..0f968e8
--- /dev/null
+++ b/_build/meson-private/sanitycheckc.c
@@ -0,0 +1 @@
+int main() { int class=0; return class; }
diff --git a/_build/meson-private/sanitycheckc.exe b/_build/meson-private/sanitycheckc.exe
new file mode 100755
index 0000000..18fe7e7
Binary files /dev/null and b/_build/meson-private/sanitycheckc.exe differ
diff --git a/_build/po/af.gmo b/_build/po/af.gmo
new file mode 100644
index 0000000..fec80eb
Binary files /dev/null and b/_build/po/af.gmo differ
diff --git a/_build/po/ar.gmo b/_build/po/ar.gmo
new file mode 100644
index 0000000..5216af9
Binary files /dev/null and b/_build/po/ar.gmo differ
diff --git a/_build/po/as.gmo b/_build/po/as.gmo
new file mode 100644
index 0000000..371f4be
Binary files /dev/null and b/_build/po/as.gmo differ
diff --git a/_build/po/ast.gmo b/_build/po/ast.gmo
new file mode 100644
index 0000000..1d6138e
Binary files /dev/null and b/_build/po/ast.gmo differ
diff --git a/_build/po/be.gmo b/_build/po/be.gmo
new file mode 100644
index 0000000..36acc4b
Binary files /dev/null and b/_build/po/be.gmo differ
diff --git a/_build/po/bg.gmo b/_build/po/bg.gmo
new file mode 100644
index 0000000..4bc527c
Binary files /dev/null and b/_build/po/bg.gmo differ
diff --git a/_build/po/bn_IN.gmo b/_build/po/bn_IN.gmo
new file mode 100644
index 0000000..4def845
Binary files /dev/null and b/_build/po/bn_IN.gmo differ
diff --git a/_build/po/bs.gmo b/_build/po/bs.gmo
new file mode 100644
index 0000000..d4bc2ac
Binary files /dev/null and b/_build/po/bs.gmo differ
diff --git a/_build/po/ca.gmo b/_build/po/ca.gmo
new file mode 100644
index 0000000..a3f9617
Binary files /dev/null and b/_build/po/ca.gmo differ
diff --git a/_build/po/ca valencia gmo b/_build/po/ca valencia gmo
new file mode 100644
index 0000000..d23113d
Binary files /dev/null and b/_build/po/ca valencia gmo differ
diff --git a/_build/po/cs.gmo b/_build/po/cs.gmo
new file mode 100644
index 0000000..4b68fee
Binary files /dev/null and b/_build/po/cs.gmo differ
diff --git a/_build/po/da.gmo b/_build/po/da.gmo
new file mode 100644
index 0000000..939ea96
Binary files /dev/null and b/_build/po/da.gmo differ
diff --git a/_build/po/de.gmo b/_build/po/de.gmo
new file mode 100644
index 0000000..3886547
Binary files /dev/null and b/_build/po/de.gmo differ
diff --git a/_build/po/el.gmo b/_build/po/el.gmo
new file mode 100644
index 0000000..6aa38e2
Binary files /dev/null and b/_build/po/el.gmo differ
diff --git a/_build/po/en_CA.gmo b/_build/po/en_CA.gmo
new file mode 100644
index 0000000..fe61451
Binary files /dev/null and b/_build/po/en_CA.gmo differ
diff --git a/_build/po/en_GB.gmo b/_build/po/en_GB.gmo
new file mode 100644
index 0000000..285ffb2
Binary files /dev/null and b/_build/po/en_GB.gmo differ
diff --git a/_build/po/eo.gmo b/_build/po/eo.gmo
new file mode 100644
index 0000000..f09f10e
Binary files /dev/null and b/_build/po/eo.gmo differ
diff --git a/_build/po/es.gmo b/_build/po/es.gmo
new file mode 100644
index 0000000..9f37bbd
Binary files /dev/null and b/_build/po/es.gmo differ
diff --git a/_build/po/et.gmo b/_build/po/et.gmo
new file mode 100644
index 0000000..fb97797
Binary files /dev/null and b/_build/po/et.gmo differ
diff --git a/_build/po/eu.gmo b/_build/po/eu.gmo
new file mode 100644
index 0000000..ba6f047
Binary files /dev/null and b/_build/po/eu.gmo differ
diff --git a/_build/po/fa.gmo b/_build/po/fa.gmo
new file mode 100644
index 0000000..486bc49
Binary files /dev/null and b/_build/po/fa.gmo differ
diff --git a/_build/po/fi.gmo b/_build/po/fi.gmo
new file mode 100644
index 0000000..e22b086
Binary files /dev/null and b/_build/po/fi.gmo differ
diff --git a/_build/po/fr.gmo b/_build/po/fr.gmo
new file mode 100644
index 0000000..813452b
Binary files /dev/null and b/_build/po/fr.gmo differ
diff --git a/_build/po/fur.gmo b/_build/po/fur.gmo
new file mode 100644
index 0000000..be2a51f
Binary files /dev/null and b/_build/po/fur.gmo differ
diff --git a/_build/po/ga.gmo b/_build/po/ga.gmo
new file mode 100644
index 0000000..52526e8
Binary files /dev/null and b/_build/po/ga.gmo differ
diff --git a/_build/po/gd.gmo b/_build/po/gd.gmo
new file mode 100644
index 0000000..bc8d305
Binary files /dev/null and b/_build/po/gd.gmo differ
diff --git a/_build/po/gl.gmo b/_build/po/gl.gmo
new file mode 100644
index 0000000..37d2b2d
Binary files /dev/null and b/_build/po/gl.gmo differ
diff --git a/_build/po/gu.gmo b/_build/po/gu.gmo
new file mode 100644
index 0000000..a5428b2
Binary files /dev/null and b/_build/po/gu.gmo differ
diff --git a/_build/po/he.gmo b/_build/po/he.gmo
new file mode 100644
index 0000000..1734ea4
Binary files /dev/null and b/_build/po/he.gmo differ
diff --git a/_build/po/hi.gmo b/_build/po/hi.gmo
new file mode 100644
index 0000000..a720cf8
Binary files /dev/null and b/_build/po/hi.gmo differ
diff --git a/_build/po/hr.gmo b/_build/po/hr.gmo
new file mode 100644
index 0000000..116b4ef
Binary files /dev/null and b/_build/po/hr.gmo differ
diff --git a/_build/po/hu.gmo b/_build/po/hu.gmo
new file mode 100644
index 0000000..62832e7
Binary files /dev/null and b/_build/po/hu.gmo differ
diff --git a/_build/po/id.gmo b/_build/po/id.gmo
new file mode 100644
index 0000000..5db6c17
Binary files /dev/null and b/_build/po/id.gmo differ
diff --git a/_build/po/is.gmo b/_build/po/is.gmo
new file mode 100644
index 0000000..ca5b05a
Binary files /dev/null and b/_build/po/is.gmo differ
diff --git a/_build/po/it.gmo b/_build/po/it.gmo
new file mode 100644
index 0000000..e8a8848
Binary files /dev/null and b/_build/po/it.gmo differ
diff --git a/_build/po/ja.gmo b/_build/po/ja.gmo
new file mode 100644
index 0000000..175503b
Binary files /dev/null and b/_build/po/ja.gmo differ
diff --git a/_build/po/kk.gmo b/_build/po/kk.gmo
new file mode 100644
index 0000000..5bdee65
Binary files /dev/null and b/_build/po/kk.gmo differ
diff --git a/_build/po/kn.gmo b/_build/po/kn.gmo
new file mode 100644
index 0000000..674e69d
Binary files /dev/null and b/_build/po/kn.gmo differ
diff --git a/_build/po/ko.gmo b/_build/po/ko.gmo
new file mode 100644
index 0000000..1491b54
Binary files /dev/null and b/_build/po/ko.gmo differ
diff --git a/_build/po/lt.gmo b/_build/po/lt.gmo
new file mode 100644
index 0000000..e00a6cf
Binary files /dev/null and b/_build/po/lt.gmo differ
diff --git a/_build/po/lv.gmo b/_build/po/lv.gmo
new file mode 100644
index 0000000..0211f7a
Binary files /dev/null and b/_build/po/lv.gmo differ
diff --git a/_build/po/mjw.gmo b/_build/po/mjw.gmo
new file mode 100644
index 0000000..af082a9
Binary files /dev/null and b/_build/po/mjw.gmo differ
diff --git a/_build/po/mk.gmo b/_build/po/mk.gmo
new file mode 100644
index 0000000..037eeb1
Binary files /dev/null and b/_build/po/mk.gmo differ
diff --git a/_build/po/ml.gmo b/_build/po/ml.gmo
new file mode 100644
index 0000000..dcefbdc
Binary files /dev/null and b/_build/po/ml.gmo differ
diff --git a/_build/po/mr.gmo b/_build/po/mr.gmo
new file mode 100644
index 0000000..81a2126
Binary files /dev/null and b/_build/po/mr.gmo differ
diff --git a/_build/po/nb.gmo b/_build/po/nb.gmo
new file mode 100644
index 0000000..264202b
Binary files /dev/null and b/_build/po/nb.gmo differ
diff --git a/_build/po/ne.gmo b/_build/po/ne.gmo
new file mode 100644
index 0000000..99c09ba
Binary files /dev/null and b/_build/po/ne.gmo differ
diff --git a/_build/po/nl.gmo b/_build/po/nl.gmo
new file mode 100644
index 0000000..1432944
Binary files /dev/null and b/_build/po/nl.gmo differ
diff --git a/_build/po/oc.gmo b/_build/po/oc.gmo
new file mode 100644
index 0000000..9b5853b
Binary files /dev/null and b/_build/po/oc.gmo differ
diff --git a/_build/po/or.gmo b/_build/po/or.gmo
new file mode 100644
index 0000000..8455983
Binary files /dev/null and b/_build/po/or.gmo differ
diff --git a/_build/po/pa.gmo b/_build/po/pa.gmo
new file mode 100644
index 0000000..295d5d3
Binary files /dev/null and b/_build/po/pa.gmo differ
diff --git a/_build/po/pl.gmo b/_build/po/pl.gmo
new file mode 100644
index 0000000..79a97dc
Binary files /dev/null and b/_build/po/pl.gmo differ
diff --git a/_build/po/pt.gmo b/_build/po/pt.gmo
new file mode 100644
index 0000000..c4def49
Binary files /dev/null and b/_build/po/pt.gmo differ
diff --git a/_build/po/pt_BR.gmo b/_build/po/pt_BR.gmo
new file mode 100644
index 0000000..7b7fa39
Binary files /dev/null and b/_build/po/pt_BR.gmo differ
diff --git a/_build/po/ro.gmo b/_build/po/ro.gmo
new file mode 100644
index 0000000..fdf1d21
Binary files /dev/null and b/_build/po/ro.gmo differ
diff --git a/_build/po/ru.gmo b/_build/po/ru.gmo
new file mode 100644
index 0000000..a8e3c22
Binary files /dev/null and b/_build/po/ru.gmo differ
diff --git a/_build/po/sk.gmo b/_build/po/sk.gmo
new file mode 100644
index 0000000..4bb49ba
Binary files /dev/null and b/_build/po/sk.gmo differ
diff --git a/_build/po/sl.gmo b/_build/po/sl.gmo
new file mode 100644
index 0000000..1aeaa7a
Binary files /dev/null and b/_build/po/sl.gmo differ
diff --git a/_build/po/sr.gmo b/_build/po/sr.gmo
new file mode 100644
index 0000000..357b922
Binary files /dev/null and b/_build/po/sr.gmo differ
diff --git a/_build/po/sr latin gmo b/_build/po/sr latin gmo
new file mode 100644
index 0000000..fa371fb
Binary files /dev/null and b/_build/po/sr latin gmo differ
diff --git a/_build/po/sv.gmo b/_build/po/sv.gmo
new file mode 100644
index 0000000..596ad14
Binary files /dev/null and b/_build/po/sv.gmo differ
diff --git a/_build/po/ta.gmo b/_build/po/ta.gmo
new file mode 100644
index 0000000..f8a835e
Binary files /dev/null and b/_build/po/ta.gmo differ
diff --git a/_build/po/te.gmo b/_build/po/te.gmo
new file mode 100644
index 0000000..2f2bb8a
Binary files /dev/null and b/_build/po/te.gmo differ
diff --git a/_build/po/tg.gmo b/_build/po/tg.gmo
new file mode 100644
index 0000000..3805714
Binary files /dev/null and b/_build/po/tg.gmo differ
diff --git a/_build/po/th.gmo b/_build/po/th.gmo
new file mode 100644
index 0000000..850b387
Binary files /dev/null and b/_build/po/th.gmo differ
diff --git a/_build/po/tr.gmo b/_build/po/tr.gmo
new file mode 100644
index 0000000..0693963
Binary files /dev/null and b/_build/po/tr.gmo differ
diff --git a/_build/po/ug.gmo b/_build/po/ug.gmo
new file mode 100644
index 0000000..95a9737
Binary files /dev/null and b/_build/po/ug.gmo differ
diff --git a/_build/po/uk.gmo b/_build/po/uk.gmo
new file mode 100644
index 0000000..9b7117c
Binary files /dev/null and b/_build/po/uk.gmo differ
diff --git a/_build/po/vi.gmo b/_build/po/vi.gmo
new file mode 100644
index 0000000..cc0f505
Binary files /dev/null and b/_build/po/vi.gmo differ
diff --git a/_build/po/zh_CN.gmo b/_build/po/zh_CN.gmo
new file mode 100644
index 0000000..0f6f18c
Binary files /dev/null and b/_build/po/zh_CN.gmo differ
diff --git a/_build/po/zh_HK.gmo b/_build/po/zh_HK.gmo
new file mode 100644
index 0000000..3638614
Binary files /dev/null and b/_build/po/zh_HK.gmo differ
diff --git a/_build/po/zh_TW.gmo b/_build/po/zh_TW.gmo
new file mode 100644
index 0000000..7b63a82
Binary files /dev/null and b/_build/po/zh_TW.gmo differ
diff --git a/_build/src/25a6634@@contacts@sta/contacts-avatar-utils.c 
b/_build/src/25a6634@@contacts@sta/contacts-avatar-utils.c
new file mode 100644
index 0000000..6d0001a
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-avatar-utils.c
@@ -0,0 +1,861 @@
+/* contacts-avatar-utils.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-avatar-utils.vala, do not modify */
+
+/*
+ * Copyright 2019 Michael Gratton <mike vee net>
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later). See the COPYING file in this distribution.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <cairo.h>
+#include <float.h>
+#include <math.h>
+#include <gdk/gdk.h>
+#include <pango/pango.h>
+#include <pango/pangocairo.h>
+#include <gtk/gtk.h>
+
+#define __vala_PangoFontDescription_free0(var) ((var == NULL) ? NULL : (var = 
(_vala_PangoFontDescription_free (var), NULL)))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _cairo_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_destroy (var), NULL)))
+#define _cairo_surface_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL)))
+#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
+
+GdkPixbuf* contacts_avatar_utils_generate_user_picture (const gchar* name,
+                                                        gint size,
+                                                        gboolean label);
+void contacts_avatar_utils_get_color_for_name (const gchar* name,
+                                               GdkRGBA* result);
+gchar* contacts_avatar_utils_extract_initials_from_name (const gchar* name);
+static void _vala_PangoFontDescription_free (PangoFontDescription* self);
+GdkPixbuf* contacts_avatar_utils_round_image (GdkPixbuf* source);
+
+static void
+_vala_PangoFontDescription_free (PangoFontDescription* self)
+{
+#line 38 "../src/contacts-avatar-utils.vala"
+       g_boxed_free (pango_font_description_get_type (), self);
+#line 46 "contacts-avatar-utils.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 51 "../src/contacts-avatar-utils.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 54 "contacts-avatar-utils.c"
+}
+
+GdkPixbuf*
+contacts_avatar_utils_generate_user_picture (const gchar* name,
+                                             gint size,
+                                             gboolean label)
+{
+       cairo_surface_t* surface = NULL;
+       cairo_surface_t* _tmp0_;
+       cairo_t* cr = NULL;
+       cairo_surface_t* _tmp1_;
+       cairo_t* _tmp2_;
+       cairo_t* _tmp3_;
+       GdkRGBA color = {0};
+       GdkRGBA _tmp4_ = {0};
+       cairo_t* _tmp5_;
+       GdkRGBA _tmp6_;
+       GdkRGBA _tmp7_;
+       GdkRGBA _tmp8_;
+       cairo_t* _tmp9_;
+       cairo_surface_t* _tmp48_;
+       GdkPixbuf* _tmp49_;
+       GError* _inner_error0_ = NULL;
+       GdkPixbuf* result = NULL;
+#line 15 "../src/contacts-avatar-utils.vala"
+       g_return_val_if_fail (name != NULL, NULL);
+#line 16 "../src/contacts-avatar-utils.vala"
+       _tmp0_ = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, size, size);
+#line 16 "../src/contacts-avatar-utils.vala"
+       surface = _tmp0_;
+#line 19 "../src/contacts-avatar-utils.vala"
+       _tmp1_ = surface;
+#line 19 "../src/contacts-avatar-utils.vala"
+       _tmp2_ = cairo_create (_tmp1_);
+#line 19 "../src/contacts-avatar-utils.vala"
+       cr = _tmp2_;
+#line 20 "../src/contacts-avatar-utils.vala"
+       _tmp3_ = cr;
+#line 20 "../src/contacts-avatar-utils.vala"
+       cairo_rectangle (_tmp3_, (gdouble) 0, (gdouble) 0, (gdouble) size, (gdouble) size);
+#line 23 "../src/contacts-avatar-utils.vala"
+       contacts_avatar_utils_get_color_for_name (name, &_tmp4_);
+#line 23 "../src/contacts-avatar-utils.vala"
+       color = _tmp4_;
+#line 24 "../src/contacts-avatar-utils.vala"
+       _tmp5_ = cr;
+#line 24 "../src/contacts-avatar-utils.vala"
+       _tmp6_ = color;
+#line 24 "../src/contacts-avatar-utils.vala"
+       _tmp7_ = color;
+#line 24 "../src/contacts-avatar-utils.vala"
+       _tmp8_ = color;
+#line 24 "../src/contacts-avatar-utils.vala"
+       cairo_set_source_rgb (_tmp5_, _tmp6_.red / 255.0, _tmp7_.green / 255.0, _tmp8_.blue / 255.0);
+#line 27 "../src/contacts-avatar-utils.vala"
+       _tmp9_ = cr;
+#line 27 "../src/contacts-avatar-utils.vala"
+       cairo_fill (_tmp9_);
+#line 30 "../src/contacts-avatar-utils.vala"
+       if (label) {
+#line 115 "contacts-avatar-utils.c"
+               gchar* initials = NULL;
+               gchar* _tmp10_;
+               const gchar* _tmp11_;
+#line 31 "../src/contacts-avatar-utils.vala"
+               _tmp10_ = contacts_avatar_utils_extract_initials_from_name (name);
+#line 31 "../src/contacts-avatar-utils.vala"
+               initials = _tmp10_;
+#line 32 "../src/contacts-avatar-utils.vala"
+               _tmp11_ = initials;
+#line 32 "../src/contacts-avatar-utils.vala"
+               if (_tmp11_ != NULL) {
+#line 127 "contacts-avatar-utils.c"
+                       gchar* font = NULL;
+                       gchar* _tmp12_;
+                       cairo_t* _tmp13_;
+                       PangoLayout* layout = NULL;
+                       cairo_t* _tmp14_;
+                       PangoLayout* _tmp15_;
+                       PangoLayout* _tmp16_;
+                       const gchar* _tmp17_;
+                       PangoLayout* _tmp18_;
+                       const gchar* _tmp19_;
+                       PangoFontDescription* _tmp20_;
+                       PangoFontDescription* _tmp21_;
+                       gint width = 0;
+                       gint height = 0;
+                       PangoLayout* _tmp22_;
+                       gint _tmp23_ = 0;
+                       gint _tmp24_ = 0;
+                       cairo_t* _tmp25_;
+                       cairo_t* _tmp26_;
+                       cairo_t* _tmp27_;
+                       PangoLayout* _tmp28_;
+#line 33 "../src/contacts-avatar-utils.vala"
+                       _tmp12_ = g_strdup_printf ("Cantarell Ultra-Bold %d", (gint) ceil ((gdouble) (size / 
3)));
+#line 33 "../src/contacts-avatar-utils.vala"
+                       font = _tmp12_;
+#line 35 "../src/contacts-avatar-utils.vala"
+                       _tmp13_ = cr;
+#line 35 "../src/contacts-avatar-utils.vala"
+                       cairo_set_source_rgb (_tmp13_, 1.0, 1.0, 1.0);
+#line 36 "../src/contacts-avatar-utils.vala"
+                       _tmp14_ = cr;
+#line 36 "../src/contacts-avatar-utils.vala"
+                       _tmp15_ = pango_cairo_create_layout (_tmp14_);
+#line 36 "../src/contacts-avatar-utils.vala"
+                       layout = _tmp15_;
+#line 37 "../src/contacts-avatar-utils.vala"
+                       _tmp16_ = layout;
+#line 37 "../src/contacts-avatar-utils.vala"
+                       _tmp17_ = initials;
+#line 37 "../src/contacts-avatar-utils.vala"
+                       pango_layout_set_text (_tmp16_, _tmp17_, -1);
+#line 38 "../src/contacts-avatar-utils.vala"
+                       _tmp18_ = layout;
+#line 38 "../src/contacts-avatar-utils.vala"
+                       _tmp19_ = font;
+#line 38 "../src/contacts-avatar-utils.vala"
+                       _tmp20_ = pango_font_description_from_string (_tmp19_);
+#line 38 "../src/contacts-avatar-utils.vala"
+                       _tmp21_ = _tmp20_;
+#line 38 "../src/contacts-avatar-utils.vala"
+                       pango_layout_set_font_description (_tmp18_, _tmp21_);
+#line 38 "../src/contacts-avatar-utils.vala"
+                       __vala_PangoFontDescription_free0 (_tmp21_);
+#line 41 "../src/contacts-avatar-utils.vala"
+                       _tmp22_ = layout;
+#line 41 "../src/contacts-avatar-utils.vala"
+                       pango_layout_get_size (_tmp22_, &_tmp23_, &_tmp24_);
+#line 41 "../src/contacts-avatar-utils.vala"
+                       width = _tmp23_;
+#line 41 "../src/contacts-avatar-utils.vala"
+                       height = _tmp24_;
+#line 42 "../src/contacts-avatar-utils.vala"
+                       _tmp25_ = cr;
+#line 42 "../src/contacts-avatar-utils.vala"
+                       cairo_translate (_tmp25_, (gdouble) (size / 2), (gdouble) (size / 2));
+#line 43 "../src/contacts-avatar-utils.vala"
+                       _tmp26_ = cr;
+#line 43 "../src/contacts-avatar-utils.vala"
+                       cairo_move_to (_tmp26_, (-(((gdouble) width) / PANGO_SCALE)) / 2, (-(((gdouble) 
height) / PANGO_SCALE)) / 2);
+#line 47 "../src/contacts-avatar-utils.vala"
+                       _tmp27_ = cr;
+#line 47 "../src/contacts-avatar-utils.vala"
+                       _tmp28_ = layout;
+#line 47 "../src/contacts-avatar-utils.vala"
+                       pango_cairo_show_layout (_tmp27_, _tmp28_);
+#line 32 "../src/contacts-avatar-utils.vala"
+                       _g_object_unref0 (layout);
+#line 32 "../src/contacts-avatar-utils.vala"
+                       _g_free0 (font);
+#line 207 "contacts-avatar-utils.c"
+               }
+#line 30 "../src/contacts-avatar-utils.vala"
+               _g_free0 (initials);
+#line 211 "contacts-avatar-utils.c"
+       } else {
+               {
+                       GtkIconTheme* theme = NULL;
+                       GtkIconTheme* _tmp29_;
+                       GtkIconTheme* _tmp30_;
+                       GtkIconInfo* fallback_avatar = NULL;
+                       GtkIconTheme* _tmp31_;
+                       GtkIconInfo* _tmp32_;
+                       GdkRGBA fg_color = {0};
+                       GdkRGBA _tmp33_ = {0};
+                       GdkPixbuf* icon_pixbuf = NULL;
+                       GtkIconInfo* _tmp34_;
+                       GdkRGBA _tmp35_;
+                       GdkPixbuf* _tmp36_;
+                       gdouble x = 0.0;
+                       GdkPixbuf* _tmp37_;
+                       gint _tmp38_;
+                       gint _tmp39_;
+                       gdouble y = 0.0;
+                       GdkPixbuf* _tmp40_;
+                       gint _tmp41_;
+                       gint _tmp42_;
+                       cairo_t* _tmp43_;
+                       GdkPixbuf* _tmp44_;
+                       cairo_t* _tmp45_;
+#line 51 "../src/contacts-avatar-utils.vala"
+                       _tmp29_ = gtk_icon_theme_get_default ();
+#line 51 "../src/contacts-avatar-utils.vala"
+                       _tmp30_ = _g_object_ref0 (_tmp29_);
+#line 51 "../src/contacts-avatar-utils.vala"
+                       theme = _tmp30_;
+#line 52 "../src/contacts-avatar-utils.vala"
+                       _tmp31_ = theme;
+#line 52 "../src/contacts-avatar-utils.vala"
+                       _tmp32_ = gtk_icon_theme_lookup_icon (_tmp31_, "avatar-default", (size * 1) / 2, 
GTK_ICON_LOOKUP_FORCE_SYMBOLIC);
+#line 52 "../src/contacts-avatar-utils.vala"
+                       fallback_avatar = _tmp32_;
+#line 55 "../src/contacts-avatar-utils.vala"
+                       _tmp33_.red = (gdouble) 1;
+#line 55 "../src/contacts-avatar-utils.vala"
+                       _tmp33_.green = (gdouble) 1;
+#line 55 "../src/contacts-avatar-utils.vala"
+                       _tmp33_.blue = (gdouble) 1;
+#line 55 "../src/contacts-avatar-utils.vala"
+                       _tmp33_.alpha = (gdouble) 1;
+#line 55 "../src/contacts-avatar-utils.vala"
+                       fg_color = _tmp33_;
+#line 56 "../src/contacts-avatar-utils.vala"
+                       _tmp34_ = fallback_avatar;
+#line 56 "../src/contacts-avatar-utils.vala"
+                       _tmp35_ = fg_color;
+#line 56 "../src/contacts-avatar-utils.vala"
+                       _tmp36_ = gtk_icon_info_load_symbolic (_tmp34_, &_tmp35_, NULL, NULL, NULL, NULL, 
&_inner_error0_);
+#line 56 "../src/contacts-avatar-utils.vala"
+                       icon_pixbuf = _tmp36_;
+#line 56 "../src/contacts-avatar-utils.vala"
+                       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 56 "../src/contacts-avatar-utils.vala"
+                               _g_object_unref0 (fallback_avatar);
+#line 56 "../src/contacts-avatar-utils.vala"
+                               _g_object_unref0 (theme);
+#line 273 "contacts-avatar-utils.c"
+                               goto __catch11_g_error;
+                       }
+#line 57 "../src/contacts-avatar-utils.vala"
+                       _tmp37_ = icon_pixbuf;
+#line 57 "../src/contacts-avatar-utils.vala"
+                       _tmp38_ = gdk_pixbuf_get_width (_tmp37_);
+#line 57 "../src/contacts-avatar-utils.vala"
+                       _tmp39_ = _tmp38_;
+#line 57 "../src/contacts-avatar-utils.vala"
+                       x = (((gdouble) size) / 2.0) - (((gdouble) _tmp39_) / 2.0);
+#line 59 "../src/contacts-avatar-utils.vala"
+                       _tmp40_ = icon_pixbuf;
+#line 59 "../src/contacts-avatar-utils.vala"
+                       _tmp41_ = gdk_pixbuf_get_height (_tmp40_);
+#line 59 "../src/contacts-avatar-utils.vala"
+                       _tmp42_ = _tmp41_;
+#line 59 "../src/contacts-avatar-utils.vala"
+                       y = ((((gdouble) size) / 2.0) - (((gdouble) _tmp42_) / 2.0)) - ((2 * size) / 100.0);
+#line 60 "../src/contacts-avatar-utils.vala"
+                       _tmp43_ = cr;
+#line 60 "../src/contacts-avatar-utils.vala"
+                       _tmp44_ = icon_pixbuf;
+#line 60 "../src/contacts-avatar-utils.vala"
+                       gdk_cairo_set_source_pixbuf (_tmp43_, _tmp44_, x, y);
+#line 61 "../src/contacts-avatar-utils.vala"
+                       _tmp45_ = cr;
+#line 61 "../src/contacts-avatar-utils.vala"
+                       cairo_paint (_tmp45_);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       _g_object_unref0 (icon_pixbuf);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       _g_object_unref0 (fallback_avatar);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       _g_object_unref0 (theme);
+#line 308 "contacts-avatar-utils.c"
+               }
+               goto __finally11;
+               __catch11_g_error:
+               {
+                       GError* e = NULL;
+                       GError* _tmp46_;
+                       const gchar* _tmp47_;
+#line 50 "../src/contacts-avatar-utils.vala"
+                       e = _inner_error0_;
+#line 50 "../src/contacts-avatar-utils.vala"
+                       _inner_error0_ = NULL;
+#line 63 "../src/contacts-avatar-utils.vala"
+                       _tmp46_ = e;
+#line 63 "../src/contacts-avatar-utils.vala"
+                       _tmp47_ = _tmp46_->message;
+#line 63 "../src/contacts-avatar-utils.vala"
+                       g_warning ("contacts-avatar-utils.vala:63: Couldn't get default avatar icon: %s", 
_tmp47_);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       _g_error_free0 (e);
+#line 328 "contacts-avatar-utils.c"
+               }
+               __finally11:
+#line 50 "../src/contacts-avatar-utils.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 50 "../src/contacts-avatar-utils.vala"
+                       _cairo_destroy0 (cr);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       _cairo_surface_destroy0 (surface);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       g_clear_error (&_inner_error0_);
+#line 50 "../src/contacts-avatar-utils.vala"
+                       return NULL;
+#line 343 "contacts-avatar-utils.c"
+               }
+       }
+#line 67 "../src/contacts-avatar-utils.vala"
+       _tmp48_ = surface;
+#line 67 "../src/contacts-avatar-utils.vala"
+       _tmp49_ = gdk_pixbuf_get_from_surface (_tmp48_, 0, 0, size, size);
+#line 67 "../src/contacts-avatar-utils.vala"
+       result = _tmp49_;
+#line 67 "../src/contacts-avatar-utils.vala"
+       _cairo_destroy0 (cr);
+#line 67 "../src/contacts-avatar-utils.vala"
+       _cairo_surface_destroy0 (surface);
+#line 67 "../src/contacts-avatar-utils.vala"
+       return result;
+#line 358 "contacts-avatar-utils.c"
+}
+
+GdkPixbuf*
+contacts_avatar_utils_round_image (GdkPixbuf* source)
+{
+       gint size = 0;
+       gint _tmp0_;
+       gint _tmp1_;
+       cairo_surface_t* surface = NULL;
+       cairo_surface_t* _tmp2_;
+       cairo_t* cr = NULL;
+       cairo_t* _tmp3_;
+       GdkPixbuf* _tmp4_;
+       GdkPixbuf* result = NULL;
+#line 72 "../src/contacts-avatar-utils.vala"
+       g_return_val_if_fail (source != NULL, NULL);
+#line 73 "../src/contacts-avatar-utils.vala"
+       _tmp0_ = gdk_pixbuf_get_width (source);
+#line 73 "../src/contacts-avatar-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 73 "../src/contacts-avatar-utils.vala"
+       size = _tmp1_;
+#line 74 "../src/contacts-avatar-utils.vala"
+       _tmp2_ = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, size, size);
+#line 74 "../src/contacts-avatar-utils.vala"
+       surface = _tmp2_;
+#line 77 "../src/contacts-avatar-utils.vala"
+       _tmp3_ = cairo_create (surface);
+#line 77 "../src/contacts-avatar-utils.vala"
+       cr = _tmp3_;
+#line 80 "../src/contacts-avatar-utils.vala"
+       cairo_arc (cr, (gdouble) (size / 2), (gdouble) (size / 2), (gdouble) (size / 2), (gdouble) 0, 2 * 
G_PI);
+#line 81 "../src/contacts-avatar-utils.vala"
+       cairo_clip (cr);
+#line 82 "../src/contacts-avatar-utils.vala"
+       cairo_new_path (cr);
+#line 84 "../src/contacts-avatar-utils.vala"
+       gdk_cairo_set_source_pixbuf (cr, source, (gdouble) 0, (gdouble) 0);
+#line 85 "../src/contacts-avatar-utils.vala"
+       cairo_paint (cr);
+#line 87 "../src/contacts-avatar-utils.vala"
+       _tmp4_ = gdk_pixbuf_get_from_surface (surface, 0, 0, size, size);
+#line 87 "../src/contacts-avatar-utils.vala"
+       result = _tmp4_;
+#line 87 "../src/contacts-avatar-utils.vala"
+       _cairo_destroy0 (cr);
+#line 87 "../src/contacts-avatar-utils.vala"
+       _cairo_surface_destroy0 (surface);
+#line 87 "../src/contacts-avatar-utils.vala"
+       return result;
+#line 409 "contacts-avatar-utils.c"
+}
+
+static gchar*
+string_strip (const gchar* self)
+{
+       gchar* _result_ = NULL;
+       gchar* _tmp0_;
+       gchar* result = NULL;
+#line 1359 "glib-2.0.vapi"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 1360 "glib-2.0.vapi"
+       _tmp0_ = g_strdup (self);
+#line 1360 "glib-2.0.vapi"
+       _result_ = _tmp0_;
+#line 1361 "glib-2.0.vapi"
+       g_strstrip (_result_);
+#line 1362 "glib-2.0.vapi"
+       result = _result_;
+#line 1362 "glib-2.0.vapi"
+       return result;
+#line 430 "contacts-avatar-utils.c"
+}
+
+static gboolean
+string_get_next_char (const gchar* self,
+                      gint* index,
+                      gunichar* c)
+{
+       gunichar _vala_c = 0U;
+       gboolean result = FALSE;
+#line 1251 "glib-2.0.vapi"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 1252 "glib-2.0.vapi"
+       _vala_c = g_utf8_get_char (((gchar*) self) + (*index));
+#line 1253 "glib-2.0.vapi"
+       if (_vala_c != ((gunichar) 0)) {
+#line 446 "contacts-avatar-utils.c"
+               gchar* _tmp0_;
+#line 1254 "glib-2.0.vapi"
+               _tmp0_ = g_utf8_next_char (((gchar*) self) + (*index));
+#line 1254 "glib-2.0.vapi"
+               *index = (gint) (_tmp0_ - ((gchar*) self));
+#line 1255 "glib-2.0.vapi"
+               result = TRUE;
+#line 1255 "glib-2.0.vapi"
+               if (c) {
+#line 1255 "glib-2.0.vapi"
+                       *c = _vala_c;
+#line 458 "contacts-avatar-utils.c"
+               }
+#line 1255 "glib-2.0.vapi"
+               return result;
+#line 462 "contacts-avatar-utils.c"
+       } else {
+#line 1257 "glib-2.0.vapi"
+               result = FALSE;
+#line 1257 "glib-2.0.vapi"
+               if (c) {
+#line 1257 "glib-2.0.vapi"
+                       *c = _vala_c;
+#line 470 "contacts-avatar-utils.c"
+               }
+#line 1257 "glib-2.0.vapi"
+               return result;
+#line 474 "contacts-avatar-utils.c"
+       }
+#line 1251 "glib-2.0.vapi"
+       if (c) {
+#line 1251 "glib-2.0.vapi"
+               *c = _vala_c;
+#line 480 "contacts-avatar-utils.c"
+       }
+}
+
+static gint
+string_last_index_of_char (const gchar* self,
+                           gunichar c,
+                           gint start_index)
+{
+       gchar* _result_ = NULL;
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       gint result = 0;
+#line 1163 "glib-2.0.vapi"
+       g_return_val_if_fail (self != NULL, 0);
+#line 1164 "glib-2.0.vapi"
+       _tmp0_ = g_utf8_strrchr (((gchar*) self) + start_index, (gssize) -1, c);
+#line 1164 "glib-2.0.vapi"
+       _result_ = _tmp0_;
+#line 1166 "glib-2.0.vapi"
+       _tmp1_ = _result_;
+#line 1166 "glib-2.0.vapi"
+       if (_tmp1_ != NULL) {
+#line 503 "contacts-avatar-utils.c"
+               gchar* _tmp2_;
+#line 1167 "glib-2.0.vapi"
+               _tmp2_ = _result_;
+#line 1167 "glib-2.0.vapi"
+               result = (gint) (_tmp2_ - ((gchar*) self));
+#line 1167 "glib-2.0.vapi"
+               return result;
+#line 511 "contacts-avatar-utils.c"
+       } else {
+#line 1169 "glib-2.0.vapi"
+               result = -1;
+#line 1169 "glib-2.0.vapi"
+               return result;
+#line 517 "contacts-avatar-utils.c"
+       }
+}
+
+static guint8*
+g_string_get_data (GString* self,
+                   gint* result_length1)
+{
+       guint8* result;
+       guint8* res = NULL;
+       const gchar* _tmp0_;
+       gint res_length1;
+       gint _res_size_;
+       guint8* _tmp1_;
+       gint _tmp1__length1;
+#line 5147 "glib-2.0.vapi"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 5148 "glib-2.0.vapi"
+       _tmp0_ = self->str;
+#line 5148 "glib-2.0.vapi"
+       res = (guint8*) _tmp0_;
+#line 5148 "glib-2.0.vapi"
+       res_length1 = -1;
+#line 5148 "glib-2.0.vapi"
+       _res_size_ = res_length1;
+#line 5149 "glib-2.0.vapi"
+       res_length1 = (gint) self->len;
+#line 5150 "glib-2.0.vapi"
+       _tmp1_ = res;
+#line 5150 "glib-2.0.vapi"
+       _tmp1__length1 = res_length1;
+#line 5150 "glib-2.0.vapi"
+       if (result_length1) {
+#line 5150 "glib-2.0.vapi"
+               *result_length1 = _tmp1__length1;
+#line 552 "contacts-avatar-utils.c"
+       }
+#line 5150 "glib-2.0.vapi"
+       result = _tmp1_;
+#line 5150 "glib-2.0.vapi"
+       return result;
+#line 558 "contacts-avatar-utils.c"
+}
+
+gchar*
+contacts_avatar_utils_extract_initials_from_name (const gchar* name)
+{
+       gchar* normalized = NULL;
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       gchar* _tmp4_;
+       gchar* _tmp5_;
+       gchar* initials = NULL;
+       const gchar* _tmp6_;
+       gchar* result = NULL;
+#line 92 "../src/contacts-avatar-utils.vala"
+       g_return_val_if_fail (name != NULL, NULL);
+#line 93 "../src/contacts-avatar-utils.vala"
+       _tmp0_ = string_strip (name);
+#line 93 "../src/contacts-avatar-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 93 "../src/contacts-avatar-utils.vala"
+       _tmp2_ = g_utf8_strup (_tmp1_, (gssize) -1);
+#line 93 "../src/contacts-avatar-utils.vala"
+       _tmp3_ = _tmp2_;
+#line 93 "../src/contacts-avatar-utils.vala"
+       _tmp4_ = g_utf8_normalize (_tmp3_, (gssize) -1, G_NORMALIZE_DEFAULT);
+#line 93 "../src/contacts-avatar-utils.vala"
+       _tmp5_ = _tmp4_;
+#line 93 "../src/contacts-avatar-utils.vala"
+       _g_free0 (_tmp3_);
+#line 93 "../src/contacts-avatar-utils.vala"
+       _g_free0 (_tmp1_);
+#line 93 "../src/contacts-avatar-utils.vala"
+       normalized = _tmp5_;
+#line 94 "../src/contacts-avatar-utils.vala"
+       initials = NULL;
+#line 95 "../src/contacts-avatar-utils.vala"
+       _tmp6_ = normalized;
+#line 95 "../src/contacts-avatar-utils.vala"
+       if (g_strcmp0 (_tmp6_, "") != 0) {
+#line 600 "contacts-avatar-utils.c"
+               GString* buf = NULL;
+               GString* _tmp7_;
+               gunichar c = 0U;
+               gint index = 0;
+               const gchar* _tmp14_;
+               GString* _tmp21_;
+               guint8* _tmp22_;
+               gint _tmp22__length1;
+               guint8* _tmp23_;
+               gint _tmp23__length1;
+#line 96 "../src/contacts-avatar-utils.vala"
+               _tmp7_ = g_string_new ("");
+#line 96 "../src/contacts-avatar-utils.vala"
+               buf = _tmp7_;
+#line 97 "../src/contacts-avatar-utils.vala"
+               c = (gunichar) 0;
+#line 98 "../src/contacts-avatar-utils.vala"
+               index = 0;
+#line 619 "contacts-avatar-utils.c"
+               {
+                       gint i = 0;
+#line 101 "../src/contacts-avatar-utils.vala"
+                       i = 0;
+#line 624 "contacts-avatar-utils.c"
+                       {
+                               gboolean _tmp8_ = FALSE;
+#line 101 "../src/contacts-avatar-utils.vala"
+                               _tmp8_ = TRUE;
+#line 101 "../src/contacts-avatar-utils.vala"
+                               while (TRUE) {
+#line 631 "contacts-avatar-utils.c"
+                                       const gchar* _tmp10_;
+                                       gunichar _tmp11_ = 0U;
+                                       gboolean _tmp12_;
+#line 101 "../src/contacts-avatar-utils.vala"
+                                       if (!_tmp8_) {
+#line 637 "contacts-avatar-utils.c"
+                                               gint _tmp9_;
+#line 101 "../src/contacts-avatar-utils.vala"
+                                               _tmp9_ = i;
+#line 101 "../src/contacts-avatar-utils.vala"
+                                               i = _tmp9_ + 1;
+#line 643 "contacts-avatar-utils.c"
+                                       }
+#line 101 "../src/contacts-avatar-utils.vala"
+                                       _tmp8_ = FALSE;
+#line 101 "../src/contacts-avatar-utils.vala"
+                                       _tmp10_ = normalized;
+#line 101 "../src/contacts-avatar-utils.vala"
+                                       _tmp12_ = string_get_next_char (_tmp10_, &index, &_tmp11_);
+#line 101 "../src/contacts-avatar-utils.vala"
+                                       c = _tmp11_;
+#line 101 "../src/contacts-avatar-utils.vala"
+                                       if (!_tmp12_) {
+#line 101 "../src/contacts-avatar-utils.vala"
+                                               break;
+#line 657 "contacts-avatar-utils.c"
+                                       }
+#line 102 "../src/contacts-avatar-utils.vala"
+                                       if (g_unichar_isalnum (c)) {
+#line 661 "contacts-avatar-utils.c"
+                                               GString* _tmp13_;
+#line 103 "../src/contacts-avatar-utils.vala"
+                                               _tmp13_ = buf;
+#line 103 "../src/contacts-avatar-utils.vala"
+                                               g_string_append_unichar (_tmp13_, c);
+#line 104 "../src/contacts-avatar-utils.vala"
+                                               break;
+#line 669 "contacts-avatar-utils.c"
+                                       }
+                               }
+                       }
+               }
+#line 109 "../src/contacts-avatar-utils.vala"
+               _tmp14_ = normalized;
+#line 109 "../src/contacts-avatar-utils.vala"
+               index = string_last_index_of_char (_tmp14_, (gunichar) ' ', 0);
+#line 110 "../src/contacts-avatar-utils.vala"
+               if (index >= 0) {
+#line 680 "contacts-avatar-utils.c"
+                       {
+                               gint i = 0;
+#line 111 "../src/contacts-avatar-utils.vala"
+                               i = 0;
+#line 685 "contacts-avatar-utils.c"
+                               {
+                                       gboolean _tmp15_ = FALSE;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                       _tmp15_ = TRUE;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                       while (TRUE) {
+#line 692 "contacts-avatar-utils.c"
+                                               const gchar* _tmp17_;
+                                               gunichar _tmp18_ = 0U;
+                                               gboolean _tmp19_;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                               if (!_tmp15_) {
+#line 698 "contacts-avatar-utils.c"
+                                                       gint _tmp16_;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                                       _tmp16_ = i;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                                       i = _tmp16_ + 1;
+#line 704 "contacts-avatar-utils.c"
+                                               }
+#line 111 "../src/contacts-avatar-utils.vala"
+                                               _tmp15_ = FALSE;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                               _tmp17_ = normalized;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                               _tmp19_ = string_get_next_char (_tmp17_, &index, &_tmp18_);
+#line 111 "../src/contacts-avatar-utils.vala"
+                                               c = _tmp18_;
+#line 111 "../src/contacts-avatar-utils.vala"
+                                               if (!_tmp19_) {
+#line 111 "../src/contacts-avatar-utils.vala"
+                                                       break;
+#line 718 "contacts-avatar-utils.c"
+                                               }
+#line 112 "../src/contacts-avatar-utils.vala"
+                                               if (g_unichar_isalnum (c)) {
+#line 722 "contacts-avatar-utils.c"
+                                                       GString* _tmp20_;
+#line 113 "../src/contacts-avatar-utils.vala"
+                                                       _tmp20_ = buf;
+#line 113 "../src/contacts-avatar-utils.vala"
+                                                       g_string_append_unichar (_tmp20_, c);
+#line 114 "../src/contacts-avatar-utils.vala"
+                                                       break;
+#line 730 "contacts-avatar-utils.c"
+                                               }
+                                       }
+                               }
+                       }
+               }
+#line 119 "../src/contacts-avatar-utils.vala"
+               _tmp21_ = buf;
+#line 119 "../src/contacts-avatar-utils.vala"
+               _tmp22_ = g_string_get_data (_tmp21_, &_tmp22__length1);
+#line 119 "../src/contacts-avatar-utils.vala"
+               _tmp23_ = _tmp22_;
+#line 119 "../src/contacts-avatar-utils.vala"
+               _tmp23__length1 = _tmp22__length1;
+#line 119 "../src/contacts-avatar-utils.vala"
+               if (_tmp23__length1 > 0) {
+#line 746 "contacts-avatar-utils.c"
+                       GString* _tmp24_;
+                       guint8* _tmp25_;
+                       gint _tmp25__length1;
+                       guint8* _tmp26_;
+                       gint _tmp26__length1;
+                       gchar* _tmp27_;
+#line 120 "../src/contacts-avatar-utils.vala"
+                       _tmp24_ = buf;
+#line 120 "../src/contacts-avatar-utils.vala"
+                       _tmp25_ = g_string_get_data (_tmp24_, &_tmp25__length1);
+#line 120 "../src/contacts-avatar-utils.vala"
+                       _tmp26_ = _tmp25_;
+#line 120 "../src/contacts-avatar-utils.vala"
+                       _tmp26__length1 = _tmp25__length1;
+#line 120 "../src/contacts-avatar-utils.vala"
+                       _tmp27_ = g_strdup ((const gchar*) _tmp26_);
+#line 120 "../src/contacts-avatar-utils.vala"
+                       _g_free0 (initials);
+#line 120 "../src/contacts-avatar-utils.vala"
+                       initials = _tmp27_;
+#line 767 "contacts-avatar-utils.c"
+               }
+#line 95 "../src/contacts-avatar-utils.vala"
+               _g_string_free0 (buf);
+#line 771 "contacts-avatar-utils.c"
+       }
+#line 123 "../src/contacts-avatar-utils.vala"
+       result = initials;
+#line 123 "../src/contacts-avatar-utils.vala"
+       _g_free0 (normalized);
+#line 123 "../src/contacts-avatar-utils.vala"
+       return result;
+#line 779 "contacts-avatar-utils.c"
+}
+
+void
+contacts_avatar_utils_get_color_for_name (const gchar* name,
+                                          GdkRGBA* result)
+{
+#line 129 "../src/contacts-avatar-utils.vala"
+       static const gdouble GNOME_COLOR_PALETTE[28][3] = {{(gdouble) 98, (gdouble) 160, (gdouble) 234}, 
{(gdouble) 53, (gdouble) 132, (gdouble) 228}, {(gdouble) 28, (gdouble) 113, (gdouble) 216}, {(gdouble) 26, 
(gdouble) 95, (gdouble) 180}, {(gdouble) 87, (gdouble) 227, (gdouble) 137}, {(gdouble) 51, (gdouble) 209, 
(gdouble) 122}, {(gdouble) 46, (gdouble) 194, (gdouble) 126}, {(gdouble) 38, (gdouble) 162, (gdouble) 105}, 
{(gdouble) 248, (gdouble) 228, (gdouble) 92}, {(gdouble) 246, (gdouble) 211, (gdouble) 45}, {(gdouble) 245, 
(gdouble) 194, (gdouble) 17}, {(gdouble) 229, (gdouble) 165, (gdouble) 10}, {(gdouble) 255, (gdouble) 163, 
(gdouble) 72}, {(gdouble) 255, (gdouble) 120, (gdouble) 0}, {(gdouble) 230, (gdouble) 97, (gdouble) 0}, 
{(gdouble) 198, (gdouble) 70, (gdouble) 0}, {(gdouble) 237, (gdouble) 51, (gdouble) 59}, {(gdouble) 224, 
(gdouble) 27, (gdouble) 36}, {(gdouble) 192, (gdouble) 28, (gdouble) 40}, {(gdouble) 165, (gdouble) 29, 
(gdouble) 45}, {(gdouble) 192, (gdouble) 9
 7, (gdou
 ble) 203}, {(gdouble) 163, (gdouble) 71, (gdouble) 186}, {(gdouble) 129, (gdouble) 61, (gdouble) 156}, 
{(gdouble) 97, (gdouble) 53, (gdouble) 131}, {(gdouble) 181, (gdouble) 131, (gdouble) 90}, {(gdouble) 152, 
(gdouble) 106, (gdouble) 68}, {(gdouble) 134, (gdouble) 94, (gdouble) 60}, {(gdouble) 99, (gdouble) 69, 
(gdouble) 44}};
+#line 788 "contacts-avatar-utils.c"
+       GdkRGBA color = {0};
+       GdkRGBA _tmp0_ = {0};
+       guint hash = 0U;
+       guint number_of_colors = 0U;
+       gint _tmp1_;
+       guint idx = 0U;
+       gdouble _tmp5_;
+       gdouble _tmp6_;
+       gdouble _tmp7_;
+#line 127 "../src/contacts-avatar-utils.vala"
+       g_return_if_fail (name != NULL);
+#line 160 "../src/contacts-avatar-utils.vala"
+       _tmp0_.red = (gdouble) 255;
+#line 160 "../src/contacts-avatar-utils.vala"
+       _tmp0_.green = (gdouble) 255;
+#line 160 "../src/contacts-avatar-utils.vala"
+       _tmp0_.blue = (gdouble) 255;
+#line 160 "../src/contacts-avatar-utils.vala"
+       _tmp0_.alpha = 1.0;
+#line 160 "../src/contacts-avatar-utils.vala"
+       color = _tmp0_;
+#line 162 "../src/contacts-avatar-utils.vala"
+       _tmp1_ = G_N_ELEMENTS (GNOME_COLOR_PALETTE);
+#line 162 "../src/contacts-avatar-utils.vala"
+       number_of_colors = (guint) _tmp1_;
+#line 165 "../src/contacts-avatar-utils.vala"
+       if (g_strcmp0 (name, "") == 0) {
+#line 816 "contacts-avatar-utils.c"
+               gdouble _tmp2_;
+               gdouble _tmp3_;
+               gdouble _tmp4_;
+#line 167 "../src/contacts-avatar-utils.vala"
+               idx = (guint) g_random_int_range ((gint32) 0, (gint32) number_of_colors);
+#line 168 "../src/contacts-avatar-utils.vala"
+               _tmp2_ = (*GNOME_COLOR_PALETTE)[(idx * G_N_ELEMENTS (GNOME_COLOR_PALETTE[0])) + 0];
+#line 168 "../src/contacts-avatar-utils.vala"
+               color.red = _tmp2_;
+#line 169 "../src/contacts-avatar-utils.vala"
+               _tmp3_ = (*GNOME_COLOR_PALETTE)[(idx * G_N_ELEMENTS (GNOME_COLOR_PALETTE[0])) + 1];
+#line 169 "../src/contacts-avatar-utils.vala"
+               color.green = _tmp3_;
+#line 170 "../src/contacts-avatar-utils.vala"
+               _tmp4_ = (*GNOME_COLOR_PALETTE)[(idx * G_N_ELEMENTS (GNOME_COLOR_PALETTE[0])) + 2];
+#line 170 "../src/contacts-avatar-utils.vala"
+               color.blue = _tmp4_;
+#line 171 "../src/contacts-avatar-utils.vala"
+               *result = color;
+#line 171 "../src/contacts-avatar-utils.vala"
+               return;
+#line 838 "contacts-avatar-utils.c"
+       }
+#line 174 "../src/contacts-avatar-utils.vala"
+       hash = g_str_hash (name);
+#line 175 "../src/contacts-avatar-utils.vala"
+       idx = hash % number_of_colors;
+#line 177 "../src/contacts-avatar-utils.vala"
+       _tmp5_ = (*GNOME_COLOR_PALETTE)[(idx * G_N_ELEMENTS (GNOME_COLOR_PALETTE[0])) + 0];
+#line 177 "../src/contacts-avatar-utils.vala"
+       color.red = _tmp5_;
+#line 178 "../src/contacts-avatar-utils.vala"
+       _tmp6_ = (*GNOME_COLOR_PALETTE)[(idx * G_N_ELEMENTS (GNOME_COLOR_PALETTE[0])) + 1];
+#line 178 "../src/contacts-avatar-utils.vala"
+       color.green = _tmp6_;
+#line 179 "../src/contacts-avatar-utils.vala"
+       _tmp7_ = (*GNOME_COLOR_PALETTE)[(idx * G_N_ELEMENTS (GNOME_COLOR_PALETTE[0])) + 2];
+#line 179 "../src/contacts-avatar-utils.vala"
+       color.blue = _tmp7_;
+#line 181 "../src/contacts-avatar-utils.vala"
+       *result = color;
+#line 181 "../src/contacts-avatar-utils.vala"
+       return;
+#line 860 "contacts-avatar-utils.c"
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-esd-setup.c 
b/_build/src/25a6634@@contacts@sta/contacts-esd-setup.c
new file mode 100644
index 0000000..4455d1c
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-esd-setup.c
@@ -0,0 +1,1461 @@
+/* contacts-esd-setup.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-esd-setup.vala, do not modify */
+
+/*
+ * This code is ported to Vala from evolution with this license:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+/* FIXME: the async bindings seem to be broken for this function.*/
+
+#include <gtk/gtk.h>
+#include <libedataserver/libedataserver.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <libedataserverui/libedataserverui.h>
+#include <glib-object.h>
+#include <glib/gi18n-lib.h>
+#include <goa/goa.h>
+
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+typedef struct _Block1Data Block1Data;
+typedef struct _ContactsOnCredentialsRequiredData ContactsOnCredentialsRequiredData;
+typedef struct _ContactsOnSourceTrustPromptHasRunData ContactsOnSourceTrustPromptHasRunData;
+
+struct _Block1Data {
+       int _ref_count_;
+       ESource* source;
+       gpointer _async_data_;
+};
+
+struct _ContactsOnCredentialsRequiredData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ESource* source;
+       ESourceCredentialsReason reason;
+       gchar* cert_pem;
+       GTlsCertificateFlags cert_errors;
+       GError* err;
+       Block1Data* _data1_;
+       ECredentialsPrompter* _tmp0_;
+       gboolean _tmp1_;
+       const gchar* _tmp2_;
+       const gchar* _tmp3_;
+       const gchar* _tmp4_;
+       const gchar* _tmp5_;
+       const gchar* _tmp6_;
+       ECredentialsPrompter* _tmp7_;
+       GtkWindow* _tmp8_;
+};
+
+struct _ContactsOnSourceTrustPromptHasRunData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ESource* source;
+       GAsyncResult* res;
+       GError* e;
+       const gchar* _tmp0_;
+       const gchar* _tmp1_;
+       GError* _tmp2_;
+       const gchar* _tmp3_;
+       GError* _vala1_e;
+       const gchar* _tmp4_;
+       const gchar* _tmp5_;
+       GError* _tmp6_;
+       const gchar* _tmp7_;
+       GError* _inner_error0_;
+};
+
+extern ESourceRegistry* contacts_eds_source_registry;
+ESourceRegistry* contacts_eds_source_registry = NULL;
+extern ECredentialsPrompter* contacts_eds_credentials_prompter;
+ECredentialsPrompter* contacts_eds_credentials_prompter = NULL;
+
+void e_trust_prompt_run_for_source (GtkWindow* parent,
+                                    ESource* source,
+                                    const gchar* certificate_pem,
+                                    GTlsCertificateFlags certificate_errors,
+                                    const gchar* error_text,
+                                    gboolean allow_source_save,
+                                    GCancellable* cancellable,
+                                    GAsyncReadyCallback callback,
+                                    gpointer callback_target);
+gboolean e_trust_prompt_run_for_source_finish (ESource* source,
+                                               GAsyncResult* _result_,
+                                               ETrustPromptResponse* response,
+                                               GError** error);
+gboolean contacts_ensure_eds_accounts (gboolean allow_interaction);
+static void _g_object_unref0_ (gpointer var);
+static inline void _g_list_free__g_object_unref0_ (GList* self);
+static void __lambda4_ (ESource* src,
+                 ESourceCredentialsReason reason,
+                 const gchar* cert_pem,
+                 GTlsCertificateFlags cert_err,
+                 GError* err);
+void contacts_on_credentials_required (ESource* source,
+                                       ESourceCredentialsReason reason,
+                                       const gchar* cert_pem,
+                                       GTlsCertificateFlags cert_errors,
+                                       GError* err,
+                                       GAsyncReadyCallback _callback_,
+                                       gpointer _user_data_);
+void contacts_on_credentials_required_finish (GAsyncResult* _res_);
+static void ___lambda4__e_source_registry_credentials_required (ESourceRegistry* _sender,
+                                                         ESource* source,
+                                                         ESourceCredentialsReason reason,
+                                                         const gchar* certificate_pem,
+                                                         GTlsCertificateFlags certificate_errors,
+                                                         GError* op_error,
+                                                         gpointer self);
+static void contacts_on_credentials_required_data_free (gpointer _data);
+static gboolean contacts_on_credentials_required_co (ContactsOnCredentialsRequiredData* _data_);
+static Block1Data* block1_data_ref (Block1Data* _data1_);
+static void block1_data_unref (void * _userdata_);
+static void ___lambda5_ (Block1Data* _data1_,
+                  GObject* obj,
+                  GAsyncResult* res);
+void contacts_on_source_trust_prompt_has_run (ESource* source,
+                                              GAsyncResult* res,
+                                              GAsyncReadyCallback _callback_,
+                                              gpointer _user_data_);
+void contacts_on_source_trust_prompt_has_run_finish (GAsyncResult* _res_);
+static void ____lambda5__gasync_ready_callback (GObject* source_object,
+                                         GAsyncResult* res,
+                                         gpointer self);
+static void contacts_on_source_trust_prompt_has_run_data_free (gpointer _data);
+static gboolean contacts_on_source_trust_prompt_has_run_co (ContactsOnSourceTrustPromptHasRunData* _data_);
+static void contacts_on_source_trust_prompt_has_run_ready (GObject* source_object,
+                                                    GAsyncResult* _res_,
+                                                    gpointer _user_data_);
+gboolean contacts_has_goa_account (void);
+gboolean contacts_esource_uid_is_google (const gchar* uid);
+gchar* contacts_lookup_esource_name_by_uid (const gchar* uid);
+gchar* contacts_lookup_esource_name_by_uid_for_contact (const gchar* uid);
+GtkImage* contacts_get_icon_for_goa_account (const gchar* goa_id);
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 47 "../src/contacts-esd-setup.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 162 "contacts-esd-setup.c"
+}
+
+static void
+_g_object_unref0_ (gpointer var)
+{
+#line 50 "../src/contacts-esd-setup.vala"
+       (var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
+#line 170 "contacts-esd-setup.c"
+}
+
+static inline void
+_g_list_free__g_object_unref0_ (GList* self)
+{
+#line 50 "../src/contacts-esd-setup.vala"
+       g_list_free_full (self, (GDestroyNotify) _g_object_unref0_);
+#line 178 "contacts-esd-setup.c"
+}
+
+static void
+__lambda4_ (ESource* src,
+            ESourceCredentialsReason reason,
+            const gchar* cert_pem,
+            GTlsCertificateFlags cert_err,
+            GError* err)
+{
+#line 66 "../src/contacts-esd-setup.vala"
+       g_return_if_fail (src != NULL);
+#line 66 "../src/contacts-esd-setup.vala"
+       g_return_if_fail (cert_pem != NULL);
+#line 66 "../src/contacts-esd-setup.vala"
+       g_return_if_fail (err != NULL);
+#line 67 "../src/contacts-esd-setup.vala"
+       contacts_on_credentials_required (src, reason, cert_pem, cert_err, err, NULL, NULL);
+#line 196 "contacts-esd-setup.c"
+}
+
+static void
+___lambda4__e_source_registry_credentials_required (ESourceRegistry* _sender,
+                                                    ESource* source,
+                                                    ESourceCredentialsReason reason,
+                                                    const gchar* certificate_pem,
+                                                    GTlsCertificateFlags certificate_errors,
+                                                    GError* op_error,
+                                                    gpointer self)
+{
+#line 66 "../src/contacts-esd-setup.vala"
+       __lambda4_ (source, reason, certificate_pem, certificate_errors, op_error);
+#line 210 "contacts-esd-setup.c"
+}
+
+gboolean
+contacts_ensure_eds_accounts (gboolean allow_interaction)
+{
+       ESourceRegistry* _tmp0_;
+       ESourceRegistry* _tmp7_;
+       ECredentialsPrompter* _tmp8_;
+       ESourceCredentialsProvider* credentials_provider = NULL;
+       ECredentialsPrompter* _tmp10_;
+       ESourceCredentialsProvider* _tmp11_;
+       ESourceCredentialsProvider* _tmp12_;
+       ESourceRegistry* _tmp13_;
+       GList* _tmp14_;
+       ESourceRegistry* _tmp19_;
+       GList* _tmp20_;
+       ESourceRegistry* _tmp31_;
+       ECredentialsPrompter* _tmp32_;
+       GError* _inner_error0_ = NULL;
+       gboolean result = FALSE;
+#line 29 "../src/contacts-esd-setup.vala"
+       _tmp0_ = contacts_eds_source_registry;
+#line 29 "../src/contacts-esd-setup.vala"
+       if (_tmp0_ != NULL) {
+#line 30 "../src/contacts-esd-setup.vala"
+               result = TRUE;
+#line 30 "../src/contacts-esd-setup.vala"
+               return result;
+#line 239 "contacts-esd-setup.c"
+       }
+       {
+               ESourceRegistry* _tmp1_ = NULL;
+               ESourceRegistry* _tmp2_;
+               ESourceRegistry* _tmp3_;
+#line 36 "../src/contacts-esd-setup.vala"
+               _tmp2_ = e_source_registry_new_sync (NULL, &_inner_error0_);
+#line 36 "../src/contacts-esd-setup.vala"
+               _tmp1_ = _tmp2_;
+#line 36 "../src/contacts-esd-setup.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 251 "contacts-esd-setup.c"
+                       goto __catch0_g_error;
+               }
+#line 36 "../src/contacts-esd-setup.vala"
+               _tmp3_ = _tmp1_;
+#line 36 "../src/contacts-esd-setup.vala"
+               _tmp1_ = NULL;
+#line 36 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (contacts_eds_source_registry);
+#line 36 "../src/contacts-esd-setup.vala"
+               contacts_eds_source_registry = _tmp3_;
+#line 35 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (_tmp1_);
+#line 264 "contacts-esd-setup.c"
+       }
+       goto __finally0;
+       __catch0_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp4_;
+               const gchar* _tmp5_;
+#line 35 "../src/contacts-esd-setup.vala"
+               e = _inner_error0_;
+#line 35 "../src/contacts-esd-setup.vala"
+               _inner_error0_ = NULL;
+#line 38 "../src/contacts-esd-setup.vala"
+               _tmp4_ = e;
+#line 38 "../src/contacts-esd-setup.vala"
+               _tmp5_ = _tmp4_->message;
+#line 38 "../src/contacts-esd-setup.vala"
+               g_warning ("contacts-esd-setup.vala:38: Couldn't load EDS SourceRegistry: %s", _tmp5_);
+#line 39 "../src/contacts-esd-setup.vala"
+               result = FALSE;
+#line 39 "../src/contacts-esd-setup.vala"
+               _g_error_free0 (e);
+#line 39 "../src/contacts-esd-setup.vala"
+               return result;
+#line 288 "contacts-esd-setup.c"
+       }
+       __finally0:
+#line 35 "../src/contacts-esd-setup.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 293 "contacts-esd-setup.c"
+               gboolean _tmp6_ = FALSE;
+#line 35 "../src/contacts-esd-setup.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 35 "../src/contacts-esd-setup.vala"
+               g_clear_error (&_inner_error0_);
+#line 35 "../src/contacts-esd-setup.vala"
+               return _tmp6_;
+#line 301 "contacts-esd-setup.c"
+       }
+#line 42 "../src/contacts-esd-setup.vala"
+       _tmp7_ = contacts_eds_source_registry;
+#line 42 "../src/contacts-esd-setup.vala"
+       _tmp8_ = e_credentials_prompter_new (_tmp7_);
+#line 42 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (contacts_eds_credentials_prompter);
+#line 42 "../src/contacts-esd-setup.vala"
+       contacts_eds_credentials_prompter = _tmp8_;
+#line 44 "../src/contacts-esd-setup.vala"
+       if (!allow_interaction) {
+#line 313 "contacts-esd-setup.c"
+               ECredentialsPrompter* _tmp9_;
+#line 45 "../src/contacts-esd-setup.vala"
+               _tmp9_ = contacts_eds_credentials_prompter;
+#line 45 "../src/contacts-esd-setup.vala"
+               e_credentials_prompter_set_auto_prompt (_tmp9_, FALSE);
+#line 319 "contacts-esd-setup.c"
+       }
+#line 47 "../src/contacts-esd-setup.vala"
+       _tmp10_ = contacts_eds_credentials_prompter;
+#line 47 "../src/contacts-esd-setup.vala"
+       _tmp11_ = e_credentials_prompter_get_provider (_tmp10_);
+#line 47 "../src/contacts-esd-setup.vala"
+       _tmp12_ = _g_object_ref0 (_tmp11_);
+#line 47 "../src/contacts-esd-setup.vala"
+       credentials_provider = _tmp12_;
+#line 50 "../src/contacts-esd-setup.vala"
+       _tmp13_ = contacts_eds_source_registry;
+#line 50 "../src/contacts-esd-setup.vala"
+       _tmp14_ = e_source_registry_list_sources (_tmp13_, NULL);
+#line 333 "contacts-esd-setup.c"
+       {
+               GList* source_collection = NULL;
+               GList* source_it = NULL;
+#line 50 "../src/contacts-esd-setup.vala"
+               source_collection = _tmp14_;
+#line 50 "../src/contacts-esd-setup.vala"
+               for (source_it = source_collection; source_it != NULL; source_it = source_it->next) {
+#line 341 "contacts-esd-setup.c"
+                       ESource* _tmp15_;
+                       ESource* source = NULL;
+#line 50 "../src/contacts-esd-setup.vala"
+                       _tmp15_ = _g_object_ref0 ((ESource*) source_it->data);
+#line 50 "../src/contacts-esd-setup.vala"
+                       source = _tmp15_;
+#line 348 "contacts-esd-setup.c"
+                       {
+                               ESource* _tmp16_;
+#line 52 "../src/contacts-esd-setup.vala"
+                               _tmp16_ = source;
+#line 52 "../src/contacts-esd-setup.vala"
+                               if (!e_source_has_extension (_tmp16_, E_SOURCE_EXTENSION_ADDRESS_BOOK)) {
+#line 355 "contacts-esd-setup.c"
+                                       ECredentialsPrompter* _tmp17_;
+                                       ESource* _tmp18_;
+#line 53 "../src/contacts-esd-setup.vala"
+                                       _tmp17_ = contacts_eds_credentials_prompter;
+#line 53 "../src/contacts-esd-setup.vala"
+                                       _tmp18_ = source;
+#line 53 "../src/contacts-esd-setup.vala"
+                                       e_credentials_prompter_set_auto_prompt_disabled_for (_tmp17_, 
_tmp18_, TRUE);
+#line 364 "contacts-esd-setup.c"
+                               }
+#line 50 "../src/contacts-esd-setup.vala"
+                               _g_object_unref0 (source);
+#line 368 "contacts-esd-setup.c"
+                       }
+               }
+#line 50 "../src/contacts-esd-setup.vala"
+               (source_collection == NULL) ? NULL : (source_collection = (_g_list_free__g_object_unref0_ 
(source_collection), NULL));
+#line 373 "contacts-esd-setup.c"
+       }
+#line 58 "../src/contacts-esd-setup.vala"
+       _tmp19_ = contacts_eds_source_registry;
+#line 58 "../src/contacts-esd-setup.vala"
+       _tmp20_ = e_source_registry_list_sources (_tmp19_, E_SOURCE_EXTENSION_ADDRESS_BOOK);
+#line 379 "contacts-esd-setup.c"
+       {
+               GList* source_collection = NULL;
+               GList* source_it = NULL;
+#line 58 "../src/contacts-esd-setup.vala"
+               source_collection = _tmp20_;
+#line 58 "../src/contacts-esd-setup.vala"
+               for (source_it = source_collection; source_it != NULL; source_it = source_it->next) {
+#line 387 "contacts-esd-setup.c"
+                       ESource* _tmp21_;
+                       ESource* source = NULL;
+#line 58 "../src/contacts-esd-setup.vala"
+                       _tmp21_ = _g_object_ref0 ((ESource*) source_it->data);
+#line 58 "../src/contacts-esd-setup.vala"
+                       source = _tmp21_;
+#line 394 "contacts-esd-setup.c"
+                       {
+                               ESource* cred_source = NULL;
+                               ESourceCredentialsProvider* _tmp22_;
+                               ESource* _tmp23_;
+                               ESource* _tmp24_;
+                               gboolean _tmp25_ = FALSE;
+                               ESource* _tmp26_;
+#line 59 "../src/contacts-esd-setup.vala"
+                               _tmp22_ = credentials_provider;
+#line 59 "../src/contacts-esd-setup.vala"
+                               _tmp23_ = source;
+#line 59 "../src/contacts-esd-setup.vala"
+                               _tmp24_ = e_source_credentials_provider_ref_credentials_source (_tmp22_, 
_tmp23_);
+#line 59 "../src/contacts-esd-setup.vala"
+                               cred_source = _tmp24_;
+#line 60 "../src/contacts-esd-setup.vala"
+                               _tmp26_ = cred_source;
+#line 60 "../src/contacts-esd-setup.vala"
+                               if (_tmp26_ != NULL) {
+#line 414 "contacts-esd-setup.c"
+                                       ESource* _tmp27_;
+                                       ESource* _tmp28_;
+#line 60 "../src/contacts-esd-setup.vala"
+                                       _tmp27_ = source;
+#line 60 "../src/contacts-esd-setup.vala"
+                                       _tmp28_ = cred_source;
+#line 60 "../src/contacts-esd-setup.vala"
+                                       _tmp25_ = !e_source_equal (_tmp27_, _tmp28_);
+#line 423 "contacts-esd-setup.c"
+                               } else {
+#line 60 "../src/contacts-esd-setup.vala"
+                                       _tmp25_ = FALSE;
+#line 427 "contacts-esd-setup.c"
+                               }
+#line 60 "../src/contacts-esd-setup.vala"
+                               if (_tmp25_) {
+#line 431 "contacts-esd-setup.c"
+                                       ECredentialsPrompter* _tmp29_;
+                                       ESource* _tmp30_;
+#line 61 "../src/contacts-esd-setup.vala"
+                                       _tmp29_ = contacts_eds_credentials_prompter;
+#line 61 "../src/contacts-esd-setup.vala"
+                                       _tmp30_ = cred_source;
+#line 61 "../src/contacts-esd-setup.vala"
+                                       e_credentials_prompter_set_auto_prompt_disabled_for (_tmp29_, 
_tmp30_, FALSE);
+#line 440 "contacts-esd-setup.c"
+                               }
+#line 58 "../src/contacts-esd-setup.vala"
+                               _g_object_unref0 (cred_source);
+#line 58 "../src/contacts-esd-setup.vala"
+                               _g_object_unref0 (source);
+#line 446 "contacts-esd-setup.c"
+                       }
+               }
+#line 58 "../src/contacts-esd-setup.vala"
+               (source_collection == NULL) ? NULL : (source_collection = (_g_list_free__g_object_unref0_ 
(source_collection), NULL));
+#line 451 "contacts-esd-setup.c"
+       }
+#line 66 "../src/contacts-esd-setup.vala"
+       _tmp31_ = contacts_eds_source_registry;
+#line 66 "../src/contacts-esd-setup.vala"
+       g_signal_connect (_tmp31_, "credentials-required", (GCallback) 
___lambda4__e_source_registry_credentials_required, NULL);
+#line 70 "../src/contacts-esd-setup.vala"
+       _tmp32_ = contacts_eds_credentials_prompter;
+#line 70 "../src/contacts-esd-setup.vala"
+       e_credentials_prompter_process_awaiting_credentials (_tmp32_);
+#line 72 "../src/contacts-esd-setup.vala"
+       result = TRUE;
+#line 72 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (credentials_provider);
+#line 72 "../src/contacts-esd-setup.vala"
+       return result;
+#line 467 "contacts-esd-setup.c"
+}
+
+static void
+contacts_on_credentials_required_data_free (gpointer _data)
+{
+       ContactsOnCredentialsRequiredData* _data_;
+       _data_ = _data;
+       _g_free0 (_data_->cert_pem);
+       g_slice_free (ContactsOnCredentialsRequiredData, _data_);
+}
+
+void
+contacts_on_credentials_required (ESource* source,
+                                  ESourceCredentialsReason reason,
+                                  const gchar* cert_pem,
+                                  GTlsCertificateFlags cert_errors,
+                                  GError* err,
+                                  GAsyncReadyCallback _callback_,
+                                  gpointer _user_data_)
+{
+       ContactsOnCredentialsRequiredData* _data_;
+       ESource* _tmp0_;
+       gchar* _tmp1_;
+       _data_ = g_slice_new0 (ContactsOnCredentialsRequiredData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_on_credentials_required_data_free);
+       _tmp0_ = _g_object_ref0 (source);
+       _g_object_unref0 (_data_->source);
+       _data_->source = _tmp0_;
+       _data_->reason = reason;
+       _tmp1_ = g_strdup (cert_pem);
+       _g_free0 (_data_->cert_pem);
+       _data_->cert_pem = _tmp1_;
+       _data_->cert_errors = cert_errors;
+       _data_->err = err;
+       contacts_on_credentials_required_co (_data_);
+}
+
+void
+contacts_on_credentials_required_finish (GAsyncResult* _res_)
+{
+       ContactsOnCredentialsRequiredData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+}
+
+static Block1Data*
+block1_data_ref (Block1Data* _data1_)
+{
+#line 75 "../src/contacts-esd-setup.vala"
+       g_atomic_int_inc (&_data1_->_ref_count_);
+#line 75 "../src/contacts-esd-setup.vala"
+       return _data1_;
+#line 520 "contacts-esd-setup.c"
+}
+
+static void
+block1_data_unref (void * _userdata_)
+{
+       Block1Data* _data1_;
+       _data1_ = (Block1Data*) _userdata_;
+#line 75 "../src/contacts-esd-setup.vala"
+       if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
+#line 75 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (_data1_->source);
+#line 75 "../src/contacts-esd-setup.vala"
+               g_slice_free (Block1Data, _data1_);
+#line 534 "contacts-esd-setup.c"
+       }
+}
+
+static void
+___lambda5_ (Block1Data* _data1_,
+             GObject* obj,
+             GAsyncResult* res)
+{
+#line 87 "../src/contacts-esd-setup.vala"
+       g_return_if_fail (res != NULL);
+#line 87 "../src/contacts-esd-setup.vala"
+       contacts_on_source_trust_prompt_has_run (_data1_->source, res, NULL, NULL);
+#line 547 "contacts-esd-setup.c"
+}
+
+static void
+____lambda5__gasync_ready_callback (GObject* source_object,
+                                    GAsyncResult* res,
+                                    gpointer self)
+{
+#line 85 "../src/contacts-esd-setup.vala"
+       ___lambda5_ (self, source_object, res);
+#line 557 "contacts-esd-setup.c"
+}
+
+static gboolean
+contacts_on_credentials_required_co (ContactsOnCredentialsRequiredData* _data_)
+{
+#line 75 "../src/contacts-esd-setup.vala"
+       switch (_data_->_state_) {
+#line 75 "../src/contacts-esd-setup.vala"
+               case 0:
+#line 567 "contacts-esd-setup.c"
+               goto _state_0;
+               default:
+#line 75 "../src/contacts-esd-setup.vala"
+               g_assert_not_reached ();
+#line 572 "contacts-esd-setup.c"
+       }
+       _state_0:
+#line 75 "../src/contacts-esd-setup.vala"
+       _data_->_data1_ = g_slice_new0 (Block1Data);
+#line 75 "../src/contacts-esd-setup.vala"
+       _data_->_data1_->_ref_count_ = 1;
+#line 75 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (_data_->_data1_->source);
+#line 75 "../src/contacts-esd-setup.vala"
+       _data_->_data1_->source = _data_->source;
+#line 75 "../src/contacts-esd-setup.vala"
+       _data_->_data1_->_async_data_ = _data_;
+#line 76 "../src/contacts-esd-setup.vala"
+       _data_->_tmp0_ = contacts_eds_credentials_prompter;
+#line 76 "../src/contacts-esd-setup.vala"
+       if (e_credentials_prompter_get_auto_prompt_disabled_for (_data_->_tmp0_, _data_->_data1_->source)) {
+#line 77 "../src/contacts-esd-setup.vala"
+               block1_data_unref (_data_->_data1_);
+#line 77 "../src/contacts-esd-setup.vala"
+               _data_->_data1_ = NULL;
+#line 77 "../src/contacts-esd-setup.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 77 "../src/contacts-esd-setup.vala"
+               if (_data_->_state_ != 0) {
+#line 77 "../src/contacts-esd-setup.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 77 "../src/contacts-esd-setup.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 601 "contacts-esd-setup.c"
+                       }
+               }
+#line 77 "../src/contacts-esd-setup.vala"
+               g_object_unref (_data_->_async_result);
+#line 77 "../src/contacts-esd-setup.vala"
+               return FALSE;
+#line 608 "contacts-esd-setup.c"
+       }
+#line 79 "../src/contacts-esd-setup.vala"
+       if (_data_->reason == E_SOURCE_CREDENTIALS_REASON_ERROR) {
+#line 79 "../src/contacts-esd-setup.vala"
+               _data_->_tmp1_ = _data_->err != NULL;
+#line 614 "contacts-esd-setup.c"
+       } else {
+#line 79 "../src/contacts-esd-setup.vala"
+               _data_->_tmp1_ = FALSE;
+#line 618 "contacts-esd-setup.c"
+       }
+#line 79 "../src/contacts-esd-setup.vala"
+       if (_data_->_tmp1_) {
+#line 80 "../src/contacts-esd-setup.vala"
+               _data_->_tmp2_ = e_source_get_display_name (_data_->_data1_->source);
+#line 80 "../src/contacts-esd-setup.vala"
+               _data_->_tmp3_ = _data_->_tmp2_;
+#line 80 "../src/contacts-esd-setup.vala"
+               _data_->_tmp4_ = _data_->err->message;
+#line 80 "../src/contacts-esd-setup.vala"
+               g_warning ("contacts-esd-setup.vala:80: Failed to autheticate for source \"%s\": %" \
+"s", _data_->_tmp3_, _data_->_tmp4_);
+#line 81 "../src/contacts-esd-setup.vala"
+               block1_data_unref (_data_->_data1_);
+#line 81 "../src/contacts-esd-setup.vala"
+               _data_->_data1_ = NULL;
+#line 81 "../src/contacts-esd-setup.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 81 "../src/contacts-esd-setup.vala"
+               if (_data_->_state_ != 0) {
+#line 81 "../src/contacts-esd-setup.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 81 "../src/contacts-esd-setup.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 642 "contacts-esd-setup.c"
+                       }
+               }
+#line 81 "../src/contacts-esd-setup.vala"
+               g_object_unref (_data_->_async_result);
+#line 81 "../src/contacts-esd-setup.vala"
+               return FALSE;
+#line 649 "contacts-esd-setup.c"
+       }
+#line 84 "../src/contacts-esd-setup.vala"
+       if (_data_->reason == E_SOURCE_CREDENTIALS_REASON_SSL_FAILED) {
+#line 86 "../src/contacts-esd-setup.vala"
+               if (_data_->err != NULL) {
+#line 86 "../src/contacts-esd-setup.vala"
+                       _data_->_tmp6_ = _data_->err->message;
+#line 86 "../src/contacts-esd-setup.vala"
+                       _data_->_tmp5_ = _data_->_tmp6_;
+#line 659 "contacts-esd-setup.c"
+               } else {
+#line 86 "../src/contacts-esd-setup.vala"
+                       _data_->_tmp5_ = NULL;
+#line 663 "contacts-esd-setup.c"
+               }
+#line 85 "../src/contacts-esd-setup.vala"
+               _data_->_tmp7_ = contacts_eds_credentials_prompter;
+#line 85 "../src/contacts-esd-setup.vala"
+               _data_->_tmp8_ = e_credentials_prompter_get_dialog_parent (_data_->_tmp7_);
+#line 85 "../src/contacts-esd-setup.vala"
+               e_trust_prompt_run_for_source (_data_->_tmp8_, _data_->_data1_->source, _data_->cert_pem, 
_data_->cert_errors, _data_->_tmp5_, TRUE, NULL, ____lambda5__gasync_ready_callback, _data_->_data1_);
+#line 671 "contacts-esd-setup.c"
+       }
+#line 75 "../src/contacts-esd-setup.vala"
+       block1_data_unref (_data_->_data1_);
+#line 75 "../src/contacts-esd-setup.vala"
+       _data_->_data1_ = NULL;
+#line 75 "../src/contacts-esd-setup.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 75 "../src/contacts-esd-setup.vala"
+       if (_data_->_state_ != 0) {
+#line 75 "../src/contacts-esd-setup.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 75 "../src/contacts-esd-setup.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 685 "contacts-esd-setup.c"
+               }
+       }
+#line 75 "../src/contacts-esd-setup.vala"
+       g_object_unref (_data_->_async_result);
+#line 75 "../src/contacts-esd-setup.vala"
+       return FALSE;
+#line 692 "contacts-esd-setup.c"
+}
+
+static void
+contacts_on_source_trust_prompt_has_run_data_free (gpointer _data)
+{
+       ContactsOnSourceTrustPromptHasRunData* _data_;
+       _data_ = _data;
+       _g_object_unref0 (_data_->source);
+       _g_object_unref0 (_data_->res);
+       g_slice_free (ContactsOnSourceTrustPromptHasRunData, _data_);
+}
+
+void
+contacts_on_source_trust_prompt_has_run (ESource* source,
+                                         GAsyncResult* res,
+                                         GAsyncReadyCallback _callback_,
+                                         gpointer _user_data_)
+{
+       ContactsOnSourceTrustPromptHasRunData* _data_;
+       ESource* _tmp0_;
+       GAsyncResult* _tmp1_;
+       _data_ = g_slice_new0 (ContactsOnSourceTrustPromptHasRunData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_on_source_trust_prompt_has_run_data_free);
+       _tmp0_ = _g_object_ref0 (source);
+       _g_object_unref0 (_data_->source);
+       _data_->source = _tmp0_;
+       _tmp1_ = _g_object_ref0 (res);
+       _g_object_unref0 (_data_->res);
+       _data_->res = _tmp1_;
+       contacts_on_source_trust_prompt_has_run_co (_data_);
+}
+
+void
+contacts_on_source_trust_prompt_has_run_finish (GAsyncResult* _res_)
+{
+       ContactsOnSourceTrustPromptHasRunData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+}
+
+static void
+contacts_on_source_trust_prompt_has_run_ready (GObject* source_object,
+                                               GAsyncResult* _res_,
+                                               gpointer _user_data_)
+{
+       ContactsOnSourceTrustPromptHasRunData* _data_;
+#line 101 "../src/contacts-esd-setup.vala"
+       _data_ = _user_data_;
+#line 101 "../src/contacts-esd-setup.vala"
+       _data_->_source_object_ = source_object;
+#line 101 "../src/contacts-esd-setup.vala"
+       _data_->_res_ = _res_;
+#line 101 "../src/contacts-esd-setup.vala"
+       contacts_on_source_trust_prompt_has_run_co (_data_);
+#line 747 "contacts-esd-setup.c"
+}
+
+static gboolean
+contacts_on_source_trust_prompt_has_run_co (ContactsOnSourceTrustPromptHasRunData* _data_)
+{
+#line 91 "../src/contacts-esd-setup.vala"
+       switch (_data_->_state_) {
+#line 91 "../src/contacts-esd-setup.vala"
+               case 0:
+#line 757 "contacts-esd-setup.c"
+               goto _state_0;
+#line 91 "../src/contacts-esd-setup.vala"
+               case 1:
+#line 761 "contacts-esd-setup.c"
+               goto _state_1;
+               default:
+#line 91 "../src/contacts-esd-setup.vala"
+               g_assert_not_reached ();
+#line 766 "contacts-esd-setup.c"
+       }
+       _state_0:
+       {
+#line 93 "../src/contacts-esd-setup.vala"
+               e_trust_prompt_run_for_source_finish (_data_->source, _data_->res, NULL, 
&_data_->_inner_error0_);
+#line 93 "../src/contacts-esd-setup.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 774 "contacts-esd-setup.c"
+                       goto __catch1_g_error;
+               }
+       }
+       goto __finally1;
+       __catch1_g_error:
+       {
+#line 92 "../src/contacts-esd-setup.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 92 "../src/contacts-esd-setup.vala"
+               _data_->_inner_error0_ = NULL;
+#line 95 "../src/contacts-esd-setup.vala"
+               _data_->_tmp0_ = e_source_get_display_name (_data_->source);
+#line 95 "../src/contacts-esd-setup.vala"
+               _data_->_tmp1_ = _data_->_tmp0_;
+#line 95 "../src/contacts-esd-setup.vala"
+               _data_->_tmp2_ = _data_->e;
+#line 95 "../src/contacts-esd-setup.vala"
+               _data_->_tmp3_ = _data_->_tmp2_->message;
+#line 95 "../src/contacts-esd-setup.vala"
+               g_warning ("contacts-esd-setup.vala:95: Failed to prompt for trust for source \"%s" \
+"\": %s", _data_->_tmp1_, _data_->_tmp3_);
+#line 96 "../src/contacts-esd-setup.vala"
+               _g_error_free0 (_data_->e);
+#line 96 "../src/contacts-esd-setup.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 96 "../src/contacts-esd-setup.vala"
+               if (_data_->_state_ != 0) {
+#line 96 "../src/contacts-esd-setup.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 96 "../src/contacts-esd-setup.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 805 "contacts-esd-setup.c"
+                       }
+               }
+#line 96 "../src/contacts-esd-setup.vala"
+               g_object_unref (_data_->_async_result);
+#line 96 "../src/contacts-esd-setup.vala"
+               return FALSE;
+#line 812 "contacts-esd-setup.c"
+       }
+       __finally1:
+#line 92 "../src/contacts-esd-setup.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 92 "../src/contacts-esd-setup.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 92 "../src/contacts-esd-setup.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 92 "../src/contacts-esd-setup.vala"
+               g_object_unref (_data_->_async_result);
+#line 92 "../src/contacts-esd-setup.vala"
+               return FALSE;
+#line 825 "contacts-esd-setup.c"
+       }
+       {
+#line 101 "../src/contacts-esd-setup.vala"
+               _data_->_state_ = 1;
+#line 101 "../src/contacts-esd-setup.vala"
+               e_source_invoke_authenticate (_data_->source, NULL, NULL, 
contacts_on_source_trust_prompt_has_run_ready, _data_);
+#line 101 "../src/contacts-esd-setup.vala"
+               return FALSE;
+#line 834 "contacts-esd-setup.c"
+               _state_1:
+#line 101 "../src/contacts-esd-setup.vala"
+               e_source_invoke_authenticate_finish (_data_->source, _data_->_res_, &_data_->_inner_error0_);
+#line 101 "../src/contacts-esd-setup.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 840 "contacts-esd-setup.c"
+                       goto __catch2_g_error;
+               }
+       }
+       goto __finally2;
+       __catch2_g_error:
+       {
+#line 99 "../src/contacts-esd-setup.vala"
+               _data_->_vala1_e = _data_->_inner_error0_;
+#line 99 "../src/contacts-esd-setup.vala"
+               _data_->_inner_error0_ = NULL;
+#line 103 "../src/contacts-esd-setup.vala"
+               _data_->_tmp4_ = e_source_get_display_name (_data_->source);
+#line 103 "../src/contacts-esd-setup.vala"
+               _data_->_tmp5_ = _data_->_tmp4_;
+#line 103 "../src/contacts-esd-setup.vala"
+               _data_->_tmp6_ = _data_->_vala1_e;
+#line 103 "../src/contacts-esd-setup.vala"
+               _data_->_tmp7_ = _data_->_tmp6_->message;
+#line 103 "../src/contacts-esd-setup.vala"
+               g_warning ("contacts-esd-setup.vala:103: Failed to invoke authenticate() for sourc" \
+"e \"%s\": %s", _data_->_tmp5_, _data_->_tmp7_);
+#line 99 "../src/contacts-esd-setup.vala"
+               _g_error_free0 (_data_->_vala1_e);
+#line 863 "contacts-esd-setup.c"
+       }
+       __finally2:
+#line 99 "../src/contacts-esd-setup.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 99 "../src/contacts-esd-setup.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 99 "../src/contacts-esd-setup.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 99 "../src/contacts-esd-setup.vala"
+               g_object_unref (_data_->_async_result);
+#line 99 "../src/contacts-esd-setup.vala"
+               return FALSE;
+#line 876 "contacts-esd-setup.c"
+       }
+#line 91 "../src/contacts-esd-setup.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 91 "../src/contacts-esd-setup.vala"
+       if (_data_->_state_ != 0) {
+#line 91 "../src/contacts-esd-setup.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 91 "../src/contacts-esd-setup.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 886 "contacts-esd-setup.c"
+               }
+       }
+#line 91 "../src/contacts-esd-setup.vala"
+       g_object_unref (_data_->_async_result);
+#line 91 "../src/contacts-esd-setup.vala"
+       return FALSE;
+#line 893 "contacts-esd-setup.c"
+}
+
+gboolean
+contacts_has_goa_account (void)
+{
+       ESourceRegistry* _tmp0_;
+       GList* _tmp1_;
+       gboolean result = FALSE;
+#line 108 "../src/contacts-esd-setup.vala"
+       _tmp0_ = contacts_eds_source_registry;
+#line 108 "../src/contacts-esd-setup.vala"
+       _tmp1_ = e_source_registry_list_sources (_tmp0_, E_SOURCE_EXTENSION_GOA);
+#line 906 "contacts-esd-setup.c"
+       {
+               GList* source_collection = NULL;
+               GList* source_it = NULL;
+#line 108 "../src/contacts-esd-setup.vala"
+               source_collection = _tmp1_;
+#line 108 "../src/contacts-esd-setup.vala"
+               for (source_it = source_collection; source_it != NULL; source_it = source_it->next) {
+#line 914 "contacts-esd-setup.c"
+                       ESource* _tmp2_;
+                       ESource* source = NULL;
+#line 108 "../src/contacts-esd-setup.vala"
+                       _tmp2_ = _g_object_ref0 ((ESource*) source_it->data);
+#line 108 "../src/contacts-esd-setup.vala"
+                       source = _tmp2_;
+#line 921 "contacts-esd-setup.c"
+                       {
+                               ESource* _tmp3_;
+                               gboolean _tmp4_;
+                               gboolean _tmp5_;
+                               ESource* _tmp6_;
+                               ESource* _tmp7_;
+                               ESourceExtension* _tmp8_;
+                               gboolean _tmp9_;
+                               gboolean _tmp10_;
+#line 110 "../src/contacts-esd-setup.vala"
+                               _tmp3_ = source;
+#line 110 "../src/contacts-esd-setup.vala"
+                               _tmp4_ = e_source_get_enabled (_tmp3_);
+#line 110 "../src/contacts-esd-setup.vala"
+                               _tmp5_ = _tmp4_;
+#line 110 "../src/contacts-esd-setup.vala"
+                               if (!_tmp5_) {
+#line 111 "../src/contacts-esd-setup.vala"
+                                       _g_object_unref0 (source);
+#line 111 "../src/contacts-esd-setup.vala"
+                                       continue;
+#line 943 "contacts-esd-setup.c"
+                               }
+#line 115 "../src/contacts-esd-setup.vala"
+                               _tmp6_ = source;
+#line 115 "../src/contacts-esd-setup.vala"
+                               if (!e_source_has_extension (_tmp6_, E_SOURCE_EXTENSION_COLLECTION)) {
+#line 116 "../src/contacts-esd-setup.vala"
+                                       _g_object_unref0 (source);
+#line 116 "../src/contacts-esd-setup.vala"
+                                       continue;
+#line 953 "contacts-esd-setup.c"
+                               }
+#line 119 "../src/contacts-esd-setup.vala"
+                               _tmp7_ = source;
+#line 119 "../src/contacts-esd-setup.vala"
+                               _tmp8_ = e_source_get_extension (_tmp7_, E_SOURCE_EXTENSION_COLLECTION);
+#line 119 "../src/contacts-esd-setup.vala"
+                               _tmp9_ = e_source_collection_get_contacts_enabled (G_TYPE_CHECK_INSTANCE_CAST 
(_tmp8_, e_source_collection_get_type (), ESourceCollection));
+#line 119 "../src/contacts-esd-setup.vala"
+                               _tmp10_ = _tmp9_;
+#line 119 "../src/contacts-esd-setup.vala"
+                               if (_tmp10_) {
+#line 120 "../src/contacts-esd-setup.vala"
+                                       result = TRUE;
+#line 120 "../src/contacts-esd-setup.vala"
+                                       _g_object_unref0 (source);
+#line 120 "../src/contacts-esd-setup.vala"
+                                       (source_collection == NULL) ? NULL : (source_collection = 
(_g_list_free__g_object_unref0_ (source_collection), NULL));
+#line 120 "../src/contacts-esd-setup.vala"
+                                       return result;
+#line 973 "contacts-esd-setup.c"
+                               }
+#line 108 "../src/contacts-esd-setup.vala"
+                               _g_object_unref0 (source);
+#line 977 "contacts-esd-setup.c"
+                       }
+               }
+#line 108 "../src/contacts-esd-setup.vala"
+               (source_collection == NULL) ? NULL : (source_collection = (_g_list_free__g_object_unref0_ 
(source_collection), NULL));
+#line 982 "contacts-esd-setup.c"
+       }
+#line 124 "../src/contacts-esd-setup.vala"
+       result = FALSE;
+#line 124 "../src/contacts-esd-setup.vala"
+       return result;
+#line 988 "contacts-esd-setup.c"
+}
+
+gboolean
+contacts_esource_uid_is_google (const gchar* uid)
+{
+       ESource* source = NULL;
+       ESourceRegistry* _tmp0_;
+       ESource* _tmp1_;
+       ESource* _tmp2_;
+       ESource* _tmp3_;
+       gboolean result = FALSE;
+#line 127 "../src/contacts-esd-setup.vala"
+       g_return_val_if_fail (uid != NULL, FALSE);
+#line 128 "../src/contacts-esd-setup.vala"
+       _tmp0_ = contacts_eds_source_registry;
+#line 128 "../src/contacts-esd-setup.vala"
+       _tmp1_ = e_source_registry_ref_source (_tmp0_, uid);
+#line 128 "../src/contacts-esd-setup.vala"
+       source = _tmp1_;
+#line 129 "../src/contacts-esd-setup.vala"
+       _tmp2_ = source;
+#line 129 "../src/contacts-esd-setup.vala"
+       if (_tmp2_ == NULL) {
+#line 130 "../src/contacts-esd-setup.vala"
+               result = FALSE;
+#line 130 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 130 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1018 "contacts-esd-setup.c"
+       }
+#line 133 "../src/contacts-esd-setup.vala"
+       _tmp3_ = source;
+#line 133 "../src/contacts-esd-setup.vala"
+       if (e_source_has_extension (_tmp3_, E_SOURCE_EXTENSION_ADDRESS_BOOK)) {
+#line 1024 "contacts-esd-setup.c"
+               ESourceExtension* extension = NULL;
+               ESource* _tmp4_;
+               ESourceExtension* _tmp5_;
+               ESourceExtension* _tmp6_;
+               ESourceExtension* _tmp7_;
+               const gchar* _tmp8_;
+               const gchar* _tmp9_;
+#line 134 "../src/contacts-esd-setup.vala"
+               _tmp4_ = source;
+#line 134 "../src/contacts-esd-setup.vala"
+               _tmp5_ = e_source_get_extension (_tmp4_, E_SOURCE_EXTENSION_ADDRESS_BOOK);
+#line 134 "../src/contacts-esd-setup.vala"
+               _tmp6_ = _g_object_ref0 (_tmp5_);
+#line 134 "../src/contacts-esd-setup.vala"
+               extension = _tmp6_;
+#line 135 "../src/contacts-esd-setup.vala"
+               _tmp7_ = extension;
+#line 135 "../src/contacts-esd-setup.vala"
+               _tmp8_ = e_source_backend_get_backend_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, 
e_source_backend_get_type (), ESourceBackend));
+#line 135 "../src/contacts-esd-setup.vala"
+               _tmp9_ = _tmp8_;
+#line 135 "../src/contacts-esd-setup.vala"
+               result = g_strcmp0 (_tmp9_, "google") == 0;
+#line 135 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (extension);
+#line 135 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 135 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1054 "contacts-esd-setup.c"
+       }
+#line 138 "../src/contacts-esd-setup.vala"
+       result = FALSE;
+#line 138 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (source);
+#line 138 "../src/contacts-esd-setup.vala"
+       return result;
+#line 1062 "contacts-esd-setup.c"
+}
+
+gchar*
+contacts_lookup_esource_name_by_uid (const gchar* uid)
+{
+       ESource* source = NULL;
+       ESourceRegistry* _tmp0_;
+       ESource* _tmp1_;
+       ESource* _tmp2_;
+       ESource* builtin_address_book = NULL;
+       ESourceRegistry* _tmp3_;
+       ESource* _tmp4_;
+       ESource* _tmp5_;
+       ESource* _tmp6_;
+       ESource* _tmp9_;
+       const gchar* _tmp10_;
+       const gchar* _tmp11_;
+       gchar* _tmp12_;
+       gchar* result = NULL;
+#line 141 "../src/contacts-esd-setup.vala"
+       g_return_val_if_fail (uid != NULL, NULL);
+#line 142 "../src/contacts-esd-setup.vala"
+       _tmp0_ = contacts_eds_source_registry;
+#line 142 "../src/contacts-esd-setup.vala"
+       _tmp1_ = e_source_registry_ref_source (_tmp0_, uid);
+#line 142 "../src/contacts-esd-setup.vala"
+       source = _tmp1_;
+#line 143 "../src/contacts-esd-setup.vala"
+       _tmp2_ = source;
+#line 143 "../src/contacts-esd-setup.vala"
+       if (_tmp2_ == NULL) {
+#line 144 "../src/contacts-esd-setup.vala"
+               result = NULL;
+#line 144 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 144 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1100 "contacts-esd-setup.c"
+       }
+#line 146 "../src/contacts-esd-setup.vala"
+       _tmp3_ = contacts_eds_source_registry;
+#line 146 "../src/contacts-esd-setup.vala"
+       _tmp4_ = e_source_registry_ref_builtin_address_book (_tmp3_);
+#line 146 "../src/contacts-esd-setup.vala"
+       builtin_address_book = _tmp4_;
+#line 148 "../src/contacts-esd-setup.vala"
+       _tmp5_ = source;
+#line 148 "../src/contacts-esd-setup.vala"
+       _tmp6_ = builtin_address_book;
+#line 148 "../src/contacts-esd-setup.vala"
+       if (e_source_equal (_tmp5_, _tmp6_)) {
+#line 1114 "contacts-esd-setup.c"
+               gchar* _tmp7_;
+#line 149 "../src/contacts-esd-setup.vala"
+               _tmp7_ = g_strdup (_ ("Local Address Book"));
+#line 149 "../src/contacts-esd-setup.vala"
+               result = _tmp7_;
+#line 149 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (builtin_address_book);
+#line 149 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 149 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1126 "contacts-esd-setup.c"
+       }
+#line 151 "../src/contacts-esd-setup.vala"
+       if (contacts_esource_uid_is_google (uid)) {
+#line 1130 "contacts-esd-setup.c"
+               gchar* _tmp8_;
+#line 152 "../src/contacts-esd-setup.vala"
+               _tmp8_ = g_strdup (_ ("Google"));
+#line 152 "../src/contacts-esd-setup.vala"
+               result = _tmp8_;
+#line 152 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (builtin_address_book);
+#line 152 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 152 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1142 "contacts-esd-setup.c"
+       }
+#line 154 "../src/contacts-esd-setup.vala"
+       _tmp9_ = source;
+#line 154 "../src/contacts-esd-setup.vala"
+       _tmp10_ = e_source_get_display_name (_tmp9_);
+#line 154 "../src/contacts-esd-setup.vala"
+       _tmp11_ = _tmp10_;
+#line 154 "../src/contacts-esd-setup.vala"
+       _tmp12_ = g_strdup (_tmp11_);
+#line 154 "../src/contacts-esd-setup.vala"
+       result = _tmp12_;
+#line 154 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (builtin_address_book);
+#line 154 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (source);
+#line 154 "../src/contacts-esd-setup.vala"
+       return result;
+#line 1160 "contacts-esd-setup.c"
+}
+
+gchar*
+contacts_lookup_esource_name_by_uid_for_contact (const gchar* uid)
+{
+       ESource* source = NULL;
+       ESourceRegistry* _tmp0_;
+       ESource* _tmp1_;
+       ESource* _tmp2_;
+       ESource* builtin_address_book = NULL;
+       ESourceRegistry* _tmp3_;
+       ESource* _tmp4_;
+       ESource* _tmp5_;
+       ESource* _tmp6_;
+       ESource* _tmp9_;
+       const gchar* _tmp10_;
+       const gchar* _tmp11_;
+       gchar* _tmp12_;
+       gchar* result = NULL;
+#line 157 "../src/contacts-esd-setup.vala"
+       g_return_val_if_fail (uid != NULL, NULL);
+#line 158 "../src/contacts-esd-setup.vala"
+       _tmp0_ = contacts_eds_source_registry;
+#line 158 "../src/contacts-esd-setup.vala"
+       _tmp1_ = e_source_registry_ref_source (_tmp0_, uid);
+#line 158 "../src/contacts-esd-setup.vala"
+       source = _tmp1_;
+#line 159 "../src/contacts-esd-setup.vala"
+       _tmp2_ = source;
+#line 159 "../src/contacts-esd-setup.vala"
+       if (_tmp2_ == NULL) {
+#line 160 "../src/contacts-esd-setup.vala"
+               result = NULL;
+#line 160 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 160 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1198 "contacts-esd-setup.c"
+       }
+#line 162 "../src/contacts-esd-setup.vala"
+       _tmp3_ = contacts_eds_source_registry;
+#line 162 "../src/contacts-esd-setup.vala"
+       _tmp4_ = e_source_registry_ref_builtin_address_book (_tmp3_);
+#line 162 "../src/contacts-esd-setup.vala"
+       builtin_address_book = _tmp4_;
+#line 163 "../src/contacts-esd-setup.vala"
+       _tmp5_ = source;
+#line 163 "../src/contacts-esd-setup.vala"
+       _tmp6_ = builtin_address_book;
+#line 163 "../src/contacts-esd-setup.vala"
+       if (e_source_equal (_tmp5_, _tmp6_)) {
+#line 1212 "contacts-esd-setup.c"
+               gchar* _tmp7_;
+#line 164 "../src/contacts-esd-setup.vala"
+               _tmp7_ = g_strdup (_ ("Local Contact"));
+#line 164 "../src/contacts-esd-setup.vala"
+               result = _tmp7_;
+#line 164 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (builtin_address_book);
+#line 164 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 164 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1224 "contacts-esd-setup.c"
+       }
+#line 166 "../src/contacts-esd-setup.vala"
+       if (contacts_esource_uid_is_google (uid)) {
+#line 1228 "contacts-esd-setup.c"
+               gchar* _tmp8_;
+#line 167 "../src/contacts-esd-setup.vala"
+               _tmp8_ = g_strdup (_ ("Google"));
+#line 167 "../src/contacts-esd-setup.vala"
+               result = _tmp8_;
+#line 167 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (builtin_address_book);
+#line 167 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (source);
+#line 167 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1240 "contacts-esd-setup.c"
+       }
+#line 169 "../src/contacts-esd-setup.vala"
+       _tmp9_ = source;
+#line 169 "../src/contacts-esd-setup.vala"
+       _tmp10_ = e_source_get_display_name (_tmp9_);
+#line 169 "../src/contacts-esd-setup.vala"
+       _tmp11_ = _tmp10_;
+#line 169 "../src/contacts-esd-setup.vala"
+       _tmp12_ = g_strdup (_tmp11_);
+#line 169 "../src/contacts-esd-setup.vala"
+       result = _tmp12_;
+#line 169 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (builtin_address_book);
+#line 169 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (source);
+#line 169 "../src/contacts-esd-setup.vala"
+       return result;
+#line 1258 "contacts-esd-setup.c"
+}
+
+GtkImage*
+contacts_get_icon_for_goa_account (const gchar* goa_id)
+{
+       GoaClient* client = NULL;
+       GoaObject* goa_object = NULL;
+       GoaClient* _tmp5_;
+       GoaObject* _tmp6_;
+       GIcon* provider_icon = NULL;
+       GIcon* _tmp18_;
+       GtkImage* _tmp19_;
+       GError* _inner_error0_ = NULL;
+       GtkImage* result = NULL;
+#line 172 "../src/contacts-esd-setup.vala"
+       g_return_val_if_fail (goa_id != NULL, NULL);
+#line 1275 "contacts-esd-setup.c"
+       {
+               GoaClient* _tmp0_ = NULL;
+               GoaClient* _tmp1_;
+               GoaClient* _tmp2_;
+#line 175 "../src/contacts-esd-setup.vala"
+               _tmp1_ = goa_client_new_sync (NULL, &_inner_error0_);
+#line 175 "../src/contacts-esd-setup.vala"
+               _tmp0_ = _tmp1_;
+#line 175 "../src/contacts-esd-setup.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1286 "contacts-esd-setup.c"
+                       goto __catch3_g_error;
+               }
+#line 175 "../src/contacts-esd-setup.vala"
+               _tmp2_ = _tmp0_;
+#line 175 "../src/contacts-esd-setup.vala"
+               _tmp0_ = NULL;
+#line 175 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (client);
+#line 175 "../src/contacts-esd-setup.vala"
+               client = _tmp2_;
+#line 174 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (_tmp0_);
+#line 1299 "contacts-esd-setup.c"
+       }
+       goto __finally3;
+       __catch3_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp3_;
+               const gchar* _tmp4_;
+#line 174 "../src/contacts-esd-setup.vala"
+               e = _inner_error0_;
+#line 174 "../src/contacts-esd-setup.vala"
+               _inner_error0_ = NULL;
+#line 177 "../src/contacts-esd-setup.vala"
+               _tmp3_ = e;
+#line 177 "../src/contacts-esd-setup.vala"
+               _tmp4_ = _tmp3_->message;
+#line 177 "../src/contacts-esd-setup.vala"
+               g_debug ("contacts-esd-setup.vala:177: Couldn't load GOA client \"%s\": %s", goa_id, _tmp4_);
+#line 178 "../src/contacts-esd-setup.vala"
+               result = NULL;
+#line 178 "../src/contacts-esd-setup.vala"
+               _g_error_free0 (e);
+#line 178 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (client);
+#line 178 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1325 "contacts-esd-setup.c"
+       }
+       __finally3:
+#line 174 "../src/contacts-esd-setup.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 174 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (client);
+#line 174 "../src/contacts-esd-setup.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 174 "../src/contacts-esd-setup.vala"
+               g_clear_error (&_inner_error0_);
+#line 174 "../src/contacts-esd-setup.vala"
+               return NULL;
+#line 1338 "contacts-esd-setup.c"
+       }
+#line 181 "../src/contacts-esd-setup.vala"
+       _tmp5_ = client;
+#line 181 "../src/contacts-esd-setup.vala"
+       _tmp6_ = goa_client_lookup_by_id (_tmp5_, goa_id);
+#line 181 "../src/contacts-esd-setup.vala"
+       goa_object = _tmp6_;
+#line 1346 "contacts-esd-setup.c"
+       {
+               GIcon* _tmp7_ = NULL;
+               GoaObject* _tmp8_;
+               GoaAccount* _tmp9_;
+               GoaAccount* _tmp10_;
+               GoaAccount* _tmp11_;
+               gchar* _tmp12_;
+               gchar* _tmp13_;
+               gchar* _tmp14_;
+               GIcon* _tmp15_;
+               GIcon* _tmp16_;
+               GIcon* _tmp17_;
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp8_ = goa_object;
+#line 185 "../src/contacts-esd-setup.vala"
+               g_object_get (_tmp8_, "account", &_tmp9_, NULL);
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp10_ = _tmp9_;
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp11_ = _tmp10_;
+#line 185 "../src/contacts-esd-setup.vala"
+               g_object_get (_tmp11_, "provider-icon", &_tmp12_, NULL);
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp13_ = _tmp12_;
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp14_ = _tmp13_;
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp15_ = g_icon_new_for_string (_tmp14_, &_inner_error0_);
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp16_ = _tmp15_;
+#line 185 "../src/contacts-esd-setup.vala"
+               _g_free0 (_tmp14_);
+#line 185 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (_tmp11_);
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp7_ = _tmp16_;
+#line 185 "../src/contacts-esd-setup.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1385 "contacts-esd-setup.c"
+                       goto __catch4_g_error;
+               }
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp17_ = _tmp7_;
+#line 185 "../src/contacts-esd-setup.vala"
+               _tmp7_ = NULL;
+#line 185 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (provider_icon);
+#line 185 "../src/contacts-esd-setup.vala"
+               provider_icon = _tmp17_;
+#line 184 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (_tmp7_);
+#line 1398 "contacts-esd-setup.c"
+       }
+       goto __finally4;
+       __catch4_g_error:
+       {
+               GError* e = NULL;
+#line 184 "../src/contacts-esd-setup.vala"
+               e = _inner_error0_;
+#line 184 "../src/contacts-esd-setup.vala"
+               _inner_error0_ = NULL;
+#line 187 "../src/contacts-esd-setup.vala"
+               g_debug ("contacts-esd-setup.vala:187: Couldn't load icon for GOA provider \"%s\"", goa_id);
+#line 188 "../src/contacts-esd-setup.vala"
+               result = NULL;
+#line 188 "../src/contacts-esd-setup.vala"
+               _g_error_free0 (e);
+#line 188 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (provider_icon);
+#line 188 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (goa_object);
+#line 188 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (client);
+#line 188 "../src/contacts-esd-setup.vala"
+               return result;
+#line 1422 "contacts-esd-setup.c"
+       }
+       __finally4:
+#line 184 "../src/contacts-esd-setup.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 184 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (provider_icon);
+#line 184 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (goa_object);
+#line 184 "../src/contacts-esd-setup.vala"
+               _g_object_unref0 (client);
+#line 184 "../src/contacts-esd-setup.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 184 "../src/contacts-esd-setup.vala"
+               g_clear_error (&_inner_error0_);
+#line 184 "../src/contacts-esd-setup.vala"
+               return NULL;
+#line 1439 "contacts-esd-setup.c"
+       }
+#line 191 "../src/contacts-esd-setup.vala"
+       _tmp18_ = provider_icon;
+#line 191 "../src/contacts-esd-setup.vala"
+       _tmp19_ = (GtkImage*) gtk_image_new_from_gicon (_tmp18_, (GtkIconSize) GTK_ICON_SIZE_DIALOG);
+#line 191 "../src/contacts-esd-setup.vala"
+       g_object_ref_sink (_tmp19_);
+#line 191 "../src/contacts-esd-setup.vala"
+       result = _tmp19_;
+#line 191 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (provider_icon);
+#line 191 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (goa_object);
+#line 191 "../src/contacts-esd-setup.vala"
+       _g_object_unref0 (client);
+#line 191 "../src/contacts-esd-setup.vala"
+       return result;
+#line 1457 "contacts-esd-setup.c"
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-fake-persona-store.c 
b/_build/src/25a6634@@contacts@sta/contacts-fake-persona-store.c
new file mode 100644
index 0000000..d7453bf
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-fake-persona-store.c
@@ -0,0 +1,2320 @@
+/* contacts-fake-persona-store.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-fake-persona-store.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <folks/folks.h>
+#include <glib-object.h>
+#include <gee.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gio/gio.h>
+
+#define CONTACTS_TYPE_FAKE_PERSONA_STORE (contacts_fake_persona_store_get_type ())
+#define CONTACTS_FAKE_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStore))
+#define CONTACTS_FAKE_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStoreClass))
+#define CONTACTS_IS_FAKE_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_FAKE_PERSONA_STORE))
+#define CONTACTS_IS_FAKE_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_FAKE_PERSONA_STORE))
+#define CONTACTS_FAKE_PERSONA_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStoreClass))
+
+typedef struct _ContactsFakePersonaStore ContactsFakePersonaStore;
+typedef struct _ContactsFakePersonaStoreClass ContactsFakePersonaStoreClass;
+typedef struct _ContactsFakePersonaStorePrivate ContactsFakePersonaStorePrivate;
+enum  {
+       CONTACTS_FAKE_PERSONA_STORE_0_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STORE_NUM_PROPERTIES
+};
+static GParamSpec* contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+typedef struct _ContactsFakePersonaStorePrepareData ContactsFakePersonaStorePrepareData;
+#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
+typedef struct _ContactsFakePersonaStoreAddPersonaFromDetailsData 
ContactsFakePersonaStoreAddPersonaFromDetailsData;
+typedef struct _ContactsFakePersonaStoreRemovePersonaData ContactsFakePersonaStoreRemovePersonaData;
+
+#define CONTACTS_TYPE_FAKE_PERSONA (contacts_fake_persona_get_type ())
+#define CONTACTS_FAKE_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_FAKE_PERSONA, 
ContactsFakePersona))
+#define CONTACTS_FAKE_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_FAKE_PERSONA, 
ContactsFakePersonaClass))
+#define CONTACTS_IS_FAKE_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_FAKE_PERSONA))
+#define CONTACTS_IS_FAKE_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_FAKE_PERSONA))
+#define CONTACTS_FAKE_PERSONA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_FAKE_PERSONA, 
ContactsFakePersonaClass))
+
+typedef struct _ContactsFakePersona ContactsFakePersona;
+typedef struct _ContactsFakePersonaClass ContactsFakePersonaClass;
+typedef struct _ContactsFakePersonaPrivate ContactsFakePersonaPrivate;
+enum  {
+       CONTACTS_FAKE_PERSONA_0_PROPERTY,
+       CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY,
+       CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY,
+       CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY,
+       CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY,
+       CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY,
+       CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY,
+       CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY,
+       CONTACTS_FAKE_PERSONA_URLS_PROPERTY,
+       CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY,
+       CONTACTS_FAKE_PERSONA_NOTES_PROPERTY,
+       CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY,
+       CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY,
+       CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY,
+       CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY,
+       CONTACTS_FAKE_PERSONA_NUM_PROPERTIES
+};
+static GParamSpec* contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NUM_PROPERTIES];
+
+struct _ContactsFakePersonaStore {
+       FolksPersonaStore parent_instance;
+       ContactsFakePersonaStorePrivate * priv;
+};
+
+struct _ContactsFakePersonaStoreClass {
+       FolksPersonaStoreClass parent_class;
+};
+
+struct _ContactsFakePersonaStorePrivate {
+       GeeHashMap* _personas;
+       GeeMap* _personas_ro;
+       gchar** _always_writeable_properties;
+       gint _always_writeable_properties_length1;
+       gint __always_writeable_properties_size_;
+};
+
+struct _ContactsFakePersonaStorePrepareData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsFakePersonaStore* self;
+};
+
+struct _ContactsFakePersonaStoreAddPersonaFromDetailsData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsFakePersonaStore* self;
+       GHashTable* details;
+       FolksPersona* result;
+};
+
+struct _ContactsFakePersonaStoreRemovePersonaData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsFakePersonaStore* self;
+       FolksPersona* persona;
+};
+
+struct _ContactsFakePersona {
+       FolksPersona parent_instance;
+       ContactsFakePersonaPrivate * priv;
+};
+
+struct _ContactsFakePersonaClass {
+       FolksPersonaClass parent_class;
+};
+
+struct _ContactsFakePersonaPrivate {
+       GHashTable* properties;
+       FolksPersona* _real_persona;
+};
+
+static gint ContactsFakePersonaStore_private_offset;
+static gpointer contacts_fake_persona_store_parent_class = NULL;
+extern ContactsFakePersonaStore* contacts_fake_persona_store__the_store;
+ContactsFakePersonaStore* contacts_fake_persona_store__the_store = NULL;
+static gint ContactsFakePersona_private_offset;
+static gpointer contacts_fake_persona_parent_class = NULL;
+static FolksAvatarDetailsIface * contacts_fake_persona_folks_avatar_details_parent_iface = NULL;
+static FolksBirthdayDetailsIface * contacts_fake_persona_folks_birthday_details_parent_iface = NULL;
+static FolksEmailDetailsIface * contacts_fake_persona_folks_email_details_parent_iface = NULL;
+static FolksImDetailsIface * contacts_fake_persona_folks_im_details_parent_iface = NULL;
+static FolksNameDetailsIface * contacts_fake_persona_folks_name_details_parent_iface = NULL;
+static FolksNoteDetailsIface * contacts_fake_persona_folks_note_details_parent_iface = NULL;
+static FolksPhoneDetailsIface * contacts_fake_persona_folks_phone_details_parent_iface = NULL;
+static FolksUrlDetailsIface * contacts_fake_persona_folks_url_details_parent_iface = NULL;
+static FolksPostalAddressDetailsIface * contacts_fake_persona_folks_postal_address_details_parent_iface = 
NULL;
+
+GType contacts_fake_persona_store_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsFakePersonaStore, g_object_unref)
+ContactsFakePersonaStore* contacts_fake_persona_store_the_store (void);
+ContactsFakePersonaStore* contacts_fake_persona_store_new (void);
+ContactsFakePersonaStore* contacts_fake_persona_store_construct (GType object_type);
+static void contacts_fake_persona_store_real_prepare_data_free (gpointer _data);
+static void contacts_fake_persona_store_real_prepare (FolksPersonaStore* base,
+                                               GAsyncReadyCallback _callback_,
+                                               gpointer _user_data_);
+static gboolean contacts_fake_persona_store_real_prepare_co (ContactsFakePersonaStorePrepareData* _data_);
+static void contacts_fake_persona_store_real_add_persona_from_details_data_free (gpointer _data);
+static void contacts_fake_persona_store_real_add_persona_from_details (FolksPersonaStore* base,
+                                                                GHashTable* details,
+                                                                GAsyncReadyCallback _callback_,
+                                                                gpointer _user_data_);
+static gboolean contacts_fake_persona_store_real_add_persona_from_details_co 
(ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_);
+static void contacts_fake_persona_store_real_remove_persona_data_free (gpointer _data);
+static void contacts_fake_persona_store_real_remove_persona (FolksPersonaStore* base,
+                                                      FolksPersona* persona,
+                                                      GAsyncReadyCallback _callback_,
+                                                      gpointer _user_data_);
+static gboolean contacts_fake_persona_store_real_remove_persona_co 
(ContactsFakePersonaStoreRemovePersonaData* _data_);
+static void contacts_fake_persona_store_finalize (GObject * obj);
+static GType contacts_fake_persona_store_get_type_once (void);
+static void _vala_contacts_fake_persona_store_get_property (GObject * object,
+                                                     guint property_id,
+                                                     GValue * value,
+                                                     GParamSpec * pspec);
+GType contacts_fake_persona_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsFakePersona, g_object_unref)
+ContactsFakePersona* contacts_fake_persona_new (FolksPersonaStore* store,
+                                                GHashTable* details);
+ContactsFakePersona* contacts_fake_persona_construct (GType object_type,
+                                                      FolksPersonaStore* store,
+                                                      GHashTable* details);
+static FolksPersona* contacts_fake_persona_get_real_persona (ContactsFakePersona* self);
+static void contacts_fake_persona_set_real_persona (ContactsFakePersona* self,
+                                             FolksPersona* value);
+static GValue* _g_value_dup (GValue* self);
+static void contacts_fake_persona_finalize (GObject * obj);
+static GType contacts_fake_persona_get_type_once (void);
+static void _vala_contacts_fake_persona_get_property (GObject * object,
+                                               guint property_id,
+                                               GValue * value,
+                                               GParamSpec * pspec);
+static void _vala_contacts_fake_persona_set_property (GObject * object,
+                                               guint property_id,
+                                               const GValue * value,
+                                               GParamSpec * pspec);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+static const gchar* CONTACTS_FAKE_PERSONA__linkable_properties[0] = {};
+static const gchar* CONTACTS_FAKE_PERSONA__writeable_properties[0] = {};
+
+static inline gpointer
+contacts_fake_persona_store_get_instance_private (ContactsFakePersonaStore* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsFakePersonaStore_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 30 "../src/contacts-fake-persona-store.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 234 "contacts-fake-persona-store.c"
+}
+
+ContactsFakePersonaStore*
+contacts_fake_persona_store_the_store (void)
+{
+       ContactsFakePersonaStore* _tmp0_;
+       ContactsFakePersonaStore* _tmp2_;
+       ContactsFakePersonaStore* _tmp3_;
+       ContactsFakePersonaStore* result = NULL;
+#line 28 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = contacts_fake_persona_store__the_store;
+#line 28 "../src/contacts-fake-persona-store.vala"
+       if (_tmp0_ == NULL) {
+#line 248 "contacts-fake-persona-store.c"
+               ContactsFakePersonaStore* _tmp1_;
+#line 29 "../src/contacts-fake-persona-store.vala"
+               _tmp1_ = contacts_fake_persona_store_new ();
+#line 29 "../src/contacts-fake-persona-store.vala"
+               _g_object_unref0 (contacts_fake_persona_store__the_store);
+#line 29 "../src/contacts-fake-persona-store.vala"
+               contacts_fake_persona_store__the_store = _tmp1_;
+#line 256 "contacts-fake-persona-store.c"
+       }
+#line 30 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = contacts_fake_persona_store__the_store;
+#line 30 "../src/contacts-fake-persona-store.vala"
+       _tmp3_ = _g_object_ref0 (_tmp2_);
+#line 30 "../src/contacts-fake-persona-store.vala"
+       result = _tmp3_;
+#line 30 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 266 "contacts-fake-persona-store.c"
+}
+
+ContactsFakePersonaStore*
+contacts_fake_persona_store_construct (GType object_type)
+{
+       ContactsFakePersonaStore * self = NULL;
+       GeeHashMap* _tmp0_;
+       GeeHashMap* _tmp1_;
+       GeeMap* _tmp2_;
+       GeeMap* _tmp3_;
+#line 38 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) g_object_new (object_type, "id", "uri", "display-name", "fake 
store", NULL);
+#line 39 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, 
FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL, NULL, NULL);
+#line 39 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (self->priv->_personas);
+#line 39 "../src/contacts-fake-persona-store.vala"
+       self->priv->_personas = _tmp0_;
+#line 40 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = self->priv->_personas;
+#line 40 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = gee_abstract_map_get_read_only_view ((GeeAbstractMap*) _tmp1_);
+#line 40 "../src/contacts-fake-persona-store.vala"
+       _tmp3_ = _tmp2_;
+#line 40 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (self->priv->_personas_ro);
+#line 40 "../src/contacts-fake-persona-store.vala"
+       self->priv->_personas_ro = _tmp3_;
+#line 37 "../src/contacts-fake-persona-store.vala"
+       return self;
+#line 297 "contacts-fake-persona-store.c"
+}
+
+ContactsFakePersonaStore*
+contacts_fake_persona_store_new (void)
+{
+#line 37 "../src/contacts-fake-persona-store.vala"
+       return contacts_fake_persona_store_construct (CONTACTS_TYPE_FAKE_PERSONA_STORE);
+#line 305 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_real_prepare_data_free (gpointer _data)
+{
+       ContactsFakePersonaStorePrepareData* _data_;
+       _data_ = _data;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (_data_->self);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_slice_free (ContactsFakePersonaStorePrepareData, _data_);
+#line 317 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_real_prepare (FolksPersonaStore* base,
+                                          GAsyncReadyCallback _callback_,
+                                          gpointer _user_data_)
+{
+       ContactsFakePersonaStore * self;
+       ContactsFakePersonaStorePrepareData* _data_;
+       ContactsFakePersonaStore* _tmp0_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_ = g_slice_new0 (ContactsFakePersonaStorePrepareData);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_fake_persona_store_real_prepare_data_free);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->self = _tmp0_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_store_real_prepare_co (_data_);
+#line 342 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_prepare_finish (FolksPersonaStore* base,
+                                            GAsyncResult* _res_,
+                                            GError** error)
+{
+       ContactsFakePersonaStorePrepareData* _data_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       if (NULL == _data_) {
+#line 25 "../src/contacts-fake-persona-store.vala"
+               return;
+#line 357 "contacts-fake-persona-store.c"
+       }
+}
+
+static gboolean
+contacts_fake_persona_store_real_prepare_co (ContactsFakePersonaStorePrepareData* _data_)
+{
+#line 56 "../src/contacts-fake-persona-store.vala"
+       switch (_data_->_state_) {
+#line 56 "../src/contacts-fake-persona-store.vala"
+               case 0:
+#line 368 "contacts-fake-persona-store.c"
+               goto _state_0;
+               default:
+#line 56 "../src/contacts-fake-persona-store.vala"
+               g_assert_not_reached ();
+#line 373 "contacts-fake-persona-store.c"
+       }
+       _state_0:
+#line 56 "../src/contacts-fake-persona-store.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 56 "../src/contacts-fake-persona-store.vala"
+       if (_data_->_state_ != 0) {
+#line 56 "../src/contacts-fake-persona-store.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 56 "../src/contacts-fake-persona-store.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 384 "contacts-fake-persona-store.c"
+               }
+       }
+#line 56 "../src/contacts-fake-persona-store.vala"
+       g_object_unref (_data_->_async_result);
+#line 56 "../src/contacts-fake-persona-store.vala"
+       return FALSE;
+#line 391 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_real_add_persona_from_details_data_free (gpointer _data)
+{
+       ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_;
+       _data_ = _data;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_hash_table_unref0 (_data_->details);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (_data_->result);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (_data_->self);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_slice_free (ContactsFakePersonaStoreAddPersonaFromDetailsData, _data_);
+#line 407 "contacts-fake-persona-store.c"
+}
+
+static gpointer
+_g_hash_table_ref0 (gpointer self)
+{
+#line 25 "../src/contacts-fake-persona-store.vala"
+       return self ? g_hash_table_ref (self) : NULL;
+#line 415 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_real_add_persona_from_details (FolksPersonaStore* base,
+                                                           GHashTable* details,
+                                                           GAsyncReadyCallback _callback_,
+                                                           gpointer _user_data_)
+{
+       ContactsFakePersonaStore * self;
+       ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_;
+       ContactsFakePersonaStore* _tmp0_;
+       GHashTable* _tmp1_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_ = g_slice_new0 (ContactsFakePersonaStoreAddPersonaFromDetailsData);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_fake_persona_store_real_add_persona_from_details_data_free);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->self = _tmp0_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = _g_hash_table_ref0 (details);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_hash_table_unref0 (_data_->details);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->details = _tmp1_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_store_real_add_persona_from_details_co (_data_);
+#line 448 "contacts-fake-persona-store.c"
+}
+
+static FolksPersona*
+contacts_fake_persona_store_add_persona_from_details_finish (FolksPersonaStore* base,
+                                                             GAsyncResult* _res_,
+                                                             GError** error)
+{
+       FolksPersona* result;
+       ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       if (NULL == _data_) {
+#line 25 "../src/contacts-fake-persona-store.vala"
+               return NULL;
+#line 464 "contacts-fake-persona-store.c"
+       }
+#line 25 "../src/contacts-fake-persona-store.vala"
+       result = _data_->result;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->result = NULL;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 472 "contacts-fake-persona-store.c"
+}
+
+static gboolean
+contacts_fake_persona_store_real_add_persona_from_details_co 
(ContactsFakePersonaStoreAddPersonaFromDetailsData* _data_)
+{
+#line 58 "../src/contacts-fake-persona-store.vala"
+       switch (_data_->_state_) {
+#line 58 "../src/contacts-fake-persona-store.vala"
+               case 0:
+#line 482 "contacts-fake-persona-store.c"
+               goto _state_0;
+               default:
+#line 58 "../src/contacts-fake-persona-store.vala"
+               g_assert_not_reached ();
+#line 487 "contacts-fake-persona-store.c"
+       }
+       _state_0:
+#line 59 "../src/contacts-fake-persona-store.vala"
+       _data_->result = NULL;
+#line 59 "../src/contacts-fake-persona-store.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 59 "../src/contacts-fake-persona-store.vala"
+       if (_data_->_state_ != 0) {
+#line 59 "../src/contacts-fake-persona-store.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 59 "../src/contacts-fake-persona-store.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 500 "contacts-fake-persona-store.c"
+               }
+       }
+#line 59 "../src/contacts-fake-persona-store.vala"
+       g_object_unref (_data_->_async_result);
+#line 59 "../src/contacts-fake-persona-store.vala"
+       return FALSE;
+#line 507 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_real_remove_persona_data_free (gpointer _data)
+{
+       ContactsFakePersonaStoreRemovePersonaData* _data_;
+       _data_ = _data;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (_data_->persona);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (_data_->self);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_slice_free (ContactsFakePersonaStoreRemovePersonaData, _data_);
+#line 521 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_real_remove_persona (FolksPersonaStore* base,
+                                                 FolksPersona* persona,
+                                                 GAsyncReadyCallback _callback_,
+                                                 gpointer _user_data_)
+{
+       ContactsFakePersonaStore * self;
+       ContactsFakePersonaStoreRemovePersonaData* _data_;
+       ContactsFakePersonaStore* _tmp0_;
+       FolksPersona* _tmp1_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_ = g_slice_new0 (ContactsFakePersonaStoreRemovePersonaData);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_fake_persona_store_real_remove_persona_data_free);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->self = _tmp0_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = _g_object_ref0 (persona);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (_data_->persona);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_->persona = _tmp1_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_store_real_remove_persona_co (_data_);
+#line 554 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_remove_persona_finish (FolksPersonaStore* base,
+                                                   GAsyncResult* _res_,
+                                                   GError** error)
+{
+       ContactsFakePersonaStoreRemovePersonaData* _data_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       if (NULL == _data_) {
+#line 25 "../src/contacts-fake-persona-store.vala"
+               return;
+#line 569 "contacts-fake-persona-store.c"
+       }
+}
+
+static gboolean
+contacts_fake_persona_store_real_remove_persona_co (ContactsFakePersonaStoreRemovePersonaData* _data_)
+{
+#line 62 "../src/contacts-fake-persona-store.vala"
+       switch (_data_->_state_) {
+#line 62 "../src/contacts-fake-persona-store.vala"
+               case 0:
+#line 580 "contacts-fake-persona-store.c"
+               goto _state_0;
+               default:
+#line 62 "../src/contacts-fake-persona-store.vala"
+               g_assert_not_reached ();
+#line 585 "contacts-fake-persona-store.c"
+       }
+       _state_0:
+#line 62 "../src/contacts-fake-persona-store.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 62 "../src/contacts-fake-persona-store.vala"
+       if (_data_->_state_ != 0) {
+#line 62 "../src/contacts-fake-persona-store.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 62 "../src/contacts-fake-persona-store.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 596 "contacts-fake-persona-store.c"
+               }
+       }
+#line 62 "../src/contacts-fake-persona-store.vala"
+       g_object_unref (_data_->_async_result);
+#line 62 "../src/contacts-fake-persona-store.vala"
+       return FALSE;
+#line 603 "contacts-fake-persona-store.c"
+}
+
+static const gchar*
+contacts_fake_persona_store_real_get_type_id (FolksPersonaStore* base)
+{
+       const gchar* result;
+       ContactsFakePersonaStore* self;
+#line 35 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 35 "../src/contacts-fake-persona-store.vala"
+       result = "fake";
+#line 35 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 617 "contacts-fake-persona-store.c"
+}
+
+static GeeMap*
+contacts_fake_persona_store_real_get_personas (FolksPersonaStore* base)
+{
+       GeeMap* result;
+       ContactsFakePersonaStore* self;
+       GeeMap* _tmp0_;
+#line 44 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 44 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->_personas_ro;
+#line 44 "../src/contacts-fake-persona-store.vala"
+       result = _tmp0_;
+#line 44 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 634 "contacts-fake-persona-store.c"
+}
+
+static FolksMaybeBool
+contacts_fake_persona_store_real_get_can_add_personas (FolksPersonaStore* base)
+{
+       FolksMaybeBool result;
+       ContactsFakePersonaStore* self;
+#line 47 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 47 "../src/contacts-fake-persona-store.vala"
+       result = FOLKS_MAYBE_BOOL_FALSE;
+#line 47 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 648 "contacts-fake-persona-store.c"
+}
+
+static FolksMaybeBool
+contacts_fake_persona_store_real_get_can_alias_personas (FolksPersonaStore* base)
+{
+       FolksMaybeBool result;
+       ContactsFakePersonaStore* self;
+#line 48 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 48 "../src/contacts-fake-persona-store.vala"
+       result = FOLKS_MAYBE_BOOL_FALSE;
+#line 48 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 662 "contacts-fake-persona-store.c"
+}
+
+static FolksMaybeBool
+contacts_fake_persona_store_real_get_can_group_personas (FolksPersonaStore* base)
+{
+       FolksMaybeBool result;
+       ContactsFakePersonaStore* self;
+#line 49 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 49 "../src/contacts-fake-persona-store.vala"
+       result = FOLKS_MAYBE_BOOL_FALSE;
+#line 49 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 676 "contacts-fake-persona-store.c"
+}
+
+static FolksMaybeBool
+contacts_fake_persona_store_real_get_can_remove_personas (FolksPersonaStore* base)
+{
+       FolksMaybeBool result;
+       ContactsFakePersonaStore* self;
+#line 50 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 50 "../src/contacts-fake-persona-store.vala"
+       result = FOLKS_MAYBE_BOOL_FALSE;
+#line 50 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 690 "contacts-fake-persona-store.c"
+}
+
+static gboolean
+contacts_fake_persona_store_real_get_is_prepared (FolksPersonaStore* base)
+{
+       gboolean result;
+       ContactsFakePersonaStore* self;
+#line 51 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 51 "../src/contacts-fake-persona-store.vala"
+       result = TRUE;
+#line 51 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 704 "contacts-fake-persona-store.c"
+}
+
+static gboolean
+contacts_fake_persona_store_real_get_is_quiescent (FolksPersonaStore* base)
+{
+       gboolean result;
+       ContactsFakePersonaStore* self;
+#line 52 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 52 "../src/contacts-fake-persona-store.vala"
+       result = TRUE;
+#line 52 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 718 "contacts-fake-persona-store.c"
+}
+
+static gchar**
+contacts_fake_persona_store_real_get_always_writeable_properties (FolksPersonaStore* base,
+                                                                  gint* result_length1)
+{
+       gchar** result;
+       ContactsFakePersonaStore* self;
+       gchar** _tmp0_;
+       gint _tmp0__length1;
+       gchar** _tmp1_;
+       gint _tmp1__length1;
+#line 54 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersonaStore*) base;
+#line 54 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->_always_writeable_properties;
+#line 54 "../src/contacts-fake-persona-store.vala"
+       _tmp0__length1 = self->priv->_always_writeable_properties_length1;
+#line 54 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = _tmp0_;
+#line 54 "../src/contacts-fake-persona-store.vala"
+       _tmp1__length1 = _tmp0__length1;
+#line 54 "../src/contacts-fake-persona-store.vala"
+       if (result_length1) {
+#line 54 "../src/contacts-fake-persona-store.vala"
+               *result_length1 = _tmp1__length1;
+#line 745 "contacts-fake-persona-store.c"
+       }
+#line 54 "../src/contacts-fake-persona-store.vala"
+       result = _tmp1_;
+#line 54 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 751 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_class_init (ContactsFakePersonaStoreClass * klass,
+                                        gpointer klass_data)
+{
+#line 25 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_store_parent_class = g_type_class_peek_parent (klass);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsFakePersonaStore_private_offset);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       ((FolksPersonaStoreClass *) klass)->prepare = (void (*) (FolksPersonaStore*, GAsyncReadyCallback, 
gpointer)) contacts_fake_persona_store_real_prepare;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       ((FolksPersonaStoreClass *) klass)->prepare_finish = (void (*) (FolksPersonaStore*, GAsyncResult*, 
GError**)) contacts_fake_persona_store_prepare_finish;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       ((FolksPersonaStoreClass *) klass)->add_persona_from_details = (void (*) (FolksPersonaStore*, 
GHashTable*, GAsyncReadyCallback, gpointer)) contacts_fake_persona_store_real_add_persona_from_details;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       ((FolksPersonaStoreClass *) klass)->add_persona_from_details_finish = (FolksPersona* (*) 
(FolksPersonaStore*, GAsyncResult*, GError**)) contacts_fake_persona_store_add_persona_from_details_finish;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       ((FolksPersonaStoreClass *) klass)->remove_persona = (void (*) (FolksPersonaStore*, FolksPersona*, 
GAsyncReadyCallback, gpointer)) contacts_fake_persona_store_real_remove_persona;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       ((FolksPersonaStoreClass *) klass)->remove_persona_finish = (void (*) (FolksPersonaStore*, 
GAsyncResult*, GError**)) contacts_fake_persona_store_remove_persona_finish;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_type_id = contacts_fake_persona_store_real_get_type_id;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_personas = contacts_fake_persona_store_real_get_personas;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_can_add_personas = 
contacts_fake_persona_store_real_get_can_add_personas;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_can_alias_personas = 
contacts_fake_persona_store_real_get_can_alias_personas;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_can_group_personas = 
contacts_fake_persona_store_real_get_can_group_personas;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_can_remove_personas = 
contacts_fake_persona_store_real_get_can_remove_personas;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_is_prepared = contacts_fake_persona_store_real_get_is_prepared;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_is_quiescent = 
contacts_fake_persona_store_real_get_is_quiescent;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_STORE_CLASS (klass)->get_always_writeable_properties = 
contacts_fake_persona_store_real_get_always_writeable_properties;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_fake_persona_store_get_property;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_fake_persona_store_finalize;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY] = g_param_spec_string 
("type-id", "type-id", "type-id", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY] = g_param_spec_object 
("personas", "personas", "personas", GEE_TYPE_MAP, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY] = 
g_param_spec_enum ("can-add-personas", "can-add-personas", "can-add-personas", FOLKS_TYPE_MAYBE_BOOL, 0, 
G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY] = 
g_param_spec_enum ("can-alias-personas", "can-alias-personas", "can-alias-personas", FOLKS_TYPE_MAYBE_BOOL, 
0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY] = 
g_param_spec_enum ("can-group-personas", "can-group-personas", "can-group-personas", FOLKS_TYPE_MAYBE_BOOL, 
0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY] = 
g_param_spec_enum ("can-remove-personas", "can-remove-personas", "can-remove-personas", 
FOLKS_TYPE_MAYBE_BOOL, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY] = 
g_param_spec_boolean ("is-prepared", "is-prepared", "is-prepared", FALSE, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY] = 
g_param_spec_boolean ("is-quiescent", "is-quiescent", "is-quiescent", FALSE, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE));
+#line 25 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY, 
contacts_fake_persona_store_properties[CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY] = 
g_param_spec_boxed ("always-writeable-properties", "always-writeable-properties", 
"always-writeable-properties", G_TYPE_STRV, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 814 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_instance_init (ContactsFakePersonaStore * self,
+                                           gpointer klass)
+{
+       gchar** _tmp0_;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       self->priv = contacts_fake_persona_store_get_instance_private (self);
+#line 53 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = g_new0 (gchar*, 0 + 1);
+#line 53 "../src/contacts-fake-persona-store.vala"
+       self->priv->_always_writeable_properties = _tmp0_;
+#line 53 "../src/contacts-fake-persona-store.vala"
+       self->priv->_always_writeable_properties_length1 = 0;
+#line 53 "../src/contacts-fake-persona-store.vala"
+       self->priv->__always_writeable_properties_size_ = self->priv->_always_writeable_properties_length1;
+#line 832 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_store_finalize (GObject * obj)
+{
+       ContactsFakePersonaStore * self;
+#line 25 "../src/contacts-fake-persona-store.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStore);
+#line 32 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (self->priv->_personas);
+#line 33 "../src/contacts-fake-persona-store.vala"
+       _g_object_unref0 (self->priv->_personas_ro);
+#line 53 "../src/contacts-fake-persona-store.vala"
+       self->priv->_always_writeable_properties = (_vala_array_free 
(self->priv->_always_writeable_properties, self->priv->_always_writeable_properties_length1, (GDestroyNotify) 
g_free), NULL);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       G_OBJECT_CLASS (contacts_fake_persona_store_parent_class)->finalize (obj);
+#line 849 "contacts-fake-persona-store.c"
+}
+
+/**
+ * A "dummy" store which is used to have an equivalent of a PersonaStore for a
+ * FakePersona.
+ */
+static GType
+contacts_fake_persona_store_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsFakePersonaStoreClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_fake_persona_store_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsFakePersonaStore), 0, (GInstanceInitFunc) 
contacts_fake_persona_store_instance_init, NULL };
+       GType contacts_fake_persona_store_type_id;
+       contacts_fake_persona_store_type_id = g_type_register_static (FOLKS_TYPE_PERSONA_STORE, 
"ContactsFakePersonaStore", &g_define_type_info, 0);
+       ContactsFakePersonaStore_private_offset = g_type_add_instance_private 
(contacts_fake_persona_store_type_id, sizeof (ContactsFakePersonaStorePrivate));
+       return contacts_fake_persona_store_type_id;
+}
+
+GType
+contacts_fake_persona_store_get_type (void)
+{
+       static volatile gsize contacts_fake_persona_store_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_fake_persona_store_type_id__volatile)) {
+               GType contacts_fake_persona_store_type_id;
+               contacts_fake_persona_store_type_id = contacts_fake_persona_store_get_type_once ();
+               g_once_init_leave (&contacts_fake_persona_store_type_id__volatile, 
contacts_fake_persona_store_type_id);
+       }
+       return contacts_fake_persona_store_type_id__volatile;
+}
+
+static void
+_vala_contacts_fake_persona_store_get_property (GObject * object,
+                                                guint property_id,
+                                                GValue * value,
+                                                GParamSpec * pspec)
+{
+       ContactsFakePersonaStore * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_PERSONA_STORE, 
ContactsFakePersonaStore);
+#line 25 "../src/contacts-fake-persona-store.vala"
+       switch (property_id) {
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_TYPE_ID_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_string (value, folks_persona_store_get_type_id ((FolksPersonaStore*) self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_PERSONAS_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_persona_store_get_personas ((FolksPersonaStore*) self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_CAN_ADD_PERSONAS_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_enum (value, folks_persona_store_get_can_add_personas ((FolksPersonaStore*) 
self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_CAN_ALIAS_PERSONAS_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_enum (value, folks_persona_store_get_can_alias_personas ((FolksPersonaStore*) 
self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_CAN_GROUP_PERSONAS_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_enum (value, folks_persona_store_get_can_group_personas ((FolksPersonaStore*) 
self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_CAN_REMOVE_PERSONAS_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_enum (value, folks_persona_store_get_can_remove_personas ((FolksPersonaStore*) 
self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_IS_PREPARED_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_boolean (value, folks_persona_store_get_is_prepared ((FolksPersonaStore*) self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_IS_QUIESCENT_PROPERTY:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               g_value_set_boolean (value, folks_persona_store_get_is_quiescent ((FolksPersonaStore*) self));
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 25 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STORE_ALWAYS_WRITEABLE_PROPERTIES_PROPERTY:
+#line 938 "contacts-fake-persona-store.c"
+               {
+                       int length;
+#line 25 "../src/contacts-fake-persona-store.vala"
+                       g_value_set_boxed (value, folks_persona_store_get_always_writeable_properties 
((FolksPersonaStore*) self, &length));
+#line 943 "contacts-fake-persona-store.c"
+               }
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 947 "contacts-fake-persona-store.c"
+               default:
+#line 25 "../src/contacts-fake-persona-store.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 25 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 953 "contacts-fake-persona-store.c"
+       }
+}
+
+static inline gpointer
+contacts_fake_persona_get_instance_private (ContactsFakePersona* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsFakePersona_private_offset);
+}
+
+ContactsFakePersona*
+contacts_fake_persona_construct (GType object_type,
+                                 FolksPersonaStore* store,
+                                 GHashTable* details)
+{
+       ContactsFakePersona * self = NULL;
+       GHashTable* _tmp0_;
+#line 250 "../src/contacts-fake-persona-store.vala"
+       g_return_val_if_fail (store != NULL, NULL);
+#line 250 "../src/contacts-fake-persona-store.vala"
+       g_return_val_if_fail (details != NULL, NULL);
+#line 252 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) g_object_new (object_type, "display-id", "display-id-fake-persona", 
"uid", "uid-fake-persona", "iid", "iid", "store", store, "is-user", FALSE, NULL);
+#line 258 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = _g_hash_table_ref0 (details);
+#line 258 "../src/contacts-fake-persona-store.vala"
+       _g_hash_table_unref0 (self->priv->properties);
+#line 258 "../src/contacts-fake-persona-store.vala"
+       self->priv->properties = _tmp0_;
+#line 250 "../src/contacts-fake-persona-store.vala"
+       return self;
+#line 984 "contacts-fake-persona-store.c"
+}
+
+ContactsFakePersona*
+contacts_fake_persona_new (FolksPersonaStore* store,
+                           GHashTable* details)
+{
+#line 250 "../src/contacts-fake-persona-store.vala"
+       return contacts_fake_persona_construct (CONTACTS_TYPE_FAKE_PERSONA, store, details);
+#line 993 "contacts-fake-persona-store.c"
+}
+
+static FolksPersona*
+contacts_fake_persona_get_real_persona (ContactsFakePersona* self)
+{
+       FolksPersona* result;
+       FolksPersona* _tmp0_;
+#line 84 "../src/contacts-fake-persona-store.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 84 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->_real_persona;
+#line 84 "../src/contacts-fake-persona-store.vala"
+       result = _tmp0_;
+#line 84 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1009 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_set_real_persona (ContactsFakePersona* self,
+                                        FolksPersona* value)
+{
+#line 84 "../src/contacts-fake-persona-store.vala"
+       g_return_if_fail (self != NULL);
+#line 84 "../src/contacts-fake-persona-store.vala"
+       self->priv->_real_persona = value;
+#line 1020 "contacts-fake-persona-store.c"
+}
+
+static gchar**
+contacts_fake_persona_real_get_linkable_properties (FolksPersona* base,
+                                                    gint* result_length1)
+{
+       gchar** result;
+       ContactsFakePersona* self;
+       gchar** _tmp0_;
+       gint _tmp0__length1;
+#line 89 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 89 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = CONTACTS_FAKE_PERSONA__linkable_properties;
+#line 89 "../src/contacts-fake-persona-store.vala"
+       _tmp0__length1 = G_N_ELEMENTS (CONTACTS_FAKE_PERSONA__linkable_properties);
+#line 89 "../src/contacts-fake-persona-store.vala"
+       if (result_length1) {
+#line 89 "../src/contacts-fake-persona-store.vala"
+               *result_length1 = _tmp0__length1;
+#line 1041 "contacts-fake-persona-store.c"
+       }
+#line 89 "../src/contacts-fake-persona-store.vala"
+       result = _tmp0_;
+#line 89 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1047 "contacts-fake-persona-store.c"
+}
+
+static gchar**
+contacts_fake_persona_real_get_writeable_properties (FolksPersona* base,
+                                                     gint* result_length1)
+{
+       gchar** result;
+       ContactsFakePersona* self;
+       gchar** _tmp0_;
+       gint _tmp0__length1;
+#line 93 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 93 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = CONTACTS_FAKE_PERSONA__writeable_properties;
+#line 93 "../src/contacts-fake-persona-store.vala"
+       _tmp0__length1 = G_N_ELEMENTS (CONTACTS_FAKE_PERSONA__writeable_properties);
+#line 93 "../src/contacts-fake-persona-store.vala"
+       if (result_length1) {
+#line 93 "../src/contacts-fake-persona-store.vala"
+               *result_length1 = _tmp0__length1;
+#line 1068 "contacts-fake-persona-store.c"
+       }
+#line 93 "../src/contacts-fake-persona-store.vala"
+       result = _tmp0_;
+#line 93 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1074 "contacts-fake-persona-store.c"
+}
+
+static GLoadableIcon*
+contacts_fake_persona_real_get_avatar (FolksAvatarDetails* base)
+{
+       GLoadableIcon* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp3_;
+#line 99 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 99 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 99 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "avatar");
+#line 99 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 100 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 100 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 101 "../src/contacts-fake-persona-store.vala"
+               result = NULL;
+#line 101 "../src/contacts-fake-persona-store.vala"
+               return result;
+#line 1103 "contacts-fake-persona-store.c"
+       }
+#line 102 "../src/contacts-fake-persona-store.vala"
+       _tmp3_ = value;
+#line 102 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_object (_tmp3_);
+#line 102 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1111 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_avatar (FolksAvatarDetails* base,
+                                       GLoadableIcon* value)
+{
+       ContactsFakePersona* self;
+#line 104 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1121 "contacts-fake-persona-store.c"
+}
+
+static const gchar*
+contacts_fake_persona_real_get_full_name (FolksNameDetails* base)
+{
+       const gchar* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp3_;
+       const gchar* _tmp4_;
+#line 110 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 110 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 110 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "full-name");
+#line 110 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 111 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 111 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 112 "../src/contacts-fake-persona-store.vala"
+               result = "";
+#line 112 "../src/contacts-fake-persona-store.vala"
+               return result;
+#line 1151 "contacts-fake-persona-store.c"
+       }
+#line 113 "../src/contacts-fake-persona-store.vala"
+       _tmp3_ = value;
+#line 113 "../src/contacts-fake-persona-store.vala"
+       _tmp4_ = g_value_get_string (_tmp3_);
+#line 113 "../src/contacts-fake-persona-store.vala"
+       result = _tmp4_;
+#line 113 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1161 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_full_name (FolksNameDetails* base,
+                                          const gchar* value)
+{
+       ContactsFakePersona* self;
+#line 114 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1171 "contacts-fake-persona-store.c"
+}
+
+static const gchar*
+contacts_fake_persona_real_get_nickname (FolksNameDetails* base)
+{
+       const gchar* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp3_;
+       const gchar* _tmp4_;
+#line 120 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 120 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 120 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "nickname");
+#line 120 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 121 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 121 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 122 "../src/contacts-fake-persona-store.vala"
+               result = "";
+#line 122 "../src/contacts-fake-persona-store.vala"
+               return result;
+#line 1201 "contacts-fake-persona-store.c"
+       }
+#line 123 "../src/contacts-fake-persona-store.vala"
+       _tmp3_ = value;
+#line 123 "../src/contacts-fake-persona-store.vala"
+       _tmp4_ = g_value_get_string (_tmp3_);
+#line 123 "../src/contacts-fake-persona-store.vala"
+       result = _tmp4_;
+#line 123 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1211 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_nickname (FolksNameDetails* base,
+                                         const gchar* value)
+{
+       ContactsFakePersona* self;
+#line 124 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1221 "contacts-fake-persona-store.c"
+}
+
+static FolksStructuredName*
+contacts_fake_persona_real_get_structured_name (FolksNameDetails* base)
+{
+       FolksStructuredName* result;
+       ContactsFakePersona* self;
+#line 130 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 130 "../src/contacts-fake-persona-store.vala"
+       result = NULL;
+#line 130 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1235 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_structured_name (FolksNameDetails* base,
+                                                FolksStructuredName* value)
+{
+       ContactsFakePersona* self;
+#line 131 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1245 "contacts-fake-persona-store.c"
+}
+
+static GValue*
+_g_value_dup (GValue* self)
+{
+#line 141 "../src/contacts-fake-persona-store.vala"
+       return g_boxed_copy (G_TYPE_VALUE, self);
+#line 1253 "contacts-fake-persona-store.c"
+}
+
+static gpointer
+__g_value_dup0 (gpointer self)
+{
+#line 141 "../src/contacts-fake-persona-store.vala"
+       return self ? _g_value_dup (self) : NULL;
+#line 1261 "contacts-fake-persona-store.c"
+}
+
+static GeeSet*
+contacts_fake_persona_real_get_phone_numbers (FolksPhoneDetails* base)
+{
+       GeeSet* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp13_;
+#line 137 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 137 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 137 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "phone-numbers");
+#line 137 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 138 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 138 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 1286 "contacts-fake-persona-store.c"
+               GValue new_value = {0};
+               GValue _tmp3_ = {0};
+               GeeHashSet* _tmp4_;
+               GeeHashSet* _tmp5_;
+               GHashTable* _tmp6_;
+               gchar* _tmp7_;
+               GValue _tmp8_;
+               GValue _tmp9_;
+               GValue* _tmp10_;
+               GHashTable* _tmp11_;
+               gconstpointer _tmp12_;
+#line 139 "../src/contacts-fake-persona-store.vala"
+               g_value_init (&_tmp3_, GEE_TYPE_SET);
+#line 139 "../src/contacts-fake-persona-store.vala"
+               new_value = _tmp3_;
+#line 140 "../src/contacts-fake-persona-store.vala"
+               _tmp4_ = gee_hash_set_new (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 140 "../src/contacts-fake-persona-store.vala"
+               _tmp5_ = _tmp4_;
+#line 140 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (&new_value, (GObject*) _tmp5_);
+#line 140 "../src/contacts-fake-persona-store.vala"
+               _g_object_unref0 (_tmp5_);
+#line 141 "../src/contacts-fake-persona-store.vala"
+               _tmp6_ = self->priv->properties;
+#line 141 "../src/contacts-fake-persona-store.vala"
+               _tmp7_ = g_strdup ("phone-numbers");
+#line 141 "../src/contacts-fake-persona-store.vala"
+               _tmp8_ = new_value;
+#line 141 "../src/contacts-fake-persona-store.vala"
+               _tmp9_ = _tmp8_;
+#line 141 "../src/contacts-fake-persona-store.vala"
+               _tmp10_ = __g_value_dup0 (&_tmp9_);
+#line 141 "../src/contacts-fake-persona-store.vala"
+               g_hash_table_insert (_tmp6_, _tmp7_, _tmp10_);
+#line 142 "../src/contacts-fake-persona-store.vala"
+               _tmp11_ = self->priv->properties;
+#line 142 "../src/contacts-fake-persona-store.vala"
+               _tmp12_ = g_hash_table_lookup (_tmp11_, "phone-numbers");
+#line 142 "../src/contacts-fake-persona-store.vala"
+               value = (GValue*) _tmp12_;
+#line 138 "../src/contacts-fake-persona-store.vala"
+               G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
+#line 1330 "contacts-fake-persona-store.c"
+       }
+#line 144 "../src/contacts-fake-persona-store.vala"
+       _tmp13_ = value;
+#line 144 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_object (_tmp13_);
+#line 144 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1338 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_phone_numbers (FolksPhoneDetails* base,
+                                              GeeSet* value)
+{
+       ContactsFakePersona* self;
+#line 147 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1348 "contacts-fake-persona-store.c"
+}
+
+static GeeSet*
+contacts_fake_persona_real_get_urls (FolksUrlDetails* base)
+{
+       GeeSet* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp13_;
+#line 153 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 153 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 153 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "urls");
+#line 153 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 154 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 154 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 1373 "contacts-fake-persona-store.c"
+               GValue new_value = {0};
+               GValue _tmp3_ = {0};
+               GeeHashSet* _tmp4_;
+               GeeHashSet* _tmp5_;
+               GHashTable* _tmp6_;
+               gchar* _tmp7_;
+               GValue _tmp8_;
+               GValue _tmp9_;
+               GValue* _tmp10_;
+               GHashTable* _tmp11_;
+               gconstpointer _tmp12_;
+#line 155 "../src/contacts-fake-persona-store.vala"
+               g_value_init (&_tmp3_, GEE_TYPE_SET);
+#line 155 "../src/contacts-fake-persona-store.vala"
+               new_value = _tmp3_;
+#line 156 "../src/contacts-fake-persona-store.vala"
+               _tmp4_ = gee_hash_set_new (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 156 "../src/contacts-fake-persona-store.vala"
+               _tmp5_ = _tmp4_;
+#line 156 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (&new_value, (GObject*) _tmp5_);
+#line 156 "../src/contacts-fake-persona-store.vala"
+               _g_object_unref0 (_tmp5_);
+#line 157 "../src/contacts-fake-persona-store.vala"
+               _tmp6_ = self->priv->properties;
+#line 157 "../src/contacts-fake-persona-store.vala"
+               _tmp7_ = g_strdup ("urls");
+#line 157 "../src/contacts-fake-persona-store.vala"
+               _tmp8_ = new_value;
+#line 157 "../src/contacts-fake-persona-store.vala"
+               _tmp9_ = _tmp8_;
+#line 157 "../src/contacts-fake-persona-store.vala"
+               _tmp10_ = __g_value_dup0 (&_tmp9_);
+#line 157 "../src/contacts-fake-persona-store.vala"
+               g_hash_table_insert (_tmp6_, _tmp7_, _tmp10_);
+#line 158 "../src/contacts-fake-persona-store.vala"
+               _tmp11_ = self->priv->properties;
+#line 158 "../src/contacts-fake-persona-store.vala"
+               _tmp12_ = g_hash_table_lookup (_tmp11_, "urls");
+#line 158 "../src/contacts-fake-persona-store.vala"
+               value = (GValue*) _tmp12_;
+#line 154 "../src/contacts-fake-persona-store.vala"
+               G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
+#line 1417 "contacts-fake-persona-store.c"
+       }
+#line 160 "../src/contacts-fake-persona-store.vala"
+       _tmp13_ = value;
+#line 160 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_object (_tmp13_);
+#line 160 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1425 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_urls (FolksUrlDetails* base,
+                                     GeeSet* value)
+{
+       ContactsFakePersona* self;
+#line 163 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1435 "contacts-fake-persona-store.c"
+}
+
+static GeeSet*
+contacts_fake_persona_real_get_postal_addresses (FolksPostalAddressDetails* base)
+{
+       GeeSet* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp12_;
+#line 169 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 169 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 169 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "urls");
+#line 169 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 170 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 170 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 1460 "contacts-fake-persona-store.c"
+               GValue new_value = {0};
+               GValue _tmp3_ = {0};
+               GeeHashSet* _tmp4_;
+               GeeHashSet* _tmp5_;
+               GHashTable* _tmp6_;
+               gchar* _tmp7_;
+               GValue _tmp8_;
+               GValue _tmp9_;
+               GValue* _tmp10_;
+               GValue _tmp11_;
+#line 171 "../src/contacts-fake-persona-store.vala"
+               g_value_init (&_tmp3_, GEE_TYPE_SET);
+#line 171 "../src/contacts-fake-persona-store.vala"
+               new_value = _tmp3_;
+#line 172 "../src/contacts-fake-persona-store.vala"
+               _tmp4_ = gee_hash_set_new (FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, (GBoxedCopyFunc) 
g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 172 "../src/contacts-fake-persona-store.vala"
+               _tmp5_ = _tmp4_;
+#line 172 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (&new_value, (GObject*) _tmp5_);
+#line 172 "../src/contacts-fake-persona-store.vala"
+               _g_object_unref0 (_tmp5_);
+#line 173 "../src/contacts-fake-persona-store.vala"
+               _tmp6_ = self->priv->properties;
+#line 173 "../src/contacts-fake-persona-store.vala"
+               _tmp7_ = g_strdup ("urls");
+#line 173 "../src/contacts-fake-persona-store.vala"
+               _tmp8_ = new_value;
+#line 173 "../src/contacts-fake-persona-store.vala"
+               _tmp9_ = _tmp8_;
+#line 173 "../src/contacts-fake-persona-store.vala"
+               _tmp10_ = __g_value_dup0 (&_tmp9_);
+#line 173 "../src/contacts-fake-persona-store.vala"
+               g_hash_table_insert (_tmp6_, _tmp7_, _tmp10_);
+#line 174 "../src/contacts-fake-persona-store.vala"
+               _tmp11_ = new_value;
+#line 174 "../src/contacts-fake-persona-store.vala"
+               value = &_tmp11_;
+#line 170 "../src/contacts-fake-persona-store.vala"
+               G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
+#line 1501 "contacts-fake-persona-store.c"
+       }
+#line 177 "../src/contacts-fake-persona-store.vala"
+       _tmp12_ = value;
+#line 177 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_object (_tmp12_);
+#line 177 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1509 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_postal_addresses (FolksPostalAddressDetails* base,
+                                                 GeeSet* value)
+{
+       ContactsFakePersona* self;
+#line 180 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1519 "contacts-fake-persona-store.c"
+}
+
+static GeeSet*
+contacts_fake_persona_real_get_notes (FolksNoteDetails* base)
+{
+       GeeSet* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp12_;
+#line 186 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 186 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 186 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "notes");
+#line 186 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 187 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 187 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 1544 "contacts-fake-persona-store.c"
+               GValue new_value = {0};
+               GValue _tmp3_ = {0};
+               GeeHashSet* _tmp4_;
+               GeeHashSet* _tmp5_;
+               GHashTable* _tmp6_;
+               gchar* _tmp7_;
+               GValue _tmp8_;
+               GValue _tmp9_;
+               GValue* _tmp10_;
+               GValue _tmp11_;
+#line 188 "../src/contacts-fake-persona-store.vala"
+               g_value_init (&_tmp3_, GEE_TYPE_SET);
+#line 188 "../src/contacts-fake-persona-store.vala"
+               new_value = _tmp3_;
+#line 189 "../src/contacts-fake-persona-store.vala"
+               _tmp4_ = gee_hash_set_new (FOLKS_TYPE_NOTE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 189 "../src/contacts-fake-persona-store.vala"
+               _tmp5_ = _tmp4_;
+#line 189 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (&new_value, (GObject*) _tmp5_);
+#line 189 "../src/contacts-fake-persona-store.vala"
+               _g_object_unref0 (_tmp5_);
+#line 190 "../src/contacts-fake-persona-store.vala"
+               _tmp6_ = self->priv->properties;
+#line 190 "../src/contacts-fake-persona-store.vala"
+               _tmp7_ = g_strdup ("notes");
+#line 190 "../src/contacts-fake-persona-store.vala"
+               _tmp8_ = new_value;
+#line 190 "../src/contacts-fake-persona-store.vala"
+               _tmp9_ = _tmp8_;
+#line 190 "../src/contacts-fake-persona-store.vala"
+               _tmp10_ = __g_value_dup0 (&_tmp9_);
+#line 190 "../src/contacts-fake-persona-store.vala"
+               g_hash_table_insert (_tmp6_, _tmp7_, _tmp10_);
+#line 191 "../src/contacts-fake-persona-store.vala"
+               _tmp11_ = new_value;
+#line 191 "../src/contacts-fake-persona-store.vala"
+               value = &_tmp11_;
+#line 187 "../src/contacts-fake-persona-store.vala"
+               G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
+#line 1585 "contacts-fake-persona-store.c"
+       }
+#line 193 "../src/contacts-fake-persona-store.vala"
+       _tmp12_ = value;
+#line 193 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_object (_tmp12_);
+#line 193 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1593 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_notes (FolksNoteDetails* base,
+                                      GeeSet* value)
+{
+       ContactsFakePersona* self;
+#line 196 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1603 "contacts-fake-persona-store.c"
+}
+
+static GDateTime*
+contacts_fake_persona_real_get_birthday (FolksBirthdayDetails* base)
+{
+       GDateTime* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp3_;
+#line 202 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 202 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 202 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "birthday");
+#line 202 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 203 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 203 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 204 "../src/contacts-fake-persona-store.vala"
+               result = NULL;
+#line 204 "../src/contacts-fake-persona-store.vala"
+               return result;
+#line 1632 "contacts-fake-persona-store.c"
+       }
+#line 205 "../src/contacts-fake-persona-store.vala"
+       _tmp3_ = value;
+#line 205 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_boxed (_tmp3_);
+#line 205 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1640 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_birthday (FolksBirthdayDetails* base,
+                                         GDateTime* value)
+{
+       ContactsFakePersona* self;
+#line 207 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1650 "contacts-fake-persona-store.c"
+}
+
+static const gchar*
+contacts_fake_persona_real_get_calendar_event_id (FolksBirthdayDetails* base)
+{
+       const gchar* result;
+       ContactsFakePersona* self;
+#line 213 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 213 "../src/contacts-fake-persona-store.vala"
+       result = NULL;
+#line 213 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1664 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_calendar_event_id (FolksBirthdayDetails* base,
+                                                  const gchar* value)
+{
+       ContactsFakePersona* self;
+#line 214 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1674 "contacts-fake-persona-store.c"
+}
+
+static GeeMultiMap*
+contacts_fake_persona_real_get_im_addresses (FolksImDetails* base)
+{
+       GeeMultiMap* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp12_;
+#line 220 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 220 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 220 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "im-addresses");
+#line 220 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 221 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 221 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 1699 "contacts-fake-persona-store.c"
+               GValue new_value = {0};
+               GValue _tmp3_ = {0};
+               GeeHashMultiMap* _tmp4_;
+               GeeHashMultiMap* _tmp5_;
+               GHashTable* _tmp6_;
+               gchar* _tmp7_;
+               GValue _tmp8_;
+               GValue _tmp9_;
+               GValue* _tmp10_;
+               GValue _tmp11_;
+#line 222 "../src/contacts-fake-persona-store.vala"
+               g_value_init (&_tmp3_, GEE_TYPE_MULTI_MAP);
+#line 222 "../src/contacts-fake-persona-store.vala"
+               new_value = _tmp3_;
+#line 223 "../src/contacts-fake-persona-store.vala"
+               _tmp4_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, FOLKS_TYPE_IM_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, 
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 223 "../src/contacts-fake-persona-store.vala"
+               _tmp5_ = _tmp4_;
+#line 223 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (&new_value, (GObject*) _tmp5_);
+#line 223 "../src/contacts-fake-persona-store.vala"
+               _g_object_unref0 (_tmp5_);
+#line 224 "../src/contacts-fake-persona-store.vala"
+               _tmp6_ = self->priv->properties;
+#line 224 "../src/contacts-fake-persona-store.vala"
+               _tmp7_ = g_strdup ("im-addresses");
+#line 224 "../src/contacts-fake-persona-store.vala"
+               _tmp8_ = new_value;
+#line 224 "../src/contacts-fake-persona-store.vala"
+               _tmp9_ = _tmp8_;
+#line 224 "../src/contacts-fake-persona-store.vala"
+               _tmp10_ = __g_value_dup0 (&_tmp9_);
+#line 224 "../src/contacts-fake-persona-store.vala"
+               g_hash_table_insert (_tmp6_, _tmp7_, _tmp10_);
+#line 225 "../src/contacts-fake-persona-store.vala"
+               _tmp11_ = new_value;
+#line 225 "../src/contacts-fake-persona-store.vala"
+               value = &_tmp11_;
+#line 221 "../src/contacts-fake-persona-store.vala"
+               G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
+#line 1740 "contacts-fake-persona-store.c"
+       }
+#line 228 "../src/contacts-fake-persona-store.vala"
+       _tmp12_ = value;
+#line 228 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_object (_tmp12_);
+#line 228 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1748 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_im_addresses (FolksImDetails* base,
+                                             GeeMultiMap* value)
+{
+       ContactsFakePersona* self;
+#line 231 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1758 "contacts-fake-persona-store.c"
+}
+
+static GeeSet*
+contacts_fake_persona_real_get_email_addresses (FolksEmailDetails* base)
+{
+       GeeSet* result;
+       ContactsFakePersona* self;
+       GValue* value = NULL;
+       GHashTable* _tmp0_;
+       gconstpointer _tmp1_;
+       GValue* _tmp2_;
+       GValue* _tmp12_;
+#line 237 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 237 "../src/contacts-fake-persona-store.vala"
+       _tmp0_ = self->priv->properties;
+#line 237 "../src/contacts-fake-persona-store.vala"
+       _tmp1_ = g_hash_table_lookup (_tmp0_, "email-addresses");
+#line 237 "../src/contacts-fake-persona-store.vala"
+       value = (GValue*) _tmp1_;
+#line 238 "../src/contacts-fake-persona-store.vala"
+       _tmp2_ = value;
+#line 238 "../src/contacts-fake-persona-store.vala"
+       if (((gpointer) _tmp2_) == NULL) {
+#line 1783 "contacts-fake-persona-store.c"
+               GValue new_value = {0};
+               GValue _tmp3_ = {0};
+               GeeHashSet* _tmp4_;
+               GeeHashSet* _tmp5_;
+               GHashTable* _tmp6_;
+               gchar* _tmp7_;
+               GValue _tmp8_;
+               GValue _tmp9_;
+               GValue* _tmp10_;
+               GValue _tmp11_;
+#line 239 "../src/contacts-fake-persona-store.vala"
+               g_value_init (&_tmp3_, GEE_TYPE_SET);
+#line 239 "../src/contacts-fake-persona-store.vala"
+               new_value = _tmp3_;
+#line 240 "../src/contacts-fake-persona-store.vala"
+               _tmp4_ = gee_hash_set_new (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 240 "../src/contacts-fake-persona-store.vala"
+               _tmp5_ = _tmp4_;
+#line 240 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (&new_value, (GObject*) _tmp5_);
+#line 240 "../src/contacts-fake-persona-store.vala"
+               _g_object_unref0 (_tmp5_);
+#line 241 "../src/contacts-fake-persona-store.vala"
+               _tmp6_ = self->priv->properties;
+#line 241 "../src/contacts-fake-persona-store.vala"
+               _tmp7_ = g_strdup ("email-addresses");
+#line 241 "../src/contacts-fake-persona-store.vala"
+               _tmp8_ = new_value;
+#line 241 "../src/contacts-fake-persona-store.vala"
+               _tmp9_ = _tmp8_;
+#line 241 "../src/contacts-fake-persona-store.vala"
+               _tmp10_ = __g_value_dup0 (&_tmp9_);
+#line 241 "../src/contacts-fake-persona-store.vala"
+               g_hash_table_insert (_tmp6_, _tmp7_, _tmp10_);
+#line 242 "../src/contacts-fake-persona-store.vala"
+               _tmp11_ = new_value;
+#line 242 "../src/contacts-fake-persona-store.vala"
+               value = &_tmp11_;
+#line 238 "../src/contacts-fake-persona-store.vala"
+               G_IS_VALUE (&new_value) ? (g_value_unset (&new_value), NULL) : NULL;
+#line 1824 "contacts-fake-persona-store.c"
+       }
+#line 245 "../src/contacts-fake-persona-store.vala"
+       _tmp12_ = value;
+#line 245 "../src/contacts-fake-persona-store.vala"
+       result = g_value_get_object (_tmp12_);
+#line 245 "../src/contacts-fake-persona-store.vala"
+       return result;
+#line 1832 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_real_set_email_addresses (FolksEmailDetails* base,
+                                                GeeSet* value)
+{
+       ContactsFakePersona* self;
+#line 247 "../src/contacts-fake-persona-store.vala"
+       self = (ContactsFakePersona*) base;
+#line 1842 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_class_init (ContactsFakePersonaClass * klass,
+                                  gpointer klass_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_parent_class = g_type_class_peek_parent (klass);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsFakePersona_private_offset);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_CLASS (klass)->get_linkable_properties = 
contacts_fake_persona_real_get_linkable_properties;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       FOLKS_PERSONA_CLASS (klass)->get_writeable_properties = 
contacts_fake_persona_real_get_writeable_properties;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_fake_persona_get_property;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_fake_persona_set_property;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_fake_persona_finalize;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY] = g_param_spec_boxed 
("linkable-properties", "linkable-properties", "linkable-properties", G_TYPE_STRV, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY] = g_param_spec_boxed 
("writeable-properties", "writeable-properties", "writeable-properties", G_TYPE_STRV, G_PARAM_STATIC_STRINGS 
| G_PARAM_READABLE));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY] = g_param_spec_object ("avatar", 
"avatar", "avatar", g_loadable_icon_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE 
| G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY] = g_param_spec_string 
("full-name", "full-name", "full-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | 
G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY] = g_param_spec_string ("nickname", 
"nickname", "nickname", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | 
G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY] = g_param_spec_object 
("structured-name", "structured-name", "structured-name", FOLKS_TYPE_STRUCTURED_NAME, G_PARAM_STATIC_STRINGS 
| G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY] = g_param_spec_object 
("phone-numbers", "phone-numbers", "phone-numbers", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | 
G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_URLS_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_URLS_PROPERTY] = g_param_spec_object ("urls", "urls", 
"urls", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | 
G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY] = g_param_spec_object 
("postal-addresses", "postal-addresses", "postal-addresses", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_NOTES_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_NOTES_PROPERTY] = g_param_spec_object ("notes", 
"notes", "notes", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | 
G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY] = g_param_spec_boxed ("birthday", 
"birthday", "birthday", G_TYPE_DATE_TIME, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | 
G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY] = g_param_spec_string 
("calendar-event-id", "calendar-event-id", "calendar-event-id", NULL, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY] = g_param_spec_object 
("im-addresses", "im-addresses", "im-addresses", GEE_TYPE_MULTI_MAP, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY));
+#line 71 "../src/contacts-fake-persona-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY, 
contacts_fake_persona_properties[CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY] = g_param_spec_object 
("email-addresses", "email-addresses", "email-addresses", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_EXPLICIT_NOTIFY));
+#line 1891 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_avatar_details_interface_init (FolksAvatarDetailsIface * iface,
+                                                           gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_avatar_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_avatar = contacts_fake_persona_real_get_avatar;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_avatar = contacts_fake_persona_real_set_avatar;
+#line 1904 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_birthday_details_interface_init (FolksBirthdayDetailsIface * iface,
+                                                             gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_birthday_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_birthday = contacts_fake_persona_real_get_birthday;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_birthday = contacts_fake_persona_real_set_birthday;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_calendar_event_id = contacts_fake_persona_real_get_calendar_event_id;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_calendar_event_id = contacts_fake_persona_real_set_calendar_event_id;
+#line 1921 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_email_details_interface_init (FolksEmailDetailsIface * iface,
+                                                          gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_email_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_email_addresses = contacts_fake_persona_real_get_email_addresses;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_email_addresses = contacts_fake_persona_real_set_email_addresses;
+#line 1934 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_im_details_interface_init (FolksImDetailsIface * iface,
+                                                       gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_im_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_im_addresses = contacts_fake_persona_real_get_im_addresses;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_im_addresses = contacts_fake_persona_real_set_im_addresses;
+#line 1947 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_name_details_interface_init (FolksNameDetailsIface * iface,
+                                                         gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_name_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_full_name = contacts_fake_persona_real_get_full_name;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_full_name = contacts_fake_persona_real_set_full_name;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_nickname = contacts_fake_persona_real_get_nickname;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_nickname = contacts_fake_persona_real_set_nickname;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_structured_name = contacts_fake_persona_real_get_structured_name;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_structured_name = contacts_fake_persona_real_set_structured_name;
+#line 1968 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_note_details_interface_init (FolksNoteDetailsIface * iface,
+                                                         gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_note_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_notes = contacts_fake_persona_real_get_notes;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_notes = contacts_fake_persona_real_set_notes;
+#line 1981 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_phone_details_interface_init (FolksPhoneDetailsIface * iface,
+                                                          gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_phone_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_phone_numbers = contacts_fake_persona_real_get_phone_numbers;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_phone_numbers = contacts_fake_persona_real_set_phone_numbers;
+#line 1994 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_url_details_interface_init (FolksUrlDetailsIface * iface,
+                                                        gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_url_details_parent_iface = g_type_interface_peek_parent (iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_urls = contacts_fake_persona_real_get_urls;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_urls = contacts_fake_persona_real_set_urls;
+#line 2007 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_folks_postal_address_details_interface_init (FolksPostalAddressDetailsIface * iface,
+                                                                   gpointer iface_data)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       contacts_fake_persona_folks_postal_address_details_parent_iface = g_type_interface_peek_parent 
(iface);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->get_postal_addresses = contacts_fake_persona_real_get_postal_addresses;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       iface->set_postal_addresses = contacts_fake_persona_real_set_postal_addresses;
+#line 2020 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_instance_init (ContactsFakePersona * self,
+                                     gpointer klass)
+{
+#line 71 "../src/contacts-fake-persona-store.vala"
+       self->priv = contacts_fake_persona_get_instance_private (self);
+#line 84 "../src/contacts-fake-persona-store.vala"
+       self->priv->_real_persona = NULL;
+#line 2031 "contacts-fake-persona-store.c"
+}
+
+static void
+contacts_fake_persona_finalize (GObject * obj)
+{
+       ContactsFakePersona * self;
+#line 71 "../src/contacts-fake-persona-store.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_FAKE_PERSONA, ContactsFakePersona);
+#line 82 "../src/contacts-fake-persona-store.vala"
+       _g_hash_table_unref0 (self->priv->properties);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       G_OBJECT_CLASS (contacts_fake_persona_parent_class)->finalize (obj);
+#line 2044 "contacts-fake-persona-store.c"
+}
+
+/**
+ * A "dummy" Persona which is used when creating a new contact
+ * The FakePersona is used as a placeholder till we get the real persona from folks
+ * It needs to implement all Details we support so that we don't loise any information
+ */
+static GType
+contacts_fake_persona_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsFakePersonaClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_fake_persona_class_init, (GClassFinalizeFunc) NULL, 
NULL, sizeof (ContactsFakePersona), 0, (GInstanceInitFunc) contacts_fake_persona_instance_init, NULL };
+       static const GInterfaceInfo folks_avatar_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_avatar_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_birthday_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_birthday_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_email_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_email_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_im_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_im_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_name_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_name_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_note_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_note_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_phone_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_phone_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_url_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_url_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       static const GInterfaceInfo folks_postal_address_details_info = { (GInterfaceInitFunc) 
contacts_fake_persona_folks_postal_address_details_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
+       GType contacts_fake_persona_type_id;
+       contacts_fake_persona_type_id = g_type_register_static (FOLKS_TYPE_PERSONA, "ContactsFakePersona", 
&g_define_type_info, 0);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_AVATAR_DETAILS, 
&folks_avatar_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_BIRTHDAY_DETAILS, 
&folks_birthday_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_EMAIL_DETAILS, 
&folks_email_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_IM_DETAILS, 
&folks_im_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_NAME_DETAILS, 
&folks_name_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_NOTE_DETAILS, 
&folks_note_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_PHONE_DETAILS, 
&folks_phone_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_URL_DETAILS, 
&folks_url_details_info);
+       g_type_add_interface_static (contacts_fake_persona_type_id, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS, 
&folks_postal_address_details_info);
+       ContactsFakePersona_private_offset = g_type_add_instance_private (contacts_fake_persona_type_id, 
sizeof (ContactsFakePersonaPrivate));
+       return contacts_fake_persona_type_id;
+}
+
+GType
+contacts_fake_persona_get_type (void)
+{
+       static volatile gsize contacts_fake_persona_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_fake_persona_type_id__volatile)) {
+               GType contacts_fake_persona_type_id;
+               contacts_fake_persona_type_id = contacts_fake_persona_get_type_once ();
+               g_once_init_leave (&contacts_fake_persona_type_id__volatile, contacts_fake_persona_type_id);
+       }
+       return contacts_fake_persona_type_id__volatile;
+}
+
+static void
+_vala_contacts_fake_persona_get_property (GObject * object,
+                                          guint property_id,
+                                          GValue * value,
+                                          GParamSpec * pspec)
+{
+       ContactsFakePersona * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_PERSONA, ContactsFakePersona);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       switch (property_id) {
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_LINKABLE_PROPERTIES_PROPERTY:
+#line 2104 "contacts-fake-persona-store.c"
+               {
+                       int length;
+#line 71 "../src/contacts-fake-persona-store.vala"
+                       g_value_set_boxed (value, folks_persona_get_linkable_properties ((FolksPersona*) 
self, &length));
+#line 2109 "contacts-fake-persona-store.c"
+               }
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_WRITEABLE_PROPERTIES_PROPERTY:
+#line 2115 "contacts-fake-persona-store.c"
+               {
+                       int length;
+#line 71 "../src/contacts-fake-persona-store.vala"
+                       g_value_set_boxed (value, folks_persona_get_writeable_properties ((FolksPersona*) 
self, &length));
+#line 2120 "contacts-fake-persona-store.c"
+               }
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_avatar_details_get_avatar ((FolksAvatarDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_string (value, folks_name_details_get_full_name ((FolksNameDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_string (value, folks_name_details_get_nickname ((FolksNameDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_name_details_get_structured_name ((FolksNameDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_phone_details_get_phone_numbers ((FolksPhoneDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_URLS_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_url_details_get_urls ((FolksUrlDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_postal_address_details_get_postal_addresses 
((FolksPostalAddressDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_NOTES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_note_details_get_notes ((FolksNoteDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_boxed (value, folks_birthday_details_get_birthday ((FolksBirthdayDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_string (value, folks_birthday_details_get_calendar_event_id 
((FolksBirthdayDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_im_details_get_im_addresses ((FolksImDetails*) self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               g_value_set_object (value, folks_email_details_get_email_addresses ((FolksEmailDetails*) 
self));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 2196 "contacts-fake-persona-store.c"
+               default:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 2202 "contacts-fake-persona-store.c"
+       }
+}
+
+static void
+_vala_contacts_fake_persona_set_property (GObject * object,
+                                          guint property_id,
+                                          const GValue * value,
+                                          GParamSpec * pspec)
+{
+       ContactsFakePersona * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_FAKE_PERSONA, ContactsFakePersona);
+#line 71 "../src/contacts-fake-persona-store.vala"
+       switch (property_id) {
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_AVATAR_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_avatar_details_set_avatar ((FolksAvatarDetails*) self, g_value_get_object (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_FULL_NAME_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_name_details_set_full_name ((FolksNameDetails*) self, g_value_get_string (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_NICKNAME_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_name_details_set_nickname ((FolksNameDetails*) self, g_value_get_string (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_STRUCTURED_NAME_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_name_details_set_structured_name ((FolksNameDetails*) self, g_value_get_object (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_PHONE_NUMBERS_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_phone_details_set_phone_numbers ((FolksPhoneDetails*) self, g_value_get_object (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_URLS_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_url_details_set_urls ((FolksUrlDetails*) self, g_value_get_object (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_POSTAL_ADDRESSES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_postal_address_details_set_postal_addresses ((FolksPostalAddressDetails*) self, 
g_value_get_object (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_NOTES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_note_details_set_notes ((FolksNoteDetails*) self, g_value_get_object (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_BIRTHDAY_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_birthday_details_set_birthday ((FolksBirthdayDetails*) self, g_value_get_boxed (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_CALENDAR_EVENT_ID_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_birthday_details_set_calendar_event_id ((FolksBirthdayDetails*) self, 
g_value_get_string (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_IM_ADDRESSES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_im_details_set_im_addresses ((FolksImDetails*) self, g_value_get_object (value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 71 "../src/contacts-fake-persona-store.vala"
+               case CONTACTS_FAKE_PERSONA_EMAIL_ADDRESSES_PROPERTY:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               folks_email_details_set_email_addresses ((FolksEmailDetails*) self, g_value_get_object 
(value));
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 2288 "contacts-fake-persona-store.c"
+               default:
+#line 71 "../src/contacts-fake-persona-store.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 71 "../src/contacts-fake-persona-store.vala"
+               break;
+#line 2294 "contacts-fake-persona-store.c"
+       }
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-im-service.c 
b/_build/src/25a6634@@contacts@sta/contacts-im-service.c
new file mode 100644
index 0000000..f430182
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-im-service.c
@@ -0,0 +1,147 @@
+/* contacts-im-service.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-im-service.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <config.h>
+
+#define CONTACTS_TYPE_IM_SERVICE (contacts_im_service_get_type ())
+typedef struct _ContactsImService ContactsImService;
+
+struct _ContactsImService {
+       const gchar* service_name;
+       const gchar* display_name;
+};
+
+GType contacts_im_service_get_type (void) G_GNUC_CONST;
+ContactsImService* contacts_im_service_dup (const ContactsImService* self);
+void contacts_im_service_free (ContactsImService* self);
+gchar* contacts_im_service_get_display_name (const gchar* service_name);
+
+static const ContactsImService CONTACTS_IM_SERVICE_data[25] = {{"aim", N_ ("AOL Instant Messenger")}, 
{"facebook", N_ ("Facebook")}, {"gadugadu", N_ ("Gadu-Gadu")}, {"google-talk", N_ ("Google Talk")}, 
{"groupwise", N_ ("Novell Groupwise")}, {"icq", N_ ("ICQ")}, {"irc", N_ ("IRC")}, {"jabber", N_ ("Jabber")}, 
{"lj-talk", N_ ("Livejournal")}, {"local-xmpp", N_ ("Local network")}, {"msn", N_ ("Windows Live 
Messenger")}, {"myspace", N_ ("MySpace")}, {"mxit", N_ ("MXit")}, {"napster", N_ ("Napster")}, {"ovi-chat", 
N_ ("Ovi Chat")}, {"qq", N_ ("Tencent QQ")}, {"sametime", N_ ("IBM Lotus Sametime")}, {"silc", N_ ("SILC")}, 
{"sip", N_ ("sip")}, {"skype", N_ ("Skype")}, {"tel", N_ ("Telephony")}, {"trepia", N_ ("Trepia")}, {"yahoo", 
N_ ("Yahoo! Messenger")}, {"yahoojp", N_ ("Yahoo! Messenger")}, {"zephyr", N_ ("Zephyr")}};
+
+/**
+   * Returns the display name for the given IM service in a nicely presented way.
+   */
+gchar*
+contacts_im_service_get_display_name (const gchar* service_name)
+{
+       gchar* _tmp5_;
+       gchar* result = NULL;
+#line 62 "../src/contacts-im-service.vala"
+       g_return_val_if_fail (service_name != NULL, NULL);
+#line 54 "contacts-im-service.c"
+       {
+               ContactsImService* d_collection = NULL;
+               gint d_collection_length1 = 0;
+               gint _d_collection_size_ = 0;
+               gint d_it = 0;
+#line 63 "../src/contacts-im-service.vala"
+               d_collection = CONTACTS_IM_SERVICE_data;
+#line 63 "../src/contacts-im-service.vala"
+               d_collection_length1 = G_N_ELEMENTS (CONTACTS_IM_SERVICE_data);
+#line 63 "../src/contacts-im-service.vala"
+               for (d_it = 0; d_it < d_collection_length1; d_it = d_it + 1) {
+#line 66 "contacts-im-service.c"
+                       ContactsImService d = {0};
+#line 63 "../src/contacts-im-service.vala"
+                       d = d_collection[d_it];
+#line 70 "contacts-im-service.c"
+                       {
+                               ContactsImService _tmp0_;
+                               const gchar* _tmp1_;
+#line 64 "../src/contacts-im-service.vala"
+                               _tmp0_ = d;
+#line 64 "../src/contacts-im-service.vala"
+                               _tmp1_ = _tmp0_.service_name;
+#line 64 "../src/contacts-im-service.vala"
+                               if (g_strcmp0 (_tmp1_, service_name) == 0) {
+#line 80 "contacts-im-service.c"
+                                       ContactsImService _tmp2_;
+                                       const gchar* _tmp3_;
+                                       gchar* _tmp4_;
+#line 65 "../src/contacts-im-service.vala"
+                                       _tmp2_ = d;
+#line 65 "../src/contacts-im-service.vala"
+                                       _tmp3_ = _tmp2_.display_name;
+#line 65 "../src/contacts-im-service.vala"
+                                       _tmp4_ = g_strdup (g_dgettext (GETTEXT_PACKAGE, _tmp3_));
+#line 65 "../src/contacts-im-service.vala"
+                                       result = _tmp4_;
+#line 65 "../src/contacts-im-service.vala"
+                                       return result;
+#line 94 "contacts-im-service.c"
+                               }
+                       }
+               }
+       }
+#line 67 "../src/contacts-im-service.vala"
+       _tmp5_ = g_strdup (service_name);
+#line 67 "../src/contacts-im-service.vala"
+       result = _tmp5_;
+#line 67 "../src/contacts-im-service.vala"
+       return result;
+#line 105 "contacts-im-service.c"
+}
+
+ContactsImService*
+contacts_im_service_dup (const ContactsImService* self)
+{
+       ContactsImService* dup;
+#line 26 "../src/contacts-im-service.vala"
+       dup = g_new0 (ContactsImService, 1);
+#line 26 "../src/contacts-im-service.vala"
+       memcpy (dup, self, sizeof (ContactsImService));
+#line 26 "../src/contacts-im-service.vala"
+       return dup;
+#line 118 "contacts-im-service.c"
+}
+
+void
+contacts_im_service_free (ContactsImService* self)
+{
+#line 26 "../src/contacts-im-service.vala"
+       g_free (self);
+#line 126 "contacts-im-service.c"
+}
+
+static GType
+contacts_im_service_get_type_once (void)
+{
+       GType contacts_im_service_type_id;
+       contacts_im_service_type_id = g_boxed_type_register_static ("ContactsImService", (GBoxedCopyFunc) 
contacts_im_service_dup, (GBoxedFreeFunc) contacts_im_service_free);
+       return contacts_im_service_type_id;
+}
+
+GType
+contacts_im_service_get_type (void)
+{
+       static volatile gsize contacts_im_service_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_im_service_type_id__volatile)) {
+               GType contacts_im_service_type_id;
+               contacts_im_service_type_id = contacts_im_service_get_type_once ();
+               g_once_init_leave (&contacts_im_service_type_id__volatile, contacts_im_service_type_id);
+       }
+       return contacts_im_service_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-store.c 
b/_build/src/25a6634@@contacts@sta/contacts-store.c
new file mode 100644
index 0000000..c792f96
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-store.c
@@ -0,0 +1,2542 @@
+/* contacts-store.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-store.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <gee.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <folks/folks.h>
+#include <glib/gstdio.h>
+#include <gio/gio.h>
+
+#define CONTACTS_TYPE_STORE (contacts_store_get_type ())
+#define CONTACTS_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_STORE, ContactsStore))
+#define CONTACTS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_STORE, 
ContactsStoreClass))
+#define CONTACTS_IS_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_STORE))
+#define CONTACTS_IS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_STORE))
+#define CONTACTS_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_STORE, 
ContactsStoreClass))
+
+typedef struct _ContactsStore ContactsStore;
+typedef struct _ContactsStoreClass ContactsStoreClass;
+typedef struct _ContactsStorePrivate ContactsStorePrivate;
+enum  {
+       CONTACTS_STORE_0_PROPERTY,
+       CONTACTS_STORE_AGGREGATOR_PROPERTY,
+       CONTACTS_STORE_BACKEND_STORE_PROPERTY,
+       CONTACTS_STORE_IS_QUIESCENT_PROPERTY,
+       CONTACTS_STORE_IS_PREPARED_PROPERTY,
+       CONTACTS_STORE_NUM_PROPERTIES
+};
+static GParamSpec* contacts_store_properties[CONTACTS_STORE_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
+typedef struct _Block2Data Block2Data;
+typedef struct _ContactsStoreFindContactData ContactsStoreFindContactData;
+enum  {
+       CONTACTS_STORE_ADDED_SIGNAL,
+       CONTACTS_STORE_REMOVED_SIGNAL,
+       CONTACTS_STORE_QUIESCENT_SIGNAL,
+       CONTACTS_STORE_PREPARED_SIGNAL,
+       CONTACTS_STORE_NUM_SIGNALS
+};
+static guint contacts_store_signals[CONTACTS_STORE_NUM_SIGNALS] = {0};
+
+struct _ContactsStore {
+       GObject parent_instance;
+       ContactsStorePrivate * priv;
+       GeeHashMultiMap* dont_suggest_link;
+};
+
+struct _ContactsStoreClass {
+       GObjectClass parent_class;
+};
+
+struct _ContactsStorePrivate {
+       FolksIndividualAggregator* _aggregator;
+};
+
+struct _Block2Data {
+       int _ref_count_;
+       ContactsStore* self;
+       GSourceFunc callback;
+       gpointer callback_target;
+       GDestroyNotify callback_target_destroy_notify;
+};
+
+struct _ContactsStoreFindContactData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsStore* self;
+       FolksQuery* query;
+       FolksIndividual* result;
+       gboolean _tmp0_;
+       gboolean _tmp1_;
+       Block2Data* _data2_;
+       gulong signal_id;
+       gulong _tmp2_;
+       FolksIndividual* matched;
+       guint strength;
+       GeeIterator* _i_it;
+       FolksIndividualAggregator* _tmp3_;
+       GeeMap* _tmp4_;
+       GeeMap* _tmp5_;
+       GeeCollection* _tmp6_;
+       GeeCollection* _tmp7_;
+       GeeCollection* _tmp8_;
+       GeeIterator* _tmp9_;
+       GeeIterator* _tmp10_;
+       GeeIterator* _tmp11_;
+       FolksIndividual* i;
+       GeeIterator* _tmp12_;
+       gpointer _tmp13_;
+       guint this_strength;
+       FolksIndividual* _tmp14_;
+       FolksIndividual* _tmp15_;
+       FolksIndividual* _tmp16_;
+};
+
+static gint ContactsStore_private_offset;
+static gpointer contacts_store_parent_class = NULL;
+
+GType contacts_store_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsStore, g_object_unref)
+static gboolean contacts_store_individual_can_replace_at_split (ContactsStore* self,
+                                                         FolksIndividual* new_individual);
+static gboolean contacts_store_individual_should_replace_at_join (ContactsStore* self,
+                                                           FolksIndividual* old_individual);
+static void contacts_store_read_dont_suggest_db (ContactsStore* self);
+static void contacts_store_write_dont_suggest_db (ContactsStore* self);
+gboolean contacts_store_may_suggest_link (ContactsStore* self,
+                                          FolksIndividual* a,
+                                          FolksIndividual* b);
+void contacts_store_add_no_suggest_link (ContactsStore* self,
+                                         FolksIndividual* a,
+                                         FolksIndividual* b);
+GeeList* contacts_utils_get_personas_for_display (FolksIndividual* individual);
+static void contacts_store_on_individuals_changed_detailed (ContactsStore* self,
+                                                     GeeMultiMap* changes);
+GeeCollection* contacts_store_get_contacts (ContactsStore* self);
+FolksIndividualAggregator* contacts_store_get_aggregator (ContactsStore* self);
+static void contacts_store_find_contact_data_free (gpointer _data);
+void contacts_store_find_contact (ContactsStore* self,
+                                  FolksQuery* query,
+                                  GAsyncReadyCallback _callback_,
+                                  gpointer _user_data_);
+FolksIndividual* contacts_store_find_contact_finish (ContactsStore* self,
+                                                     GAsyncResult* _res_);
+static gboolean contacts_store_find_contact_co (ContactsStoreFindContactData* _data_);
+gboolean contacts_store_get_is_quiescent (ContactsStore* self);
+static Block2Data* block2_data_ref (Block2Data* _data2_);
+static void block2_data_unref (void * _userdata_);
+static gboolean _contacts_store_find_contact_co_gsource_func (gpointer self);
+static void ___lambda7_ (Block2Data* _data2_);
+static void ____lambda7__contacts_store_quiescent (ContactsStore* _sender,
+                                            gpointer self);
+ContactsStore* contacts_store_new (void);
+ContactsStore* contacts_store_construct (GType object_type);
+static void contacts_store_set_aggregator (ContactsStore* self,
+                                    FolksIndividualAggregator* value);
+FolksBackendStore* contacts_store_get_backend_store (ContactsStore* self);
+gboolean contacts_store_get_is_prepared (ContactsStore* self);
+static GObject * contacts_store_constructor (GType type,
+                                      guint n_construct_properties,
+                                      GObjectConstructParam * construct_properties);
+static void _contacts_store___lambda8_ (ContactsStore* self,
+                                 GObject* obj,
+                                 GParamSpec* pspec);
+static gboolean __lambda9_ (ContactsStore* self);
+static gboolean ___lambda9__gsource_func (gpointer self);
+static void __contacts_store___lambda8__g_object_notify (GObject* _sender,
+                                                  GParamSpec* pspec,
+                                                  gpointer self);
+static void _contacts_store___lambda10_ (ContactsStore* self,
+                                  GObject* obj,
+                                  GParamSpec* pspec);
+static gboolean __lambda11_ (ContactsStore* self);
+static gboolean ___lambda11__gsource_func (gpointer self);
+static void __contacts_store___lambda10__g_object_notify (GObject* _sender,
+                                                   GParamSpec* pspec,
+                                                   gpointer self);
+static void 
_contacts_store_on_individuals_changed_detailed_folks_individual_aggregator_individuals_changed_detailed 
(FolksIndividualAggregator* _sender,
+                                                                                                             
  GeeMultiMap* changes,
+                                                                                                             
  gpointer self);
+static void contacts_store_finalize (GObject * obj);
+static GType contacts_store_get_type_once (void);
+static void _vala_contacts_store_get_property (GObject * object,
+                                        guint property_id,
+                                        GValue * value,
+                                        GParamSpec * pspec);
+static void _vala_contacts_store_set_property (GObject * object,
+                                        guint property_id,
+                                        const GValue * value,
+                                        GParamSpec * pspec);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+
+static inline gpointer
+contacts_store_get_instance_private (ContactsStore* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsStore_private_offset);
+}
+
+static gboolean
+contacts_store_individual_can_replace_at_split (ContactsStore* self,
+                                                FolksIndividual* new_individual)
+{
+       gboolean result = FALSE;
+#line 45 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 45 "../src/contacts-store.vala"
+       g_return_val_if_fail (new_individual != NULL, FALSE);
+#line 219 "contacts-store.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 46 "../src/contacts-store.vala"
+               _tmp0_ = folks_individual_get_personas (new_individual);
+#line 46 "../src/contacts-store.vala"
+               _tmp1_ = _tmp0_;
+#line 46 "../src/contacts-store.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 46 "../src/contacts-store.vala"
+               _p_it = _tmp2_;
+#line 46 "../src/contacts-store.vala"
+               while (TRUE) {
+#line 235 "contacts-store.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+                       FolksPersona* _tmp6_;
+                       gconstpointer _tmp7_;
+#line 46 "../src/contacts-store.vala"
+                       _tmp3_ = _p_it;
+#line 46 "../src/contacts-store.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 46 "../src/contacts-store.vala"
+                               break;
+#line 248 "contacts-store.c"
+                       }
+#line 46 "../src/contacts-store.vala"
+                       _tmp4_ = _p_it;
+#line 46 "../src/contacts-store.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 46 "../src/contacts-store.vala"
+                       p = (FolksPersona*) _tmp5_;
+#line 47 "../src/contacts-store.vala"
+                       _tmp6_ = p;
+#line 47 "../src/contacts-store.vala"
+                       _tmp7_ = g_object_get_data ((GObject*) _tmp6_, "contacts-new-contact");
+#line 47 "../src/contacts-store.vala"
+                       if ((gboolean) ((gintptr) _tmp7_)) {
+#line 48 "../src/contacts-store.vala"
+                               result = FALSE;
+#line 48 "../src/contacts-store.vala"
+                               _g_object_unref0 (p);
+#line 48 "../src/contacts-store.vala"
+                               _g_object_unref0 (_p_it);
+#line 48 "../src/contacts-store.vala"
+                               return result;
+#line 270 "contacts-store.c"
+                       }
+#line 46 "../src/contacts-store.vala"
+                       _g_object_unref0 (p);
+#line 274 "contacts-store.c"
+               }
+#line 46 "../src/contacts-store.vala"
+               _g_object_unref0 (_p_it);
+#line 278 "contacts-store.c"
+       }
+#line 50 "../src/contacts-store.vala"
+       result = TRUE;
+#line 50 "../src/contacts-store.vala"
+       return result;
+#line 284 "contacts-store.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 54 "../src/contacts-store.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 292 "contacts-store.c"
+}
+
+static gboolean
+contacts_store_individual_should_replace_at_join (ContactsStore* self,
+                                                  FolksIndividual* old_individual)
+{
+       FolksIndividual* c = NULL;
+       FolksIndividual* _tmp0_;
+       gconstpointer _tmp1_;
+       gboolean result = FALSE;
+#line 53 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 53 "../src/contacts-store.vala"
+       g_return_val_if_fail (old_individual != NULL, FALSE);
+#line 54 "../src/contacts-store.vala"
+       _tmp0_ = _g_object_ref0 (old_individual);
+#line 54 "../src/contacts-store.vala"
+       c = _tmp0_;
+#line 55 "../src/contacts-store.vala"
+       _tmp1_ = g_object_get_data ((GObject*) c, "contacts-master-at-join");
+#line 55 "../src/contacts-store.vala"
+       result = (gboolean) ((gintptr) _tmp1_);
+#line 55 "../src/contacts-store.vala"
+       _g_object_unref0 (c);
+#line 55 "../src/contacts-store.vala"
+       return result;
+#line 319 "contacts-store.c"
+}
+
+static void
+contacts_store_read_dont_suggest_db (ContactsStore* self)
+{
+       GeeHashMultiMap* _tmp0_;
+       GError* _inner_error0_ = NULL;
+#line 58 "../src/contacts-store.vala"
+       g_return_if_fail (self != NULL);
+#line 59 "../src/contacts-store.vala"
+       _tmp0_ = self->dont_suggest_link;
+#line 59 "../src/contacts-store.vala"
+       gee_multi_map_clear ((GeeMultiMap*) _tmp0_);
+#line 333 "contacts-store.c"
+       {
+               gchar* path = NULL;
+               const gchar* _tmp1_;
+               gchar* _tmp2_;
+               gchar* contents = NULL;
+               gboolean _tmp3_ = FALSE;
+               gchar* _tmp4_ = NULL;
+               gboolean _tmp5_;
+#line 61 "../src/contacts-store.vala"
+               _tmp1_ = g_get_user_config_dir ();
+#line 61 "../src/contacts-store.vala"
+               _tmp2_ = g_build_filename (_tmp1_, "gnome-contacts", "dont_suggest.db", NULL);
+#line 61 "../src/contacts-store.vala"
+               path = _tmp2_;
+#line 63 "../src/contacts-store.vala"
+               _tmp5_ = g_file_get_contents (path, &_tmp4_, NULL, &_inner_error0_);
+#line 63 "../src/contacts-store.vala"
+               _g_free0 (contents);
+#line 63 "../src/contacts-store.vala"
+               contents = _tmp4_;
+#line 63 "../src/contacts-store.vala"
+               _tmp3_ = _tmp5_;
+#line 63 "../src/contacts-store.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 63 "../src/contacts-store.vala"
+                       _g_free0 (contents);
+#line 63 "../src/contacts-store.vala"
+                       _g_free0 (path);
+#line 362 "contacts-store.c"
+                       goto __catch5_g_error;
+               }
+#line 63 "../src/contacts-store.vala"
+               if (_tmp3_) {
+#line 367 "contacts-store.c"
+                       gchar** rows = NULL;
+                       gchar** _tmp6_;
+                       gchar** _tmp7_;
+                       gint rows_length1;
+                       gint _rows_size_;
+                       gchar** _tmp8_;
+                       gint _tmp8__length1;
+#line 64 "../src/contacts-store.vala"
+                       _tmp7_ = _tmp6_ = g_strsplit (contents, "\n", 0);
+#line 64 "../src/contacts-store.vala"
+                       rows = _tmp7_;
+#line 64 "../src/contacts-store.vala"
+                       rows_length1 = _vala_array_length (_tmp6_);
+#line 64 "../src/contacts-store.vala"
+                       _rows_size_ = rows_length1;
+#line 65 "../src/contacts-store.vala"
+                       _tmp8_ = rows;
+#line 65 "../src/contacts-store.vala"
+                       _tmp8__length1 = rows_length1;
+#line 387 "contacts-store.c"
+                       {
+                               gchar** r_collection = NULL;
+                               gint r_collection_length1 = 0;
+                               gint _r_collection_size_ = 0;
+                               gint r_it = 0;
+#line 65 "../src/contacts-store.vala"
+                               r_collection = _tmp8_;
+#line 65 "../src/contacts-store.vala"
+                               r_collection_length1 = _tmp8__length1;
+#line 65 "../src/contacts-store.vala"
+                               for (r_it = 0; r_it < r_collection_length1; r_it = r_it + 1) {
+#line 399 "contacts-store.c"
+                                       gchar* _tmp9_;
+                                       gchar* r = NULL;
+#line 65 "../src/contacts-store.vala"
+                                       _tmp9_ = g_strdup (r_collection[r_it]);
+#line 65 "../src/contacts-store.vala"
+                                       r = _tmp9_;
+#line 406 "contacts-store.c"
+                                       {
+                                               gchar** ids = NULL;
+                                               const gchar* _tmp10_;
+                                               gchar** _tmp11_;
+                                               gchar** _tmp12_;
+                                               gint ids_length1;
+                                               gint _ids_size_;
+                                               gchar** _tmp13_;
+                                               gint _tmp13__length1;
+#line 66 "../src/contacts-store.vala"
+                                               _tmp10_ = r;
+#line 66 "../src/contacts-store.vala"
+                                               _tmp12_ = _tmp11_ = g_strsplit (_tmp10_, " ", 0);
+#line 66 "../src/contacts-store.vala"
+                                               ids = _tmp12_;
+#line 66 "../src/contacts-store.vala"
+                                               ids_length1 = _vala_array_length (_tmp11_);
+#line 66 "../src/contacts-store.vala"
+                                               _ids_size_ = ids_length1;
+#line 67 "../src/contacts-store.vala"
+                                               _tmp13_ = ids;
+#line 67 "../src/contacts-store.vala"
+                                               _tmp13__length1 = ids_length1;
+#line 67 "../src/contacts-store.vala"
+                                               if (_tmp13__length1 == 2) {
+#line 432 "contacts-store.c"
+                                                       GeeHashMultiMap* _tmp14_;
+                                                       gchar** _tmp15_;
+                                                       gint _tmp15__length1;
+                                                       const gchar* _tmp16_;
+                                                       gchar** _tmp17_;
+                                                       gint _tmp17__length1;
+                                                       const gchar* _tmp18_;
+#line 68 "../src/contacts-store.vala"
+                                                       _tmp14_ = self->dont_suggest_link;
+#line 68 "../src/contacts-store.vala"
+                                                       _tmp15_ = ids;
+#line 68 "../src/contacts-store.vala"
+                                                       _tmp15__length1 = ids_length1;
+#line 68 "../src/contacts-store.vala"
+                                                       _tmp16_ = _tmp15_[0];
+#line 68 "../src/contacts-store.vala"
+                                                       _tmp17_ = ids;
+#line 68 "../src/contacts-store.vala"
+                                                       _tmp17__length1 = ids_length1;
+#line 68 "../src/contacts-store.vala"
+                                                       _tmp18_ = _tmp17_[1];
+#line 68 "../src/contacts-store.vala"
+                                                       gee_multi_map_set ((GeeMultiMap*) _tmp14_, _tmp16_, 
_tmp18_);
+#line 456 "contacts-store.c"
+                                               }
+#line 65 "../src/contacts-store.vala"
+                                               ids = (_vala_array_free (ids, ids_length1, (GDestroyNotify) 
g_free), NULL);
+#line 65 "../src/contacts-store.vala"
+                                               _g_free0 (r);
+#line 462 "contacts-store.c"
+                                       }
+                               }
+                       }
+#line 63 "../src/contacts-store.vala"
+                       rows = (_vala_array_free (rows, rows_length1, (GDestroyNotify) g_free), NULL);
+#line 468 "contacts-store.c"
+               }
+#line 60 "../src/contacts-store.vala"
+               _g_free0 (contents);
+#line 60 "../src/contacts-store.vala"
+               _g_free0 (path);
+#line 474 "contacts-store.c"
+       }
+       goto __finally5;
+       __catch5_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp19_;
+#line 60 "../src/contacts-store.vala"
+               e = _inner_error0_;
+#line 60 "../src/contacts-store.vala"
+               _inner_error0_ = NULL;
+#line 73 "../src/contacts-store.vala"
+               _tmp19_ = e;
+#line 73 "../src/contacts-store.vala"
+               if (!g_error_matches (_tmp19_, G_FILE_ERROR, G_FILE_ERROR_NOENT)) {
+#line 489 "contacts-store.c"
+                       GError* _tmp20_;
+                       const gchar* _tmp21_;
+#line 74 "../src/contacts-store.vala"
+                       _tmp20_ = e;
+#line 74 "../src/contacts-store.vala"
+                       _tmp21_ = _tmp20_->message;
+#line 74 "../src/contacts-store.vala"
+                       g_warning ("contacts-store.vala:74: error loading no suggestion db: %s\n", _tmp21_);
+#line 498 "contacts-store.c"
+               }
+#line 60 "../src/contacts-store.vala"
+               _g_error_free0 (e);
+#line 502 "contacts-store.c"
+       }
+       __finally5:
+#line 60 "../src/contacts-store.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 60 "../src/contacts-store.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 60 "../src/contacts-store.vala"
+               g_clear_error (&_inner_error0_);
+#line 60 "../src/contacts-store.vala"
+               return;
+#line 513 "contacts-store.c"
+       }
+}
+
+static void
+contacts_store_write_dont_suggest_db (ContactsStore* self)
+{
+       GError* _inner_error0_ = NULL;
+#line 78 "../src/contacts-store.vala"
+       g_return_if_fail (self != NULL);
+#line 523 "contacts-store.c"
+       {
+               gchar* dir = NULL;
+               const gchar* _tmp0_;
+               gchar* _tmp1_;
+               const gchar* _tmp2_;
+               gchar* path = NULL;
+               const gchar* _tmp3_;
+               gchar* _tmp4_;
+               GString* s = NULL;
+               GString* _tmp5_;
+               const gchar* _tmp26_;
+               GString* _tmp27_;
+               const gchar* _tmp28_;
+               GString* _tmp29_;
+#line 80 "../src/contacts-store.vala"
+               _tmp0_ = g_get_user_config_dir ();
+#line 80 "../src/contacts-store.vala"
+               _tmp1_ = g_build_filename (_tmp0_, "gnome-contacts", NULL);
+#line 80 "../src/contacts-store.vala"
+               dir = _tmp1_;
+#line 81 "../src/contacts-store.vala"
+               _tmp2_ = dir;
+#line 81 "../src/contacts-store.vala"
+               g_mkdir_with_parents (_tmp2_, 0700);
+#line 82 "../src/contacts-store.vala"
+               _tmp3_ = dir;
+#line 82 "../src/contacts-store.vala"
+               _tmp4_ = g_build_filename (_tmp3_, "dont_suggest.db", NULL);
+#line 82 "../src/contacts-store.vala"
+               path = _tmp4_;
+#line 84 "../src/contacts-store.vala"
+               _tmp5_ = g_string_new ("");
+#line 84 "../src/contacts-store.vala"
+               s = _tmp5_;
+#line 558 "contacts-store.c"
+               {
+                       GeeIterator* _key_it = NULL;
+                       GeeHashMultiMap* _tmp6_;
+                       GeeSet* _tmp7_;
+                       GeeSet* _tmp8_;
+                       GeeIterator* _tmp9_;
+                       GeeIterator* _tmp10_;
+#line 85 "../src/contacts-store.vala"
+                       _tmp6_ = self->dont_suggest_link;
+#line 85 "../src/contacts-store.vala"
+                       _tmp7_ = gee_multi_map_get_keys ((GeeMultiMap*) _tmp6_);
+#line 85 "../src/contacts-store.vala"
+                       _tmp8_ = _tmp7_;
+#line 85 "../src/contacts-store.vala"
+                       _tmp9_ = gee_iterable_iterator ((GeeIterable*) _tmp8_);
+#line 85 "../src/contacts-store.vala"
+                       _tmp10_ = _tmp9_;
+#line 85 "../src/contacts-store.vala"
+                       _g_object_unref0 (_tmp8_);
+#line 85 "../src/contacts-store.vala"
+                       _key_it = _tmp10_;
+#line 85 "../src/contacts-store.vala"
+                       while (TRUE) {
+#line 582 "contacts-store.c"
+                               GeeIterator* _tmp11_;
+                               gchar* key = NULL;
+                               GeeIterator* _tmp12_;
+                               gpointer _tmp13_;
+#line 85 "../src/contacts-store.vala"
+                               _tmp11_ = _key_it;
+#line 85 "../src/contacts-store.vala"
+                               if (!gee_iterator_next (_tmp11_)) {
+#line 85 "../src/contacts-store.vala"
+                                       break;
+#line 593 "contacts-store.c"
+                               }
+#line 85 "../src/contacts-store.vala"
+                               _tmp12_ = _key_it;
+#line 85 "../src/contacts-store.vala"
+                               _tmp13_ = gee_iterator_get (_tmp12_);
+#line 85 "../src/contacts-store.vala"
+                               key = (gchar*) _tmp13_;
+#line 601 "contacts-store.c"
+                               {
+                                       GeeIterator* _value_it = NULL;
+                                       GeeHashMultiMap* _tmp14_;
+                                       const gchar* _tmp15_;
+                                       GeeCollection* _tmp16_;
+                                       GeeCollection* _tmp17_;
+                                       GeeIterator* _tmp18_;
+                                       GeeIterator* _tmp19_;
+#line 86 "../src/contacts-store.vala"
+                                       _tmp14_ = self->dont_suggest_link;
+#line 86 "../src/contacts-store.vala"
+                                       _tmp15_ = key;
+#line 86 "../src/contacts-store.vala"
+                                       _tmp16_ = gee_multi_map_get ((GeeMultiMap*) _tmp14_, _tmp15_);
+#line 86 "../src/contacts-store.vala"
+                                       _tmp17_ = _tmp16_;
+#line 86 "../src/contacts-store.vala"
+                                       _tmp18_ = gee_iterable_iterator ((GeeIterable*) _tmp17_);
+#line 86 "../src/contacts-store.vala"
+                                       _tmp19_ = _tmp18_;
+#line 86 "../src/contacts-store.vala"
+                                       _g_object_unref0 (_tmp17_);
+#line 86 "../src/contacts-store.vala"
+                                       _value_it = _tmp19_;
+#line 86 "../src/contacts-store.vala"
+                                       while (TRUE) {
+#line 628 "contacts-store.c"
+                                               GeeIterator* _tmp20_;
+                                               gchar* value = NULL;
+                                               GeeIterator* _tmp21_;
+                                               gpointer _tmp22_;
+                                               GString* _tmp23_;
+                                               const gchar* _tmp24_;
+                                               const gchar* _tmp25_;
+#line 86 "../src/contacts-store.vala"
+                                               _tmp20_ = _value_it;
+#line 86 "../src/contacts-store.vala"
+                                               if (!gee_iterator_next (_tmp20_)) {
+#line 86 "../src/contacts-store.vala"
+                                                       break;
+#line 642 "contacts-store.c"
+                                               }
+#line 86 "../src/contacts-store.vala"
+                                               _tmp21_ = _value_it;
+#line 86 "../src/contacts-store.vala"
+                                               _tmp22_ = gee_iterator_get (_tmp21_);
+#line 86 "../src/contacts-store.vala"
+                                               value = (gchar*) _tmp22_;
+#line 87 "../src/contacts-store.vala"
+                                               _tmp23_ = s;
+#line 87 "../src/contacts-store.vala"
+                                               _tmp24_ = key;
+#line 87 "../src/contacts-store.vala"
+                                               _tmp25_ = value;
+#line 87 "../src/contacts-store.vala"
+                                               g_string_append_printf (_tmp23_, "%s %s\n", _tmp24_, _tmp25_);
+#line 86 "../src/contacts-store.vala"
+                                               _g_free0 (value);
+#line 660 "contacts-store.c"
+                                       }
+#line 86 "../src/contacts-store.vala"
+                                       _g_object_unref0 (_value_it);
+#line 664 "contacts-store.c"
+                               }
+#line 85 "../src/contacts-store.vala"
+                               _g_free0 (key);
+#line 668 "contacts-store.c"
+                       }
+#line 85 "../src/contacts-store.vala"
+                       _g_object_unref0 (_key_it);
+#line 672 "contacts-store.c"
+               }
+#line 90 "../src/contacts-store.vala"
+               _tmp26_ = path;
+#line 90 "../src/contacts-store.vala"
+               _tmp27_ = s;
+#line 90 "../src/contacts-store.vala"
+               _tmp28_ = _tmp27_->str;
+#line 90 "../src/contacts-store.vala"
+               _tmp29_ = s;
+#line 90 "../src/contacts-store.vala"
+               g_file_set_contents (_tmp26_, _tmp28_, _tmp29_->len, &_inner_error0_);
+#line 90 "../src/contacts-store.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 90 "../src/contacts-store.vala"
+                       _g_string_free0 (s);
+#line 90 "../src/contacts-store.vala"
+                       _g_free0 (path);
+#line 90 "../src/contacts-store.vala"
+                       _g_free0 (dir);
+#line 692 "contacts-store.c"
+                       goto __catch6_g_error;
+               }
+#line 79 "../src/contacts-store.vala"
+               _g_string_free0 (s);
+#line 79 "../src/contacts-store.vala"
+               _g_free0 (path);
+#line 79 "../src/contacts-store.vala"
+               _g_free0 (dir);
+#line 701 "contacts-store.c"
+       }
+       goto __finally6;
+       __catch6_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp30_;
+               const gchar* _tmp31_;
+#line 79 "../src/contacts-store.vala"
+               e = _inner_error0_;
+#line 79 "../src/contacts-store.vala"
+               _inner_error0_ = NULL;
+#line 92 "../src/contacts-store.vala"
+               _tmp30_ = e;
+#line 92 "../src/contacts-store.vala"
+               _tmp31_ = _tmp30_->message;
+#line 92 "../src/contacts-store.vala"
+               g_warning ("contacts-store.vala:92: error writing no suggestion db: %s\n", _tmp31_);
+#line 79 "../src/contacts-store.vala"
+               _g_error_free0 (e);
+#line 721 "contacts-store.c"
+       }
+       __finally6:
+#line 79 "../src/contacts-store.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 79 "../src/contacts-store.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 79 "../src/contacts-store.vala"
+               g_clear_error (&_inner_error0_);
+#line 79 "../src/contacts-store.vala"
+               return;
+#line 732 "contacts-store.c"
+       }
+}
+
+gboolean
+contacts_store_may_suggest_link (ContactsStore* self,
+                                 FolksIndividual* a,
+                                 FolksIndividual* b)
+{
+       gboolean result = FALSE;
+#line 96 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 96 "../src/contacts-store.vala"
+       g_return_val_if_fail (a != NULL, FALSE);
+#line 96 "../src/contacts-store.vala"
+       g_return_val_if_fail (b != NULL, FALSE);
+#line 748 "contacts-store.c"
+       {
+               GeeIterator* _a_persona_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 97 "../src/contacts-store.vala"
+               _tmp0_ = folks_individual_get_personas (a);
+#line 97 "../src/contacts-store.vala"
+               _tmp1_ = _tmp0_;
+#line 97 "../src/contacts-store.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 97 "../src/contacts-store.vala"
+               _a_persona_it = _tmp2_;
+#line 97 "../src/contacts-store.vala"
+               while (TRUE) {
+#line 764 "contacts-store.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* a_persona = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+#line 97 "../src/contacts-store.vala"
+                       _tmp3_ = _a_persona_it;
+#line 97 "../src/contacts-store.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 97 "../src/contacts-store.vala"
+                               break;
+#line 775 "contacts-store.c"
+                       }
+#line 97 "../src/contacts-store.vala"
+                       _tmp4_ = _a_persona_it;
+#line 97 "../src/contacts-store.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 97 "../src/contacts-store.vala"
+                       a_persona = (FolksPersona*) _tmp5_;
+#line 783 "contacts-store.c"
+                       {
+                               GeeIterator* _no_link_uid_it = NULL;
+                               GeeHashMultiMap* _tmp6_;
+                               FolksPersona* _tmp7_;
+                               const gchar* _tmp8_;
+                               const gchar* _tmp9_;
+                               GeeCollection* _tmp10_;
+                               GeeCollection* _tmp11_;
+                               GeeIterator* _tmp12_;
+                               GeeIterator* _tmp13_;
+#line 98 "../src/contacts-store.vala"
+                               _tmp6_ = self->dont_suggest_link;
+#line 98 "../src/contacts-store.vala"
+                               _tmp7_ = a_persona;
+#line 98 "../src/contacts-store.vala"
+                               _tmp8_ = folks_persona_get_uid (_tmp7_);
+#line 98 "../src/contacts-store.vala"
+                               _tmp9_ = _tmp8_;
+#line 98 "../src/contacts-store.vala"
+                               _tmp10_ = gee_multi_map_get ((GeeMultiMap*) _tmp6_, _tmp9_);
+#line 98 "../src/contacts-store.vala"
+                               _tmp11_ = _tmp10_;
+#line 98 "../src/contacts-store.vala"
+                               _tmp12_ = gee_iterable_iterator ((GeeIterable*) _tmp11_);
+#line 98 "../src/contacts-store.vala"
+                               _tmp13_ = _tmp12_;
+#line 98 "../src/contacts-store.vala"
+                               _g_object_unref0 (_tmp11_);
+#line 98 "../src/contacts-store.vala"
+                               _no_link_uid_it = _tmp13_;
+#line 98 "../src/contacts-store.vala"
+                               while (TRUE) {
+#line 816 "contacts-store.c"
+                                       GeeIterator* _tmp14_;
+                                       gchar* no_link_uid = NULL;
+                                       GeeIterator* _tmp15_;
+                                       gpointer _tmp16_;
+#line 98 "../src/contacts-store.vala"
+                                       _tmp14_ = _no_link_uid_it;
+#line 98 "../src/contacts-store.vala"
+                                       if (!gee_iterator_next (_tmp14_)) {
+#line 98 "../src/contacts-store.vala"
+                                               break;
+#line 827 "contacts-store.c"
+                                       }
+#line 98 "../src/contacts-store.vala"
+                                       _tmp15_ = _no_link_uid_it;
+#line 98 "../src/contacts-store.vala"
+                                       _tmp16_ = gee_iterator_get (_tmp15_);
+#line 98 "../src/contacts-store.vala"
+                                       no_link_uid = (gchar*) _tmp16_;
+#line 835 "contacts-store.c"
+                                       {
+                                               GeeIterator* _b_persona_it = NULL;
+                                               GeeSet* _tmp17_;
+                                               GeeSet* _tmp18_;
+                                               GeeIterator* _tmp19_;
+#line 99 "../src/contacts-store.vala"
+                                               _tmp17_ = folks_individual_get_personas (b);
+#line 99 "../src/contacts-store.vala"
+                                               _tmp18_ = _tmp17_;
+#line 99 "../src/contacts-store.vala"
+                                               _tmp19_ = gee_iterable_iterator ((GeeIterable*) _tmp18_);
+#line 99 "../src/contacts-store.vala"
+                                               _b_persona_it = _tmp19_;
+#line 99 "../src/contacts-store.vala"
+                                               while (TRUE) {
+#line 851 "contacts-store.c"
+                                                       GeeIterator* _tmp20_;
+                                                       FolksPersona* b_persona = NULL;
+                                                       GeeIterator* _tmp21_;
+                                                       gpointer _tmp22_;
+                                                       FolksPersona* _tmp23_;
+                                                       const gchar* _tmp24_;
+                                                       const gchar* _tmp25_;
+                                                       const gchar* _tmp26_;
+#line 99 "../src/contacts-store.vala"
+                                                       _tmp20_ = _b_persona_it;
+#line 99 "../src/contacts-store.vala"
+                                                       if (!gee_iterator_next (_tmp20_)) {
+#line 99 "../src/contacts-store.vala"
+                                                               break;
+#line 866 "contacts-store.c"
+                                                       }
+#line 99 "../src/contacts-store.vala"
+                                                       _tmp21_ = _b_persona_it;
+#line 99 "../src/contacts-store.vala"
+                                                       _tmp22_ = gee_iterator_get (_tmp21_);
+#line 99 "../src/contacts-store.vala"
+                                                       b_persona = (FolksPersona*) _tmp22_;
+#line 100 "../src/contacts-store.vala"
+                                                       _tmp23_ = b_persona;
+#line 100 "../src/contacts-store.vala"
+                                                       _tmp24_ = folks_persona_get_uid (_tmp23_);
+#line 100 "../src/contacts-store.vala"
+                                                       _tmp25_ = _tmp24_;
+#line 100 "../src/contacts-store.vala"
+                                                       _tmp26_ = no_link_uid;
+#line 100 "../src/contacts-store.vala"
+                                                       if (g_strcmp0 (_tmp25_, _tmp26_) == 0) {
+#line 101 "../src/contacts-store.vala"
+                                                               result = FALSE;
+#line 101 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (b_persona);
+#line 101 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (_b_persona_it);
+#line 101 "../src/contacts-store.vala"
+                                                               _g_free0 (no_link_uid);
+#line 101 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (_no_link_uid_it);
+#line 101 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (a_persona);
+#line 101 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (_a_persona_it);
+#line 101 "../src/contacts-store.vala"
+                                                               return result;
+#line 900 "contacts-store.c"
+                                                       }
+#line 99 "../src/contacts-store.vala"
+                                                       _g_object_unref0 (b_persona);
+#line 904 "contacts-store.c"
+                                               }
+#line 99 "../src/contacts-store.vala"
+                                               _g_object_unref0 (_b_persona_it);
+#line 908 "contacts-store.c"
+                                       }
+#line 98 "../src/contacts-store.vala"
+                                       _g_free0 (no_link_uid);
+#line 912 "contacts-store.c"
+                               }
+#line 98 "../src/contacts-store.vala"
+                               _g_object_unref0 (_no_link_uid_it);
+#line 916 "contacts-store.c"
+                       }
+#line 97 "../src/contacts-store.vala"
+                       _g_object_unref0 (a_persona);
+#line 920 "contacts-store.c"
+               }
+#line 97 "../src/contacts-store.vala"
+               _g_object_unref0 (_a_persona_it);
+#line 924 "contacts-store.c"
+       }
+       {
+               GeeIterator* _b_persona_it = NULL;
+               GeeSet* _tmp27_;
+               GeeSet* _tmp28_;
+               GeeIterator* _tmp29_;
+#line 105 "../src/contacts-store.vala"
+               _tmp27_ = folks_individual_get_personas (b);
+#line 105 "../src/contacts-store.vala"
+               _tmp28_ = _tmp27_;
+#line 105 "../src/contacts-store.vala"
+               _tmp29_ = gee_iterable_iterator ((GeeIterable*) _tmp28_);
+#line 105 "../src/contacts-store.vala"
+               _b_persona_it = _tmp29_;
+#line 105 "../src/contacts-store.vala"
+               while (TRUE) {
+#line 941 "contacts-store.c"
+                       GeeIterator* _tmp30_;
+                       FolksPersona* b_persona = NULL;
+                       GeeIterator* _tmp31_;
+                       gpointer _tmp32_;
+#line 105 "../src/contacts-store.vala"
+                       _tmp30_ = _b_persona_it;
+#line 105 "../src/contacts-store.vala"
+                       if (!gee_iterator_next (_tmp30_)) {
+#line 105 "../src/contacts-store.vala"
+                               break;
+#line 952 "contacts-store.c"
+                       }
+#line 105 "../src/contacts-store.vala"
+                       _tmp31_ = _b_persona_it;
+#line 105 "../src/contacts-store.vala"
+                       _tmp32_ = gee_iterator_get (_tmp31_);
+#line 105 "../src/contacts-store.vala"
+                       b_persona = (FolksPersona*) _tmp32_;
+#line 960 "contacts-store.c"
+                       {
+                               GeeIterator* _no_link_uid_it = NULL;
+                               GeeHashMultiMap* _tmp33_;
+                               FolksPersona* _tmp34_;
+                               const gchar* _tmp35_;
+                               const gchar* _tmp36_;
+                               GeeCollection* _tmp37_;
+                               GeeCollection* _tmp38_;
+                               GeeIterator* _tmp39_;
+                               GeeIterator* _tmp40_;
+#line 106 "../src/contacts-store.vala"
+                               _tmp33_ = self->dont_suggest_link;
+#line 106 "../src/contacts-store.vala"
+                               _tmp34_ = b_persona;
+#line 106 "../src/contacts-store.vala"
+                               _tmp35_ = folks_persona_get_uid (_tmp34_);
+#line 106 "../src/contacts-store.vala"
+                               _tmp36_ = _tmp35_;
+#line 106 "../src/contacts-store.vala"
+                               _tmp37_ = gee_multi_map_get ((GeeMultiMap*) _tmp33_, _tmp36_);
+#line 106 "../src/contacts-store.vala"
+                               _tmp38_ = _tmp37_;
+#line 106 "../src/contacts-store.vala"
+                               _tmp39_ = gee_iterable_iterator ((GeeIterable*) _tmp38_);
+#line 106 "../src/contacts-store.vala"
+                               _tmp40_ = _tmp39_;
+#line 106 "../src/contacts-store.vala"
+                               _g_object_unref0 (_tmp38_);
+#line 106 "../src/contacts-store.vala"
+                               _no_link_uid_it = _tmp40_;
+#line 106 "../src/contacts-store.vala"
+                               while (TRUE) {
+#line 993 "contacts-store.c"
+                                       GeeIterator* _tmp41_;
+                                       gchar* no_link_uid = NULL;
+                                       GeeIterator* _tmp42_;
+                                       gpointer _tmp43_;
+#line 106 "../src/contacts-store.vala"
+                                       _tmp41_ = _no_link_uid_it;
+#line 106 "../src/contacts-store.vala"
+                                       if (!gee_iterator_next (_tmp41_)) {
+#line 106 "../src/contacts-store.vala"
+                                               break;
+#line 1004 "contacts-store.c"
+                                       }
+#line 106 "../src/contacts-store.vala"
+                                       _tmp42_ = _no_link_uid_it;
+#line 106 "../src/contacts-store.vala"
+                                       _tmp43_ = gee_iterator_get (_tmp42_);
+#line 106 "../src/contacts-store.vala"
+                                       no_link_uid = (gchar*) _tmp43_;
+#line 1012 "contacts-store.c"
+                                       {
+                                               GeeIterator* _a_persona_it = NULL;
+                                               GeeSet* _tmp44_;
+                                               GeeSet* _tmp45_;
+                                               GeeIterator* _tmp46_;
+#line 107 "../src/contacts-store.vala"
+                                               _tmp44_ = folks_individual_get_personas (a);
+#line 107 "../src/contacts-store.vala"
+                                               _tmp45_ = _tmp44_;
+#line 107 "../src/contacts-store.vala"
+                                               _tmp46_ = gee_iterable_iterator ((GeeIterable*) _tmp45_);
+#line 107 "../src/contacts-store.vala"
+                                               _a_persona_it = _tmp46_;
+#line 107 "../src/contacts-store.vala"
+                                               while (TRUE) {
+#line 1028 "contacts-store.c"
+                                                       GeeIterator* _tmp47_;
+                                                       FolksPersona* a_persona = NULL;
+                                                       GeeIterator* _tmp48_;
+                                                       gpointer _tmp49_;
+                                                       FolksPersona* _tmp50_;
+                                                       const gchar* _tmp51_;
+                                                       const gchar* _tmp52_;
+                                                       const gchar* _tmp53_;
+#line 107 "../src/contacts-store.vala"
+                                                       _tmp47_ = _a_persona_it;
+#line 107 "../src/contacts-store.vala"
+                                                       if (!gee_iterator_next (_tmp47_)) {
+#line 107 "../src/contacts-store.vala"
+                                                               break;
+#line 1043 "contacts-store.c"
+                                                       }
+#line 107 "../src/contacts-store.vala"
+                                                       _tmp48_ = _a_persona_it;
+#line 107 "../src/contacts-store.vala"
+                                                       _tmp49_ = gee_iterator_get (_tmp48_);
+#line 107 "../src/contacts-store.vala"
+                                                       a_persona = (FolksPersona*) _tmp49_;
+#line 108 "../src/contacts-store.vala"
+                                                       _tmp50_ = a_persona;
+#line 108 "../src/contacts-store.vala"
+                                                       _tmp51_ = folks_persona_get_uid (_tmp50_);
+#line 108 "../src/contacts-store.vala"
+                                                       _tmp52_ = _tmp51_;
+#line 108 "../src/contacts-store.vala"
+                                                       _tmp53_ = no_link_uid;
+#line 108 "../src/contacts-store.vala"
+                                                       if (g_strcmp0 (_tmp52_, _tmp53_) == 0) {
+#line 109 "../src/contacts-store.vala"
+                                                               result = FALSE;
+#line 109 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (a_persona);
+#line 109 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (_a_persona_it);
+#line 109 "../src/contacts-store.vala"
+                                                               _g_free0 (no_link_uid);
+#line 109 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (_no_link_uid_it);
+#line 109 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (b_persona);
+#line 109 "../src/contacts-store.vala"
+                                                               _g_object_unref0 (_b_persona_it);
+#line 109 "../src/contacts-store.vala"
+                                                               return result;
+#line 1077 "contacts-store.c"
+                                                       }
+#line 107 "../src/contacts-store.vala"
+                                                       _g_object_unref0 (a_persona);
+#line 1081 "contacts-store.c"
+                                               }
+#line 107 "../src/contacts-store.vala"
+                                               _g_object_unref0 (_a_persona_it);
+#line 1085 "contacts-store.c"
+                                       }
+#line 106 "../src/contacts-store.vala"
+                                       _g_free0 (no_link_uid);
+#line 1089 "contacts-store.c"
+                               }
+#line 106 "../src/contacts-store.vala"
+                               _g_object_unref0 (_no_link_uid_it);
+#line 1093 "contacts-store.c"
+                       }
+#line 105 "../src/contacts-store.vala"
+                       _g_object_unref0 (b_persona);
+#line 1097 "contacts-store.c"
+               }
+#line 105 "../src/contacts-store.vala"
+               _g_object_unref0 (_b_persona_it);
+#line 1101 "contacts-store.c"
+       }
+#line 113 "../src/contacts-store.vala"
+       result = TRUE;
+#line 113 "../src/contacts-store.vala"
+       return result;
+#line 1107 "contacts-store.c"
+}
+
+void
+contacts_store_add_no_suggest_link (ContactsStore* self,
+                                    FolksIndividual* a,
+                                    FolksIndividual* b)
+{
+       FolksPersona* persona1 = NULL;
+       GeeList* _tmp0_;
+       GeeList* _tmp1_;
+       gint _tmp2_ = 0;
+       gpointer* _tmp3_;
+       FolksPersona** _tmp4_;
+       gint _tmp4__length1;
+       FolksPersona* _tmp5_;
+       FolksPersona* _tmp6_;
+       FolksPersona* _tmp7_;
+       FolksPersona* persona2 = NULL;
+       GeeList* _tmp8_;
+       GeeList* _tmp9_;
+       gint _tmp10_ = 0;
+       gpointer* _tmp11_;
+       FolksPersona** _tmp12_;
+       gint _tmp12__length1;
+       FolksPersona* _tmp13_;
+       FolksPersona* _tmp14_;
+       FolksPersona* _tmp15_;
+       GeeHashMultiMap* _tmp16_;
+       const gchar* _tmp17_;
+       const gchar* _tmp18_;
+       const gchar* _tmp19_;
+       const gchar* _tmp20_;
+#line 116 "../src/contacts-store.vala"
+       g_return_if_fail (self != NULL);
+#line 116 "../src/contacts-store.vala"
+       g_return_if_fail (a != NULL);
+#line 116 "../src/contacts-store.vala"
+       g_return_if_fail (b != NULL);
+#line 117 "../src/contacts-store.vala"
+       _tmp0_ = contacts_utils_get_personas_for_display (a);
+#line 117 "../src/contacts-store.vala"
+       _tmp1_ = _tmp0_;
+#line 117 "../src/contacts-store.vala"
+       _tmp3_ = gee_collection_to_array ((GeeCollection*) _tmp1_, &_tmp2_);
+#line 117 "../src/contacts-store.vala"
+       _tmp4_ = _tmp3_;
+#line 117 "../src/contacts-store.vala"
+       _tmp4__length1 = _tmp2_;
+#line 117 "../src/contacts-store.vala"
+       _tmp5_ = _tmp4_[0];
+#line 117 "../src/contacts-store.vala"
+       _tmp6_ = _g_object_ref0 (_tmp5_);
+#line 117 "../src/contacts-store.vala"
+       _tmp7_ = _tmp6_;
+#line 117 "../src/contacts-store.vala"
+       _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_object_unref), NULL);
+#line 117 "../src/contacts-store.vala"
+       _g_object_unref0 (_tmp1_);
+#line 117 "../src/contacts-store.vala"
+       persona1 = _tmp7_;
+#line 118 "../src/contacts-store.vala"
+       _tmp8_ = contacts_utils_get_personas_for_display (b);
+#line 118 "../src/contacts-store.vala"
+       _tmp9_ = _tmp8_;
+#line 118 "../src/contacts-store.vala"
+       _tmp11_ = gee_collection_to_array ((GeeCollection*) _tmp9_, &_tmp10_);
+#line 118 "../src/contacts-store.vala"
+       _tmp12_ = _tmp11_;
+#line 118 "../src/contacts-store.vala"
+       _tmp12__length1 = _tmp10_;
+#line 118 "../src/contacts-store.vala"
+       _tmp13_ = _tmp12_[0];
+#line 118 "../src/contacts-store.vala"
+       _tmp14_ = _g_object_ref0 (_tmp13_);
+#line 118 "../src/contacts-store.vala"
+       _tmp15_ = _tmp14_;
+#line 118 "../src/contacts-store.vala"
+       _tmp12_ = (_vala_array_free (_tmp12_, _tmp12__length1, (GDestroyNotify) g_object_unref), NULL);
+#line 118 "../src/contacts-store.vala"
+       _g_object_unref0 (_tmp9_);
+#line 118 "../src/contacts-store.vala"
+       persona2 = _tmp15_;
+#line 119 "../src/contacts-store.vala"
+       _tmp16_ = self->dont_suggest_link;
+#line 119 "../src/contacts-store.vala"
+       _tmp17_ = folks_persona_get_uid (persona1);
+#line 119 "../src/contacts-store.vala"
+       _tmp18_ = _tmp17_;
+#line 119 "../src/contacts-store.vala"
+       _tmp19_ = folks_persona_get_uid (persona2);
+#line 119 "../src/contacts-store.vala"
+       _tmp20_ = _tmp19_;
+#line 119 "../src/contacts-store.vala"
+       gee_multi_map_set ((GeeMultiMap*) _tmp16_, _tmp18_, _tmp20_);
+#line 120 "../src/contacts-store.vala"
+       contacts_store_write_dont_suggest_db (self);
+#line 116 "../src/contacts-store.vala"
+       _g_object_unref0 (persona2);
+#line 116 "../src/contacts-store.vala"
+       _g_object_unref0 (persona1);
+#line 1208 "contacts-store.c"
+}
+
+static void
+contacts_store_on_individuals_changed_detailed (ContactsStore* self,
+                                                GeeMultiMap* changes)
+{
+       GeeHashMap* replaced_individuals = NULL;
+       GeeHashMap* _tmp0_;
+       GeeSet* old_individuals = NULL;
+       GeeSet* _tmp1_;
+       GeeSet* _tmp2_;
+       gint _tmp3_;
+       gint _tmp4_;
+       GeeCollection* _tmp5_;
+       GeeCollection* _tmp6_;
+       gint _tmp7_;
+       gint _tmp8_;
+#line 153 "../src/contacts-store.vala"
+       g_return_if_fail (self != NULL);
+#line 153 "../src/contacts-store.vala"
+       g_return_if_fail (changes != NULL);
+#line 156 "../src/contacts-store.vala"
+       _tmp0_ = gee_hash_map_new (FOLKS_TYPE_INDIVIDUAL, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 
g_object_unref, FOLKS_TYPE_INDIVIDUAL, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, 
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 156 "../src/contacts-store.vala"
+       replaced_individuals = _tmp0_;
+#line 157 "../src/contacts-store.vala"
+       _tmp1_ = gee_multi_map_get_keys (changes);
+#line 157 "../src/contacts-store.vala"
+       old_individuals = _tmp1_;
+#line 159 "../src/contacts-store.vala"
+       _tmp2_ = old_individuals;
+#line 159 "../src/contacts-store.vala"
+       _tmp3_ = gee_collection_get_size ((GeeCollection*) _tmp2_);
+#line 159 "../src/contacts-store.vala"
+       _tmp4_ = _tmp3_;
+#line 159 "../src/contacts-store.vala"
+       _tmp5_ = gee_multi_map_get (changes, NULL);
+#line 159 "../src/contacts-store.vala"
+       _tmp6_ = _tmp5_;
+#line 159 "../src/contacts-store.vala"
+       _tmp7_ = gee_collection_get_size (_tmp6_);
+#line 159 "../src/contacts-store.vala"
+       _tmp8_ = _tmp7_;
+#line 159 "../src/contacts-store.vala"
+       g_debug ("contacts-store.vala:159: Individuals changed: %d old, %d new", _tmp4_ - 1, _tmp8_);
+#line 159 "../src/contacts-store.vala"
+       _g_object_unref0 (_tmp6_);
+#line 1256 "contacts-store.c"
+       {
+               GeeIterator* _old_individual_it = NULL;
+               GeeSet* _tmp9_;
+               GeeIterator* _tmp10_;
+#line 162 "../src/contacts-store.vala"
+               _tmp9_ = old_individuals;
+#line 162 "../src/contacts-store.vala"
+               _tmp10_ = gee_iterable_iterator ((GeeIterable*) _tmp9_);
+#line 162 "../src/contacts-store.vala"
+               _old_individual_it = _tmp10_;
+#line 162 "../src/contacts-store.vala"
+               while (TRUE) {
+#line 1269 "contacts-store.c"
+                       GeeIterator* _tmp11_;
+                       FolksIndividual* old_individual = NULL;
+                       GeeIterator* _tmp12_;
+                       gpointer _tmp13_;
+                       FolksIndividual* _tmp14_;
+#line 162 "../src/contacts-store.vala"
+                       _tmp11_ = _old_individual_it;
+#line 162 "../src/contacts-store.vala"
+                       if (!gee_iterator_next (_tmp11_)) {
+#line 162 "../src/contacts-store.vala"
+                               break;
+#line 1281 "contacts-store.c"
+                       }
+#line 162 "../src/contacts-store.vala"
+                       _tmp12_ = _old_individual_it;
+#line 162 "../src/contacts-store.vala"
+                       _tmp13_ = gee_iterator_get (_tmp12_);
+#line 162 "../src/contacts-store.vala"
+                       old_individual = (FolksIndividual*) _tmp13_;
+#line 163 "../src/contacts-store.vala"
+                       _tmp14_ = old_individual;
+#line 163 "../src/contacts-store.vala"
+                       if (_tmp14_ == NULL) {
+#line 164 "../src/contacts-store.vala"
+                               _g_object_unref0 (old_individual);
+#line 164 "../src/contacts-store.vala"
+                               continue;
+#line 1297 "contacts-store.c"
+                       }
+                       {
+                               GeeIterator* _new_individual_it = NULL;
+                               FolksIndividual* _tmp15_;
+                               GeeCollection* _tmp16_;
+                               GeeCollection* _tmp17_;
+                               GeeIterator* _tmp18_;
+                               GeeIterator* _tmp19_;
+#line 165 "../src/contacts-store.vala"
+                               _tmp15_ = old_individual;
+#line 165 "../src/contacts-store.vala"
+                               _tmp16_ = gee_multi_map_get (changes, _tmp15_);
+#line 165 "../src/contacts-store.vala"
+                               _tmp17_ = _tmp16_;
+#line 165 "../src/contacts-store.vala"
+                               _tmp18_ = gee_iterable_iterator ((GeeIterable*) _tmp17_);
+#line 165 "../src/contacts-store.vala"
+                               _tmp19_ = _tmp18_;
+#line 165 "../src/contacts-store.vala"
+                               _g_object_unref0 (_tmp17_);
+#line 165 "../src/contacts-store.vala"
+                               _new_individual_it = _tmp19_;
+#line 165 "../src/contacts-store.vala"
+                               while (TRUE) {
+#line 1322 "contacts-store.c"
+                                       GeeIterator* _tmp20_;
+                                       FolksIndividual* new_individual = NULL;
+                                       GeeIterator* _tmp21_;
+                                       gpointer _tmp22_;
+                                       FolksIndividual* _tmp23_;
+                                       gboolean _tmp24_ = FALSE;
+                                       GeeHashMap* _tmp25_;
+                                       FolksIndividual* _tmp26_;
+#line 165 "../src/contacts-store.vala"
+                                       _tmp20_ = _new_individual_it;
+#line 165 "../src/contacts-store.vala"
+                                       if (!gee_iterator_next (_tmp20_)) {
+#line 165 "../src/contacts-store.vala"
+                                               break;
+#line 1337 "contacts-store.c"
+                                       }
+#line 165 "../src/contacts-store.vala"
+                                       _tmp21_ = _new_individual_it;
+#line 165 "../src/contacts-store.vala"
+                                       _tmp22_ = gee_iterator_get (_tmp21_);
+#line 165 "../src/contacts-store.vala"
+                                       new_individual = (FolksIndividual*) _tmp22_;
+#line 166 "../src/contacts-store.vala"
+                                       _tmp23_ = new_individual;
+#line 166 "../src/contacts-store.vala"
+                                       if (_tmp23_ == NULL) {
+#line 167 "../src/contacts-store.vala"
+                                               _g_object_unref0 (new_individual);
+#line 167 "../src/contacts-store.vala"
+                                               continue;
+#line 1353 "contacts-store.c"
+                                       }
+#line 168 "../src/contacts-store.vala"
+                                       _tmp25_ = replaced_individuals;
+#line 168 "../src/contacts-store.vala"
+                                       _tmp26_ = new_individual;
+#line 168 "../src/contacts-store.vala"
+                                       if (!gee_abstract_map_has_key ((GeeAbstractMap*) _tmp25_, _tmp26_)) {
+#line 168 "../src/contacts-store.vala"
+                                               _tmp24_ = TRUE;
+#line 1363 "contacts-store.c"
+                                       } else {
+                                               FolksIndividual* _tmp27_;
+#line 169 "../src/contacts-store.vala"
+                                               _tmp27_ = old_individual;
+#line 169 "../src/contacts-store.vala"
+                                               _tmp24_ = contacts_store_individual_should_replace_at_join 
(self, _tmp27_);
+#line 1370 "contacts-store.c"
+                                       }
+#line 168 "../src/contacts-store.vala"
+                                       if (_tmp24_) {
+#line 1374 "contacts-store.c"
+                                               GeeHashMap* _tmp28_;
+                                               FolksIndividual* _tmp29_;
+                                               FolksIndividual* _tmp30_;
+#line 170 "../src/contacts-store.vala"
+                                               _tmp28_ = replaced_individuals;
+#line 170 "../src/contacts-store.vala"
+                                               _tmp29_ = new_individual;
+#line 170 "../src/contacts-store.vala"
+                                               _tmp30_ = old_individual;
+#line 170 "../src/contacts-store.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp28_, _tmp29_, 
_tmp30_);
+#line 1386 "contacts-store.c"
+                                       }
+#line 165 "../src/contacts-store.vala"
+                                       _g_object_unref0 (new_individual);
+#line 1390 "contacts-store.c"
+                               }
+#line 165 "../src/contacts-store.vala"
+                               _g_object_unref0 (_new_individual_it);
+#line 1394 "contacts-store.c"
+                       }
+#line 162 "../src/contacts-store.vala"
+                       _g_object_unref0 (old_individual);
+#line 1398 "contacts-store.c"
+               }
+#line 162 "../src/contacts-store.vala"
+               _g_object_unref0 (_old_individual_it);
+#line 1402 "contacts-store.c"
+       }
+       {
+               GeeIterator* _old_individual_it = NULL;
+               GeeSet* _tmp31_;
+               GeeIterator* _tmp32_;
+#line 175 "../src/contacts-store.vala"
+               _tmp31_ = old_individuals;
+#line 175 "../src/contacts-store.vala"
+               _tmp32_ = gee_iterable_iterator ((GeeIterable*) _tmp31_);
+#line 175 "../src/contacts-store.vala"
+               _old_individual_it = _tmp32_;
+#line 175 "../src/contacts-store.vala"
+               while (TRUE) {
+#line 1416 "contacts-store.c"
+                       GeeIterator* _tmp33_;
+                       FolksIndividual* old_individual = NULL;
+                       GeeIterator* _tmp34_;
+                       gpointer _tmp35_;
+                       GeeHashSet* replacements = NULL;
+                       GeeHashSet* _tmp61_;
+#line 175 "../src/contacts-store.vala"
+                       _tmp33_ = _old_individual_it;
+#line 175 "../src/contacts-store.vala"
+                       if (!gee_iterator_next (_tmp33_)) {
+#line 175 "../src/contacts-store.vala"
+                               break;
+#line 1429 "contacts-store.c"
+                       }
+#line 175 "../src/contacts-store.vala"
+                       _tmp34_ = _old_individual_it;
+#line 175 "../src/contacts-store.vala"
+                       _tmp35_ = gee_iterator_get (_tmp34_);
+#line 175 "../src/contacts-store.vala"
+                       old_individual = (FolksIndividual*) _tmp35_;
+#line 176 "../src/contacts-store.vala"
+                       replacements = NULL;
+#line 1439 "contacts-store.c"
+                       {
+                               GeeIterator* _new_individual_it = NULL;
+                               FolksIndividual* _tmp36_;
+                               GeeCollection* _tmp37_;
+                               GeeCollection* _tmp38_;
+                               GeeIterator* _tmp39_;
+                               GeeIterator* _tmp40_;
+#line 177 "../src/contacts-store.vala"
+                               _tmp36_ = old_individual;
+#line 177 "../src/contacts-store.vala"
+                               _tmp37_ = gee_multi_map_get (changes, _tmp36_);
+#line 177 "../src/contacts-store.vala"
+                               _tmp38_ = _tmp37_;
+#line 177 "../src/contacts-store.vala"
+                               _tmp39_ = gee_iterable_iterator ((GeeIterable*) _tmp38_);
+#line 177 "../src/contacts-store.vala"
+                               _tmp40_ = _tmp39_;
+#line 177 "../src/contacts-store.vala"
+                               _g_object_unref0 (_tmp38_);
+#line 177 "../src/contacts-store.vala"
+                               _new_individual_it = _tmp40_;
+#line 177 "../src/contacts-store.vala"
+                               while (TRUE) {
+#line 1463 "contacts-store.c"
+                                       GeeIterator* _tmp41_;
+                                       FolksIndividual* new_individual = NULL;
+                                       GeeIterator* _tmp42_;
+                                       gpointer _tmp43_;
+                                       gboolean _tmp44_ = FALSE;
+                                       gboolean _tmp45_ = FALSE;
+                                       FolksIndividual* _tmp46_;
+#line 177 "../src/contacts-store.vala"
+                                       _tmp41_ = _new_individual_it;
+#line 177 "../src/contacts-store.vala"
+                                       if (!gee_iterator_next (_tmp41_)) {
+#line 177 "../src/contacts-store.vala"
+                                               break;
+#line 1477 "contacts-store.c"
+                                       }
+#line 177 "../src/contacts-store.vala"
+                                       _tmp42_ = _new_individual_it;
+#line 177 "../src/contacts-store.vala"
+                                       _tmp43_ = gee_iterator_get (_tmp42_);
+#line 177 "../src/contacts-store.vala"
+                                       new_individual = (FolksIndividual*) _tmp43_;
+#line 178 "../src/contacts-store.vala"
+                                       _tmp46_ = old_individual;
+#line 178 "../src/contacts-store.vala"
+                                       if (_tmp46_ != NULL) {
+#line 1489 "contacts-store.c"
+                                               FolksIndividual* _tmp47_;
+#line 178 "../src/contacts-store.vala"
+                                               _tmp47_ = new_individual;
+#line 178 "../src/contacts-store.vala"
+                                               _tmp45_ = _tmp47_ != NULL;
+#line 1495 "contacts-store.c"
+                                       } else {
+#line 178 "../src/contacts-store.vala"
+                                               _tmp45_ = FALSE;
+#line 1499 "contacts-store.c"
+                                       }
+#line 178 "../src/contacts-store.vala"
+                                       if (_tmp45_) {
+#line 1503 "contacts-store.c"
+                                               GeeHashMap* _tmp48_;
+                                               FolksIndividual* _tmp49_;
+                                               gpointer _tmp50_;
+                                               FolksIndividual* _tmp51_;
+                                               FolksIndividual* _tmp52_;
+#line 179 "../src/contacts-store.vala"
+                                               _tmp48_ = replaced_individuals;
+#line 179 "../src/contacts-store.vala"
+                                               _tmp49_ = new_individual;
+#line 179 "../src/contacts-store.vala"
+                                               _tmp50_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp48_, 
_tmp49_);
+#line 179 "../src/contacts-store.vala"
+                                               _tmp51_ = (FolksIndividual*) _tmp50_;
+#line 179 "../src/contacts-store.vala"
+                                               _tmp52_ = old_individual;
+#line 179 "../src/contacts-store.vala"
+                                               _tmp44_ = _tmp51_ == _tmp52_;
+#line 179 "../src/contacts-store.vala"
+                                               _g_object_unref0 (_tmp51_);
+#line 1523 "contacts-store.c"
+                                       } else {
+#line 178 "../src/contacts-store.vala"
+                                               _tmp44_ = FALSE;
+#line 1527 "contacts-store.c"
+                                       }
+#line 178 "../src/contacts-store.vala"
+                                       if (_tmp44_) {
+#line 1531 "contacts-store.c"
+                                               GeeHashSet* _tmp53_;
+                                               GeeHashSet* _tmp55_;
+                                               FolksIndividual* _tmp56_;
+#line 180 "../src/contacts-store.vala"
+                                               _tmp53_ = replacements;
+#line 180 "../src/contacts-store.vala"
+                                               if (_tmp53_ == NULL) {
+#line 1539 "contacts-store.c"
+                                                       GeeHashSet* _tmp54_;
+#line 181 "../src/contacts-store.vala"
+                                                       _tmp54_ = gee_hash_set_new (FOLKS_TYPE_INDIVIDUAL, 
(GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 181 "../src/contacts-store.vala"
+                                                       _g_object_unref0 (replacements);
+#line 181 "../src/contacts-store.vala"
+                                                       replacements = _tmp54_;
+#line 1547 "contacts-store.c"
+                                               }
+#line 182 "../src/contacts-store.vala"
+                                               _tmp55_ = replacements;
+#line 182 "../src/contacts-store.vala"
+                                               _tmp56_ = new_individual;
+#line 182 "../src/contacts-store.vala"
+                                               gee_abstract_collection_add ((GeeAbstractCollection*) 
_tmp55_, _tmp56_);
+#line 1555 "contacts-store.c"
+                                       } else {
+                                               FolksIndividual* _tmp57_;
+#line 183 "../src/contacts-store.vala"
+                                               _tmp57_ = old_individual;
+#line 183 "../src/contacts-store.vala"
+                                               if (_tmp57_ != NULL) {
+#line 1562 "contacts-store.c"
+                                                       FolksIndividual* _tmp58_;
+#line 185 "../src/contacts-store.vala"
+                                                       _tmp58_ = old_individual;
+#line 185 "../src/contacts-store.vala"
+                                                       g_signal_emit (self, 
contacts_store_signals[CONTACTS_STORE_REMOVED_SIGNAL], 0, _tmp58_);
+#line 1568 "contacts-store.c"
+                                               } else {
+                                                       FolksIndividual* _tmp59_;
+#line 186 "../src/contacts-store.vala"
+                                                       _tmp59_ = new_individual;
+#line 186 "../src/contacts-store.vala"
+                                                       if (_tmp59_ != NULL) {
+#line 1575 "contacts-store.c"
+                                                               FolksIndividual* _tmp60_;
+#line 188 "../src/contacts-store.vala"
+                                                               _tmp60_ = new_individual;
+#line 188 "../src/contacts-store.vala"
+                                                               g_signal_emit (self, 
contacts_store_signals[CONTACTS_STORE_ADDED_SIGNAL], 0, _tmp60_);
+#line 1581 "contacts-store.c"
+                                                       }
+                                               }
+                                       }
+#line 177 "../src/contacts-store.vala"
+                                       _g_object_unref0 (new_individual);
+#line 1587 "contacts-store.c"
+                               }
+#line 177 "../src/contacts-store.vala"
+                               _g_object_unref0 (_new_individual_it);
+#line 1591 "contacts-store.c"
+                       }
+#line 197 "../src/contacts-store.vala"
+                       _tmp61_ = replacements;
+#line 197 "../src/contacts-store.vala"
+                       if (_tmp61_ != NULL) {
+#line 1597 "contacts-store.c"
+                               FolksIndividual* main_individual = NULL;
+#line 198 "../src/contacts-store.vala"
+                               main_individual = NULL;
+#line 1601 "contacts-store.c"
+                               {
+                                       GeeIterator* _i_it = NULL;
+                                       GeeHashSet* _tmp62_;
+                                       GeeIterator* _tmp63_;
+#line 199 "../src/contacts-store.vala"
+                                       _tmp62_ = replacements;
+#line 199 "../src/contacts-store.vala"
+                                       _tmp63_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) 
_tmp62_);
+#line 199 "../src/contacts-store.vala"
+                                       _i_it = _tmp63_;
+#line 199 "../src/contacts-store.vala"
+                                       while (TRUE) {
+#line 1614 "contacts-store.c"
+                                               GeeIterator* _tmp64_;
+                                               FolksIndividual* i = NULL;
+                                               GeeIterator* _tmp65_;
+                                               gpointer _tmp66_;
+                                               FolksIndividual* _tmp67_;
+                                               FolksIndividual* _tmp68_;
+                                               FolksIndividual* _tmp69_;
+#line 199 "../src/contacts-store.vala"
+                                               _tmp64_ = _i_it;
+#line 199 "../src/contacts-store.vala"
+                                               if (!gee_iterator_next (_tmp64_)) {
+#line 199 "../src/contacts-store.vala"
+                                                       break;
+#line 1628 "contacts-store.c"
+                                               }
+#line 199 "../src/contacts-store.vala"
+                                               _tmp65_ = _i_it;
+#line 199 "../src/contacts-store.vala"
+                                               _tmp66_ = gee_iterator_get (_tmp65_);
+#line 199 "../src/contacts-store.vala"
+                                               i = (FolksIndividual*) _tmp66_;
+#line 200 "../src/contacts-store.vala"
+                                               _tmp67_ = i;
+#line 200 "../src/contacts-store.vala"
+                                               _tmp68_ = _g_object_ref0 (_tmp67_);
+#line 200 "../src/contacts-store.vala"
+                                               _g_object_unref0 (main_individual);
+#line 200 "../src/contacts-store.vala"
+                                               main_individual = _tmp68_;
+#line 205 "../src/contacts-store.vala"
+                                               _tmp69_ = i;
+#line 205 "../src/contacts-store.vala"
+                                               if (contacts_store_individual_can_replace_at_split (self, 
_tmp69_)) {
+#line 206 "../src/contacts-store.vala"
+                                                       _g_object_unref0 (i);
+#line 206 "../src/contacts-store.vala"
+                                                       break;
+#line 1652 "contacts-store.c"
+                                               }
+#line 199 "../src/contacts-store.vala"
+                                               _g_object_unref0 (i);
+#line 1656 "contacts-store.c"
+                                       }
+#line 199 "../src/contacts-store.vala"
+                                       _g_object_unref0 (_i_it);
+#line 1660 "contacts-store.c"
+                               }
+                               {
+                                       GeeIterator* _i_it = NULL;
+                                       GeeHashSet* _tmp70_;
+                                       GeeIterator* _tmp71_;
+#line 213 "../src/contacts-store.vala"
+                                       _tmp70_ = replacements;
+#line 213 "../src/contacts-store.vala"
+                                       _tmp71_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) 
_tmp70_);
+#line 213 "../src/contacts-store.vala"
+                                       _i_it = _tmp71_;
+#line 213 "../src/contacts-store.vala"
+                                       while (TRUE) {
+#line 1674 "contacts-store.c"
+                                               GeeIterator* _tmp72_;
+                                               FolksIndividual* i = NULL;
+                                               GeeIterator* _tmp73_;
+                                               gpointer _tmp74_;
+                                               FolksIndividual* _tmp75_;
+                                               FolksIndividual* _tmp76_;
+#line 213 "../src/contacts-store.vala"
+                                               _tmp72_ = _i_it;
+#line 213 "../src/contacts-store.vala"
+                                               if (!gee_iterator_next (_tmp72_)) {
+#line 213 "../src/contacts-store.vala"
+                                                       break;
+#line 1687 "contacts-store.c"
+                                               }
+#line 213 "../src/contacts-store.vala"
+                                               _tmp73_ = _i_it;
+#line 213 "../src/contacts-store.vala"
+                                               _tmp74_ = gee_iterator_get (_tmp73_);
+#line 213 "../src/contacts-store.vala"
+                                               i = (FolksIndividual*) _tmp74_;
+#line 214 "../src/contacts-store.vala"
+                                               _tmp75_ = i;
+#line 214 "../src/contacts-store.vala"
+                                               _tmp76_ = main_individual;
+#line 214 "../src/contacts-store.vala"
+                                               if (_tmp75_ != _tmp76_) {
+#line 1701 "contacts-store.c"
+                                                       FolksIndividual* _tmp77_;
+#line 217 "../src/contacts-store.vala"
+                                                       _tmp77_ = i;
+#line 217 "../src/contacts-store.vala"
+                                                       g_signal_emit (self, 
contacts_store_signals[CONTACTS_STORE_ADDED_SIGNAL], 0, _tmp77_);
+#line 1707 "contacts-store.c"
+                                               }
+#line 213 "../src/contacts-store.vala"
+                                               _g_object_unref0 (i);
+#line 1711 "contacts-store.c"
+                                       }
+#line 213 "../src/contacts-store.vala"
+                                       _g_object_unref0 (_i_it);
+#line 1715 "contacts-store.c"
+                               }
+#line 197 "../src/contacts-store.vala"
+                               _g_object_unref0 (main_individual);
+#line 1719 "contacts-store.c"
+                       }
+#line 175 "../src/contacts-store.vala"
+                       _g_object_unref0 (replacements);
+#line 175 "../src/contacts-store.vala"
+                       _g_object_unref0 (old_individual);
+#line 1725 "contacts-store.c"
+               }
+#line 175 "../src/contacts-store.vala"
+               _g_object_unref0 (_old_individual_it);
+#line 1729 "contacts-store.c"
+       }
+#line 153 "../src/contacts-store.vala"
+       _g_object_unref0 (old_individuals);
+#line 153 "../src/contacts-store.vala"
+       _g_object_unref0 (replaced_individuals);
+#line 1735 "contacts-store.c"
+}
+
+GeeCollection*
+contacts_store_get_contacts (ContactsStore* self)
+{
+       FolksIndividualAggregator* _tmp0_;
+       GeeMap* _tmp1_;
+       GeeMap* _tmp2_;
+       GeeCollection* _tmp3_;
+       GeeCollection* _tmp4_;
+       GeeCollection* _tmp5_;
+       GeeCollection* _tmp6_;
+       GeeCollection* _tmp7_;
+       GeeCollection* _tmp8_;
+       GeeCollection* result = NULL;
+#line 224 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 225 "../src/contacts-store.vala"
+       _tmp0_ = self->priv->_aggregator;
+#line 225 "../src/contacts-store.vala"
+       _tmp1_ = folks_individual_aggregator_get_individuals (_tmp0_);
+#line 225 "../src/contacts-store.vala"
+       _tmp2_ = _tmp1_;
+#line 225 "../src/contacts-store.vala"
+       _tmp3_ = gee_map_get_values (_tmp2_);
+#line 225 "../src/contacts-store.vala"
+       _tmp4_ = _tmp3_;
+#line 225 "../src/contacts-store.vala"
+       _tmp5_ = _tmp4_;
+#line 225 "../src/contacts-store.vala"
+       _tmp6_ = gee_collection_get_read_only_view (_tmp5_);
+#line 225 "../src/contacts-store.vala"
+       _tmp7_ = _tmp6_;
+#line 225 "../src/contacts-store.vala"
+       _tmp8_ = _tmp7_;
+#line 225 "../src/contacts-store.vala"
+       _g_object_unref0 (_tmp5_);
+#line 225 "../src/contacts-store.vala"
+       result = _tmp8_;
+#line 225 "../src/contacts-store.vala"
+       return result;
+#line 1777 "contacts-store.c"
+}
+
+static void
+contacts_store_find_contact_data_free (gpointer _data)
+{
+       ContactsStoreFindContactData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-store.vala"
+       _g_object_unref0 (_data_->query);
+#line 22 "../src/contacts-store.vala"
+       _g_object_unref0 (_data_->result);
+#line 22 "../src/contacts-store.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-store.vala"
+       g_slice_free (ContactsStoreFindContactData, _data_);
+#line 1793 "contacts-store.c"
+}
+
+void
+contacts_store_find_contact (ContactsStore* self,
+                             FolksQuery* query,
+                             GAsyncReadyCallback _callback_,
+                             gpointer _user_data_)
+{
+       ContactsStoreFindContactData* _data_;
+       ContactsStore* _tmp0_;
+       FolksQuery* _tmp1_;
+#line 22 "../src/contacts-store.vala"
+       _data_ = g_slice_new0 (ContactsStoreFindContactData);
+#line 22 "../src/contacts-store.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-store.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_store_find_contact_data_free);
+#line 22 "../src/contacts-store.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-store.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-store.vala"
+       _tmp1_ = _g_object_ref0 (query);
+#line 22 "../src/contacts-store.vala"
+       _g_object_unref0 (_data_->query);
+#line 22 "../src/contacts-store.vala"
+       _data_->query = _tmp1_;
+#line 22 "../src/contacts-store.vala"
+       contacts_store_find_contact_co (_data_);
+#line 1823 "contacts-store.c"
+}
+
+FolksIndividual*
+contacts_store_find_contact_finish (ContactsStore* self,
+                                    GAsyncResult* _res_)
+{
+       FolksIndividual* result;
+       ContactsStoreFindContactData* _data_;
+#line 22 "../src/contacts-store.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 22 "../src/contacts-store.vala"
+       result = _data_->result;
+#line 22 "../src/contacts-store.vala"
+       _data_->result = NULL;
+#line 22 "../src/contacts-store.vala"
+       return result;
+#line 1840 "contacts-store.c"
+}
+
+static Block2Data*
+block2_data_ref (Block2Data* _data2_)
+{
+#line 230 "../src/contacts-store.vala"
+       g_atomic_int_inc (&_data2_->_ref_count_);
+#line 230 "../src/contacts-store.vala"
+       return _data2_;
+#line 1850 "contacts-store.c"
+}
+
+static void
+block2_data_unref (void * _userdata_)
+{
+       Block2Data* _data2_;
+       _data2_ = (Block2Data*) _userdata_;
+#line 230 "../src/contacts-store.vala"
+       if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
+#line 1860 "contacts-store.c"
+               ContactsStore* self;
+#line 230 "../src/contacts-store.vala"
+               self = _data2_->self;
+#line 230 "../src/contacts-store.vala"
+               (_data2_->callback_target_destroy_notify == NULL) ? NULL : 
(_data2_->callback_target_destroy_notify (_data2_->callback_target), NULL);
+#line 230 "../src/contacts-store.vala"
+               _data2_->callback = NULL;
+#line 230 "../src/contacts-store.vala"
+               _data2_->callback_target = NULL;
+#line 230 "../src/contacts-store.vala"
+               _data2_->callback_target_destroy_notify = NULL;
+#line 230 "../src/contacts-store.vala"
+               _g_object_unref0 (self);
+#line 230 "../src/contacts-store.vala"
+               g_slice_free (Block2Data, _data2_);
+#line 1876 "contacts-store.c"
+       }
+}
+
+static gboolean
+_contacts_store_find_contact_co_gsource_func (gpointer self)
+{
+       gboolean result;
+       result = contacts_store_find_contact_co (self);
+#line 232 "../src/contacts-store.vala"
+       return result;
+#line 1887 "contacts-store.c"
+}
+
+static void
+___lambda7_ (Block2Data* _data2_)
+{
+       ContactsStore* self;
+       GSourceFunc _tmp0_;
+       gpointer _tmp0__target;
+#line 233 "../src/contacts-store.vala"
+       self = _data2_->self;
+#line 234 "../src/contacts-store.vala"
+       _tmp0_ = _data2_->callback;
+#line 234 "../src/contacts-store.vala"
+       _tmp0__target = _data2_->callback_target;
+#line 234 "../src/contacts-store.vala"
+       _tmp0_ (_tmp0__target);
+#line 1904 "contacts-store.c"
+}
+
+static void
+____lambda7__contacts_store_quiescent (ContactsStore* _sender,
+                                       gpointer self)
+{
+#line 233 "../src/contacts-store.vala"
+       ___lambda7_ (self);
+#line 1913 "contacts-store.c"
+}
+
+static gboolean
+contacts_store_find_contact_co (ContactsStoreFindContactData* _data_)
+{
+#line 228 "../src/contacts-store.vala"
+       switch (_data_->_state_) {
+#line 228 "../src/contacts-store.vala"
+               case 0:
+#line 1923 "contacts-store.c"
+               goto _state_0;
+#line 228 "../src/contacts-store.vala"
+               case 1:
+#line 1927 "contacts-store.c"
+               goto _state_1;
+               default:
+#line 228 "../src/contacts-store.vala"
+               g_assert_not_reached ();
+#line 1932 "contacts-store.c"
+       }
+       _state_0:
+#line 230 "../src/contacts-store.vala"
+       _data_->_tmp0_ = contacts_store_get_is_quiescent (_data_->self);
+#line 230 "../src/contacts-store.vala"
+       _data_->_tmp1_ = _data_->_tmp0_;
+#line 230 "../src/contacts-store.vala"
+       if (!_data_->_tmp1_) {
+#line 230 "../src/contacts-store.vala"
+               _data_->_data2_ = g_slice_new0 (Block2Data);
+#line 230 "../src/contacts-store.vala"
+               _data_->_data2_->_ref_count_ = 1;
+#line 230 "../src/contacts-store.vala"
+               _data_->_data2_->self = g_object_ref (_data_->self);
+#line 232 "../src/contacts-store.vala"
+               _data_->_data2_->callback = _contacts_store_find_contact_co_gsource_func;
+#line 232 "../src/contacts-store.vala"
+               _data_->_data2_->callback_target = _data_;
+#line 232 "../src/contacts-store.vala"
+               _data_->_data2_->callback_target_destroy_notify = NULL;
+#line 233 "../src/contacts-store.vala"
+               _data_->_tmp2_ = g_signal_connect_data (_data_->self, "quiescent", (GCallback) 
____lambda7__contacts_store_quiescent, block2_data_ref (_data_->_data2_), (GClosureNotify) block2_data_unref, 
0);
+#line 233 "../src/contacts-store.vala"
+               _data_->signal_id = _data_->_tmp2_;
+#line 236 "../src/contacts-store.vala"
+               _data_->_state_ = 1;
+#line 236 "../src/contacts-store.vala"
+               return FALSE;
+#line 1961 "contacts-store.c"
+               _state_1:
+               ;
+#line 237 "../src/contacts-store.vala"
+               g_signal_handler_disconnect ((GObject*) _data_->self, _data_->signal_id);
+#line 230 "../src/contacts-store.vala"
+               block2_data_unref (_data_->_data2_);
+#line 230 "../src/contacts-store.vala"
+               _data_->_data2_ = NULL;
+#line 1970 "contacts-store.c"
+       }
+#line 240 "../src/contacts-store.vala"
+       _data_->matched = NULL;
+#line 242 "../src/contacts-store.vala"
+       _data_->strength = (guint) 0;
+#line 1976 "contacts-store.c"
+       {
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp3_ = _data_->self->priv->_aggregator;
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp4_ = folks_individual_aggregator_get_individuals (_data_->_tmp3_);
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp5_ = _data_->_tmp4_;
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp6_ = gee_map_get_values (_data_->_tmp5_);
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp7_ = _data_->_tmp6_;
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp8_ = _data_->_tmp7_;
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp9_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp8_);
+#line 243 "../src/contacts-store.vala"
+               _data_->_tmp10_ = _data_->_tmp9_;
+#line 243 "../src/contacts-store.vala"
+               _g_object_unref0 (_data_->_tmp8_);
+#line 243 "../src/contacts-store.vala"
+               _data_->_i_it = _data_->_tmp10_;
+#line 243 "../src/contacts-store.vala"
+               while (TRUE) {
+#line 243 "../src/contacts-store.vala"
+                       _data_->_tmp11_ = _data_->_i_it;
+#line 243 "../src/contacts-store.vala"
+                       if (!gee_iterator_next (_data_->_tmp11_)) {
+#line 243 "../src/contacts-store.vala"
+                               break;
+#line 2006 "contacts-store.c"
+                       }
+#line 243 "../src/contacts-store.vala"
+                       _data_->_tmp12_ = _data_->_i_it;
+#line 243 "../src/contacts-store.vala"
+                       _data_->_tmp13_ = gee_iterator_get (_data_->_tmp12_);
+#line 243 "../src/contacts-store.vala"
+                       _data_->i = (FolksIndividual*) _data_->_tmp13_;
+#line 244 "../src/contacts-store.vala"
+                       _data_->_tmp14_ = _data_->i;
+#line 244 "../src/contacts-store.vala"
+                       _data_->this_strength = folks_query_is_match (_data_->query, _data_->_tmp14_);
+#line 245 "../src/contacts-store.vala"
+                       if (_data_->this_strength > _data_->strength) {
+#line 246 "../src/contacts-store.vala"
+                               _data_->_tmp15_ = _data_->i;
+#line 246 "../src/contacts-store.vala"
+                               _data_->_tmp16_ = _g_object_ref0 (_data_->_tmp15_);
+#line 246 "../src/contacts-store.vala"
+                               _g_object_unref0 (_data_->matched);
+#line 246 "../src/contacts-store.vala"
+                               _data_->matched = _data_->_tmp16_;
+#line 247 "../src/contacts-store.vala"
+                               _data_->strength = _data_->this_strength;
+#line 2030 "contacts-store.c"
+                       }
+#line 243 "../src/contacts-store.vala"
+                       _g_object_unref0 (_data_->i);
+#line 2034 "contacts-store.c"
+               }
+#line 243 "../src/contacts-store.vala"
+               _g_object_unref0 (_data_->_i_it);
+#line 2038 "contacts-store.c"
+       }
+#line 251 "../src/contacts-store.vala"
+       _data_->result = _data_->matched;
+#line 251 "../src/contacts-store.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 251 "../src/contacts-store.vala"
+       if (_data_->_state_ != 0) {
+#line 251 "../src/contacts-store.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 251 "../src/contacts-store.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2050 "contacts-store.c"
+               }
+       }
+#line 251 "../src/contacts-store.vala"
+       g_object_unref (_data_->_async_result);
+#line 251 "../src/contacts-store.vala"
+       return FALSE;
+#line 2057 "contacts-store.c"
+}
+
+ContactsStore*
+contacts_store_construct (GType object_type)
+{
+       ContactsStore * self = NULL;
+#line 22 "../src/contacts-store.vala"
+       self = (ContactsStore*) g_object_new (object_type, NULL);
+#line 22 "../src/contacts-store.vala"
+       return self;
+#line 2068 "contacts-store.c"
+}
+
+ContactsStore*
+contacts_store_new (void)
+{
+#line 22 "../src/contacts-store.vala"
+       return contacts_store_construct (CONTACTS_TYPE_STORE);
+#line 2076 "contacts-store.c"
+}
+
+FolksIndividualAggregator*
+contacts_store_get_aggregator (ContactsStore* self)
+{
+       FolksIndividualAggregator* result;
+       FolksIndividualAggregator* _tmp0_;
+#line 28 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 28 "../src/contacts-store.vala"
+       _tmp0_ = self->priv->_aggregator;
+#line 28 "../src/contacts-store.vala"
+       result = _tmp0_;
+#line 28 "../src/contacts-store.vala"
+       return result;
+#line 2092 "contacts-store.c"
+}
+
+static void
+contacts_store_set_aggregator (ContactsStore* self,
+                               FolksIndividualAggregator* value)
+{
+#line 28 "../src/contacts-store.vala"
+       g_return_if_fail (self != NULL);
+#line 28 "../src/contacts-store.vala"
+       if (contacts_store_get_aggregator (self) != value) {
+#line 2103 "contacts-store.c"
+               FolksIndividualAggregator* _tmp0_;
+#line 28 "../src/contacts-store.vala"
+               _tmp0_ = _g_object_ref0 (value);
+#line 28 "../src/contacts-store.vala"
+               _g_object_unref0 (self->priv->_aggregator);
+#line 28 "../src/contacts-store.vala"
+               self->priv->_aggregator = _tmp0_;
+#line 28 "../src/contacts-store.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_store_properties[CONTACTS_STORE_AGGREGATOR_PROPERTY]);
+#line 2113 "contacts-store.c"
+       }
+}
+
+FolksBackendStore*
+contacts_store_get_backend_store (ContactsStore* self)
+{
+       FolksBackendStore* result;
+       FolksIndividualAggregator* _tmp0_;
+       FolksBackendStore* _tmp1_;
+       FolksBackendStore* _tmp2_;
+#line 29 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 29 "../src/contacts-store.vala"
+       _tmp0_ = self->priv->_aggregator;
+#line 29 "../src/contacts-store.vala"
+       _tmp1_ = folks_individual_aggregator_get_backend_store (_tmp0_);
+#line 29 "../src/contacts-store.vala"
+       _tmp2_ = _tmp1_;
+#line 29 "../src/contacts-store.vala"
+       result = _tmp2_;
+#line 29 "../src/contacts-store.vala"
+       return result;
+#line 2136 "contacts-store.c"
+}
+
+gboolean
+contacts_store_get_is_quiescent (ContactsStore* self)
+{
+       gboolean result;
+       FolksIndividualAggregator* _tmp0_;
+       gboolean _tmp1_;
+       gboolean _tmp2_;
+#line 38 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 38 "../src/contacts-store.vala"
+       _tmp0_ = self->priv->_aggregator;
+#line 38 "../src/contacts-store.vala"
+       _tmp1_ = folks_individual_aggregator_get_is_quiescent (_tmp0_);
+#line 38 "../src/contacts-store.vala"
+       _tmp2_ = _tmp1_;
+#line 38 "../src/contacts-store.vala"
+       result = _tmp2_;
+#line 38 "../src/contacts-store.vala"
+       return result;
+#line 2158 "contacts-store.c"
+}
+
+gboolean
+contacts_store_get_is_prepared (ContactsStore* self)
+{
+       gboolean result;
+       FolksIndividualAggregator* _tmp0_;
+       gboolean _tmp1_;
+       gboolean _tmp2_;
+#line 42 "../src/contacts-store.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 42 "../src/contacts-store.vala"
+       _tmp0_ = self->priv->_aggregator;
+#line 42 "../src/contacts-store.vala"
+       _tmp1_ = folks_individual_aggregator_get_is_prepared (_tmp0_);
+#line 42 "../src/contacts-store.vala"
+       _tmp2_ = _tmp1_;
+#line 42 "../src/contacts-store.vala"
+       result = _tmp2_;
+#line 42 "../src/contacts-store.vala"
+       return result;
+#line 2180 "contacts-store.c"
+}
+
+static gboolean
+__lambda9_ (ContactsStore* self)
+{
+       gboolean result = FALSE;
+#line 133 "../src/contacts-store.vala"
+       g_signal_emit (self, contacts_store_signals[CONTACTS_STORE_QUIESCENT_SIGNAL], 0);
+#line 134 "../src/contacts-store.vala"
+       result = FALSE;
+#line 134 "../src/contacts-store.vala"
+       return result;
+#line 2193 "contacts-store.c"
+}
+
+static gboolean
+___lambda9__gsource_func (gpointer self)
+{
+       gboolean result;
+       result = __lambda9_ ((ContactsStore*) self);
+#line 132 "../src/contacts-store.vala"
+       return result;
+#line 2203 "contacts-store.c"
+}
+
+static void
+_contacts_store___lambda8_ (ContactsStore* self,
+                            GObject* obj,
+                            GParamSpec* pspec)
+{
+#line 130 "../src/contacts-store.vala"
+       g_return_if_fail (obj != NULL);
+#line 130 "../src/contacts-store.vala"
+       g_return_if_fail (pspec != NULL);
+#line 132 "../src/contacts-store.vala"
+       g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda9__gsource_func, g_object_ref (self), 
g_object_unref);
+#line 2217 "contacts-store.c"
+}
+
+static void
+__contacts_store___lambda8__g_object_notify (GObject* _sender,
+                                             GParamSpec* pspec,
+                                             gpointer self)
+{
+#line 130 "../src/contacts-store.vala"
+       _contacts_store___lambda8_ ((ContactsStore*) self, _sender, pspec);
+#line 2227 "contacts-store.c"
+}
+
+static gboolean
+__lambda11_ (ContactsStore* self)
+{
+       gboolean result = FALSE;
+#line 140 "../src/contacts-store.vala"
+       g_signal_emit (self, contacts_store_signals[CONTACTS_STORE_PREPARED_SIGNAL], 0);
+#line 141 "../src/contacts-store.vala"
+       result = FALSE;
+#line 141 "../src/contacts-store.vala"
+       return result;
+#line 2240 "contacts-store.c"
+}
+
+static gboolean
+___lambda11__gsource_func (gpointer self)
+{
+       gboolean result;
+       result = __lambda11_ ((ContactsStore*) self);
+#line 139 "../src/contacts-store.vala"
+       return result;
+#line 2250 "contacts-store.c"
+}
+
+static void
+_contacts_store___lambda10_ (ContactsStore* self,
+                             GObject* obj,
+                             GParamSpec* pspec)
+{
+#line 138 "../src/contacts-store.vala"
+       g_return_if_fail (obj != NULL);
+#line 138 "../src/contacts-store.vala"
+       g_return_if_fail (pspec != NULL);
+#line 139 "../src/contacts-store.vala"
+       g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda11__gsource_func, g_object_ref (self), 
g_object_unref);
+#line 2264 "contacts-store.c"
+}
+
+static void
+__contacts_store___lambda10__g_object_notify (GObject* _sender,
+                                              GParamSpec* pspec,
+                                              gpointer self)
+{
+#line 138 "../src/contacts-store.vala"
+       _contacts_store___lambda10_ ((ContactsStore*) self, _sender, pspec);
+#line 2274 "contacts-store.c"
+}
+
+static void
+_contacts_store_on_individuals_changed_detailed_folks_individual_aggregator_individuals_changed_detailed 
(FolksIndividualAggregator* _sender,
+                                                                                                          
GeeMultiMap* changes,
+                                                                                                          
gpointer self)
+{
+#line 145 "../src/contacts-store.vala"
+       contacts_store_on_individuals_changed_detailed ((ContactsStore*) self, changes);
+#line 2284 "contacts-store.c"
+}
+
+static GObject *
+contacts_store_constructor (GType type,
+                            guint n_construct_properties,
+                            GObjectConstructParam * construct_properties)
+{
+       GObject * obj;
+       GObjectClass * parent_class;
+       ContactsStore * self;
+       GeeHashMultiMap* _tmp0_;
+       FolksBackendStore* backend_store = NULL;
+       FolksBackendStore* _tmp1_;
+       FolksBackendStore* _tmp2_;
+       FolksIndividualAggregator* _tmp3_;
+       FolksIndividualAggregator* _tmp4_;
+       FolksIndividualAggregator* _tmp5_;
+       FolksIndividualAggregator* _tmp6_;
+       FolksIndividualAggregator* _tmp7_;
+       FolksIndividualAggregator* _tmp8_;
+#line 123 "../src/contacts-store.vala"
+       parent_class = G_OBJECT_CLASS (contacts_store_parent_class);
+#line 123 "../src/contacts-store.vala"
+       obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+#line 123 "../src/contacts-store.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_STORE, ContactsStore);
+#line 124 "../src/contacts-store.vala"
+       _tmp0_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, 
G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL, NULL, NULL);
+#line 124 "../src/contacts-store.vala"
+       _g_object_unref0 (self->dont_suggest_link);
+#line 124 "../src/contacts-store.vala"
+       self->dont_suggest_link = _tmp0_;
+#line 125 "../src/contacts-store.vala"
+       contacts_store_read_dont_suggest_db (self);
+#line 127 "../src/contacts-store.vala"
+       _tmp1_ = folks_backend_store_dup ();
+#line 127 "../src/contacts-store.vala"
+       backend_store = _tmp1_;
+#line 129 "../src/contacts-store.vala"
+       _tmp2_ = backend_store;
+#line 129 "../src/contacts-store.vala"
+       _tmp3_ = folks_individual_aggregator_dup_with_backend_store (_tmp2_);
+#line 129 "../src/contacts-store.vala"
+       _tmp4_ = _tmp3_;
+#line 129 "../src/contacts-store.vala"
+       contacts_store_set_aggregator (self, _tmp4_);
+#line 129 "../src/contacts-store.vala"
+       _g_object_unref0 (_tmp4_);
+#line 130 "../src/contacts-store.vala"
+       _tmp5_ = self->priv->_aggregator;
+#line 130 "../src/contacts-store.vala"
+       g_signal_connect_object ((GObject*) _tmp5_, "notify::is-quiescent", (GCallback) 
__contacts_store___lambda8__g_object_notify, self, 0);
+#line 138 "../src/contacts-store.vala"
+       _tmp6_ = self->priv->_aggregator;
+#line 138 "../src/contacts-store.vala"
+       g_signal_connect_object ((GObject*) _tmp6_, "notify::is-prepared", (GCallback) 
__contacts_store___lambda10__g_object_notify, self, 0);
+#line 145 "../src/contacts-store.vala"
+       _tmp7_ = self->priv->_aggregator;
+#line 145 "../src/contacts-store.vala"
+       g_signal_connect_object (_tmp7_, "individuals-changed-detailed", (GCallback) 
_contacts_store_on_individuals_changed_detailed_folks_individual_aggregator_individuals_changed_detailed, 
self, 0);
+#line 146 "../src/contacts-store.vala"
+       _tmp8_ = self->priv->_aggregator;
+#line 146 "../src/contacts-store.vala"
+       folks_individual_aggregator_prepare (_tmp8_, NULL, NULL);
+#line 123 "../src/contacts-store.vala"
+       _g_object_unref0 (backend_store);
+#line 123 "../src/contacts-store.vala"
+       return obj;
+#line 2353 "contacts-store.c"
+}
+
+static void
+contacts_store_class_init (ContactsStoreClass * klass,
+                           gpointer klass_data)
+{
+#line 22 "../src/contacts-store.vala"
+       contacts_store_parent_class = g_type_class_peek_parent (klass);
+#line 22 "../src/contacts-store.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsStore_private_offset);
+#line 22 "../src/contacts-store.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_store_get_property;
+#line 22 "../src/contacts-store.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_store_set_property;
+#line 22 "../src/contacts-store.vala"
+       G_OBJECT_CLASS (klass)->constructor = contacts_store_constructor;
+#line 22 "../src/contacts-store.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_store_finalize;
+#line 22 "../src/contacts-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_STORE_AGGREGATOR_PROPERTY, 
contacts_store_properties[CONTACTS_STORE_AGGREGATOR_PROPERTY] = g_param_spec_object ("aggregator", 
"aggregator", "aggregator", FOLKS_TYPE_INDIVIDUAL_AGGREGATOR, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 22 "../src/contacts-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_STORE_BACKEND_STORE_PROPERTY, 
contacts_store_properties[CONTACTS_STORE_BACKEND_STORE_PROPERTY] = g_param_spec_object ("backend-store", 
"backend-store", "backend-store", FOLKS_TYPE_BACKEND_STORE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 22 "../src/contacts-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_STORE_IS_QUIESCENT_PROPERTY, 
contacts_store_properties[CONTACTS_STORE_IS_QUIESCENT_PROPERTY] = g_param_spec_boolean ("is-quiescent", 
"is-quiescent", "is-quiescent", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 22 "../src/contacts-store.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_STORE_IS_PREPARED_PROPERTY, 
contacts_store_properties[CONTACTS_STORE_IS_PREPARED_PROPERTY] = g_param_spec_boolean ("is-prepared", 
"is-prepared", "is-prepared", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 22 "../src/contacts-store.vala"
+       contacts_store_signals[CONTACTS_STORE_ADDED_SIGNAL] = g_signal_new ("added", CONTACTS_TYPE_STORE, 
G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, FOLKS_TYPE_INDIVIDUAL);
+#line 22 "../src/contacts-store.vala"
+       contacts_store_signals[CONTACTS_STORE_REMOVED_SIGNAL] = g_signal_new ("removed", CONTACTS_TYPE_STORE, 
G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, FOLKS_TYPE_INDIVIDUAL);
+#line 22 "../src/contacts-store.vala"
+       contacts_store_signals[CONTACTS_STORE_QUIESCENT_SIGNAL] = g_signal_new ("quiescent", 
CONTACTS_TYPE_STORE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+#line 22 "../src/contacts-store.vala"
+       contacts_store_signals[CONTACTS_STORE_PREPARED_SIGNAL] = g_signal_new ("prepared", 
CONTACTS_TYPE_STORE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+#line 2388 "contacts-store.c"
+}
+
+static void
+contacts_store_instance_init (ContactsStore * self,
+                              gpointer klass)
+{
+#line 22 "../src/contacts-store.vala"
+       self->priv = contacts_store_get_instance_private (self);
+#line 2397 "contacts-store.c"
+}
+
+static void
+contacts_store_finalize (GObject * obj)
+{
+       ContactsStore * self;
+#line 22 "../src/contacts-store.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_STORE, ContactsStore);
+#line 28 "../src/contacts-store.vala"
+       _g_object_unref0 (self->priv->_aggregator);
+#line 31 "../src/contacts-store.vala"
+       _g_object_unref0 (self->dont_suggest_link);
+#line 22 "../src/contacts-store.vala"
+       G_OBJECT_CLASS (contacts_store_parent_class)->finalize (obj);
+#line 2412 "contacts-store.c"
+}
+
+static GType
+contacts_store_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsStoreClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_store_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof 
(ContactsStore), 0, (GInstanceInitFunc) contacts_store_instance_init, NULL };
+       GType contacts_store_type_id;
+       contacts_store_type_id = g_type_register_static (G_TYPE_OBJECT, "ContactsStore", &g_define_type_info, 
0);
+       ContactsStore_private_offset = g_type_add_instance_private (contacts_store_type_id, sizeof 
(ContactsStorePrivate));
+       return contacts_store_type_id;
+}
+
+GType
+contacts_store_get_type (void)
+{
+       static volatile gsize contacts_store_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_store_type_id__volatile)) {
+               GType contacts_store_type_id;
+               contacts_store_type_id = contacts_store_get_type_once ();
+               g_once_init_leave (&contacts_store_type_id__volatile, contacts_store_type_id);
+       }
+       return contacts_store_type_id__volatile;
+}
+
+static void
+_vala_contacts_store_get_property (GObject * object,
+                                   guint property_id,
+                                   GValue * value,
+                                   GParamSpec * pspec)
+{
+       ContactsStore * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_STORE, ContactsStore);
+#line 22 "../src/contacts-store.vala"
+       switch (property_id) {
+#line 22 "../src/contacts-store.vala"
+               case CONTACTS_STORE_AGGREGATOR_PROPERTY:
+#line 22 "../src/contacts-store.vala"
+               g_value_set_object (value, contacts_store_get_aggregator (self));
+#line 22 "../src/contacts-store.vala"
+               break;
+#line 22 "../src/contacts-store.vala"
+               case CONTACTS_STORE_BACKEND_STORE_PROPERTY:
+#line 22 "../src/contacts-store.vala"
+               g_value_set_object (value, contacts_store_get_backend_store (self));
+#line 22 "../src/contacts-store.vala"
+               break;
+#line 22 "../src/contacts-store.vala"
+               case CONTACTS_STORE_IS_QUIESCENT_PROPERTY:
+#line 22 "../src/contacts-store.vala"
+               g_value_set_boolean (value, contacts_store_get_is_quiescent (self));
+#line 22 "../src/contacts-store.vala"
+               break;
+#line 22 "../src/contacts-store.vala"
+               case CONTACTS_STORE_IS_PREPARED_PROPERTY:
+#line 22 "../src/contacts-store.vala"
+               g_value_set_boolean (value, contacts_store_get_is_prepared (self));
+#line 22 "../src/contacts-store.vala"
+               break;
+#line 2471 "contacts-store.c"
+               default:
+#line 22 "../src/contacts-store.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 22 "../src/contacts-store.vala"
+               break;
+#line 2477 "contacts-store.c"
+       }
+}
+
+static void
+_vala_contacts_store_set_property (GObject * object,
+                                   guint property_id,
+                                   const GValue * value,
+                                   GParamSpec * pspec)
+{
+       ContactsStore * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_STORE, ContactsStore);
+#line 22 "../src/contacts-store.vala"
+       switch (property_id) {
+#line 22 "../src/contacts-store.vala"
+               case CONTACTS_STORE_AGGREGATOR_PROPERTY:
+#line 22 "../src/contacts-store.vala"
+               contacts_store_set_aggregator (self, g_value_get_object (value));
+#line 22 "../src/contacts-store.vala"
+               break;
+#line 2497 "contacts-store.c"
+               default:
+#line 22 "../src/contacts-store.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 22 "../src/contacts-store.vala"
+               break;
+#line 2503 "contacts-store.c"
+       }
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
+static gint
+_vala_array_length (gpointer array)
+{
+       gint length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-type-descriptor.c 
b/_build/src/25a6634@@contacts@sta/contacts-type-descriptor.c
new file mode 100644
index 0000000..3997ec2
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-type-descriptor.c
@@ -0,0 +1,1283 @@
+/* contacts-type-descriptor.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-type-descriptor.vala, do not modify */
+
+/*
+ * Copyright (C) 2018 Niels De Graef <nielsdegraef gmail com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <folks/folks.h>
+#include <gee.h>
+#include <config.h>
+
+#define CONTACTS_TYPE_TYPEDESCRIPTOR (contacts_typedescriptor_get_type ())
+#define CONTACTS_TYPEDESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPEDESCRIPTOR, 
ContactsTypeDescriptor))
+#define CONTACTS_TYPEDESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptorClass))
+#define CONTACTS_IS_TYPEDESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPEDESCRIPTOR))
+#define CONTACTS_IS_TYPEDESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_TYPEDESCRIPTOR))
+#define CONTACTS_TYPEDESCRIPTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptorClass))
+
+typedef struct _ContactsTypeDescriptor ContactsTypeDescriptor;
+typedef struct _ContactsTypeDescriptorClass ContactsTypeDescriptorClass;
+typedef struct _ContactsTypeDescriptorPrivate ContactsTypeDescriptorPrivate;
+typedef enum  {
+       CONTACTS_TYPEDESCRIPTOR_SOURCE_VCARD,
+       CONTACTS_TYPEDESCRIPTOR_SOURCE_OTHER,
+       CONTACTS_TYPEDESCRIPTOR_SOURCE_CUSTOM
+} ContactsTypeDescriptorSource;
+
+#define CONTACTS_TYPEDESCRIPTOR_TYPE_SOURCE (contacts_typedescriptor_source_get_type ())
+enum  {
+       CONTACTS_TYPEDESCRIPTOR_0_PROPERTY,
+       CONTACTS_TYPEDESCRIPTOR_DISPLAY_NAME_PROPERTY,
+       CONTACTS_TYPEDESCRIPTOR_NUM_PROPERTIES
+};
+static GParamSpec* contacts_typedescriptor_properties[CONTACTS_TYPEDESCRIPTOR_NUM_PROPERTIES];
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
+
+struct _ContactsTypeDescriptor {
+       GObject parent_instance;
+       ContactsTypeDescriptorPrivate * priv;
+       gchar* name;
+       gchar** vcard_types;
+       gint vcard_types_length1;
+       GtkTreeIter iter;
+};
+
+struct _ContactsTypeDescriptorClass {
+       GObjectClass parent_class;
+};
+
+struct _ContactsTypeDescriptorPrivate {
+       ContactsTypeDescriptorSource source;
+};
+
+static gint ContactsTypeDescriptor_private_offset;
+static gpointer contacts_typedescriptor_parent_class = NULL;
+
+GType contacts_typedescriptor_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeDescriptor, g_object_unref)
+static GType contacts_typedescriptor_source_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+static gchar* contacts_typedescriptor_source_to_string (ContactsTypeDescriptorSource self);
+#define CONTACTS_TYPEDESCRIPTOR_X_GOOGLE_LABEL "x-google-label"
+ContactsTypeDescriptor* contacts_typedescriptor_new_vcard (const gchar* untranslated_name,
+                                                           gchar** types,
+                                                           gint types_length1);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_vcard (GType object_type,
+                                                                 const gchar* untranslated_name,
+                                                                 gchar** types,
+                                                                 gint types_length1);
+static gchar** _vala_array_dup1 (gchar** self,
+                          gint length);
+ContactsTypeDescriptor* contacts_typedescriptor_new_custom (const gchar* name);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_custom (GType object_type,
+                                                                  const gchar* name);
+ContactsTypeDescriptor* contacts_typedescriptor_new_other (void);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_other (GType object_type);
+gboolean contacts_typedescriptor_is_custom (ContactsTypeDescriptor* self);
+void contacts_typedescriptor_save_to_field_details (ContactsTypeDescriptor* self,
+                                                    FolksAbstractFieldDetails* details);
+gchar* contacts_typedescriptor_to_string (ContactsTypeDescriptor* self);
+const gchar* contacts_typedescriptor_get_display_name (ContactsTypeDescriptor* self);
+ContactsTypeDescriptor* contacts_typedescriptor_new (void);
+ContactsTypeDescriptor* contacts_typedescriptor_construct (GType object_type);
+static void contacts_typedescriptor_finalize (GObject * obj);
+static GType contacts_typedescriptor_get_type_once (void);
+static void _vala_contacts_typedescriptor_get_property (GObject * object,
+                                                 guint property_id,
+                                                 GValue * value,
+                                                 GParamSpec * pspec);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+static inline gpointer
+contacts_typedescriptor_get_instance_private (ContactsTypeDescriptor* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsTypeDescriptor_private_offset);
+}
+
+static gchar*
+contacts_typedescriptor_source_to_string (ContactsTypeDescriptorSource self)
+{
+       gchar* _tmp3_;
+       gchar* result = NULL;
+#line 35 "../src/contacts-type-descriptor.vala"
+       switch (self) {
+#line 35 "../src/contacts-type-descriptor.vala"
+               case CONTACTS_TYPEDESCRIPTOR_SOURCE_VCARD:
+#line 133 "contacts-type-descriptor.c"
+               {
+                       gchar* _tmp0_;
+#line 37 "../src/contacts-type-descriptor.vala"
+                       _tmp0_ = g_strdup ("vcard");
+#line 37 "../src/contacts-type-descriptor.vala"
+                       result = _tmp0_;
+#line 37 "../src/contacts-type-descriptor.vala"
+                       return result;
+#line 142 "contacts-type-descriptor.c"
+               }
+#line 35 "../src/contacts-type-descriptor.vala"
+               case CONTACTS_TYPEDESCRIPTOR_SOURCE_OTHER:
+#line 146 "contacts-type-descriptor.c"
+               {
+                       gchar* _tmp1_;
+#line 39 "../src/contacts-type-descriptor.vala"
+                       _tmp1_ = g_strdup ("other");
+#line 39 "../src/contacts-type-descriptor.vala"
+                       result = _tmp1_;
+#line 39 "../src/contacts-type-descriptor.vala"
+                       return result;
+#line 155 "contacts-type-descriptor.c"
+               }
+#line 35 "../src/contacts-type-descriptor.vala"
+               case CONTACTS_TYPEDESCRIPTOR_SOURCE_CUSTOM:
+#line 159 "contacts-type-descriptor.c"
+               {
+                       gchar* _tmp2_;
+#line 41 "../src/contacts-type-descriptor.vala"
+                       _tmp2_ = g_strdup ("custom");
+#line 41 "../src/contacts-type-descriptor.vala"
+                       result = _tmp2_;
+#line 41 "../src/contacts-type-descriptor.vala"
+                       return result;
+#line 168 "contacts-type-descriptor.c"
+               }
+               default:
+#line 35 "../src/contacts-type-descriptor.vala"
+               break;
+#line 173 "contacts-type-descriptor.c"
+       }
+#line 43 "../src/contacts-type-descriptor.vala"
+       _tmp3_ = g_strdup ("INVALID");
+#line 43 "../src/contacts-type-descriptor.vala"
+       result = _tmp3_;
+#line 43 "../src/contacts-type-descriptor.vala"
+       return result;
+#line 181 "contacts-type-descriptor.c"
+}
+
+static GType
+contacts_typedescriptor_source_get_type_once (void)
+{
+       static const GEnumValue values[] = {{CONTACTS_TYPEDESCRIPTOR_SOURCE_VCARD, 
"CONTACTS_TYPEDESCRIPTOR_SOURCE_VCARD", "vcard"}, {CONTACTS_TYPEDESCRIPTOR_SOURCE_OTHER, 
"CONTACTS_TYPEDESCRIPTOR_SOURCE_OTHER", "other"}, {CONTACTS_TYPEDESCRIPTOR_SOURCE_CUSTOM, 
"CONTACTS_TYPEDESCRIPTOR_SOURCE_CUSTOM", "custom"}, {0, NULL, NULL}};
+       GType contacts_typedescriptor_source_type_id;
+       contacts_typedescriptor_source_type_id = g_enum_register_static ("ContactsTypeDescriptorSource", 
values);
+       return contacts_typedescriptor_source_type_id;
+}
+
+static GType
+contacts_typedescriptor_source_get_type (void)
+{
+       static volatile gsize contacts_typedescriptor_source_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_typedescriptor_source_type_id__volatile)) {
+               GType contacts_typedescriptor_source_type_id;
+               contacts_typedescriptor_source_type_id = contacts_typedescriptor_source_get_type_once ();
+               g_once_init_leave (&contacts_typedescriptor_source_type_id__volatile, 
contacts_typedescriptor_source_type_id);
+       }
+       return contacts_typedescriptor_source_type_id__volatile;
+}
+
+/**
+   * Creates a TypeDescriptor which is mappable to the given VCard Type strings.
+   */
+static gchar**
+_vala_array_dup1 (gchar** self,
+                  gint length)
+{
+       gchar** result;
+       gint i;
+#line 69 "../src/contacts-type-descriptor.vala"
+       result = g_new0 (gchar*, length + 1);
+#line 69 "../src/contacts-type-descriptor.vala"
+       for (i = 0; i < length; i++) {
+#line 218 "contacts-type-descriptor.c"
+               gchar* _tmp0_;
+#line 69 "../src/contacts-type-descriptor.vala"
+               _tmp0_ = g_strdup (self[i]);
+#line 69 "../src/contacts-type-descriptor.vala"
+               result[i] = _tmp0_;
+#line 224 "contacts-type-descriptor.c"
+       }
+#line 69 "../src/contacts-type-descriptor.vala"
+       return result;
+#line 228 "contacts-type-descriptor.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typedescriptor_construct_vcard (GType object_type,
+                                         const gchar* untranslated_name,
+                                         gchar** types,
+                                         gint types_length1)
+{
+       ContactsTypeDescriptor * self = NULL;
+       gchar* _tmp0_;
+       gchar** _tmp1_;
+       gint _tmp1__length1;
+#line 66 "../src/contacts-type-descriptor.vala"
+       g_return_val_if_fail (untranslated_name != NULL, NULL);
+#line 66 "../src/contacts-type-descriptor.vala"
+       self = (ContactsTypeDescriptor*) g_object_new (object_type, NULL);
+#line 67 "../src/contacts-type-descriptor.vala"
+       self->priv->source = CONTACTS_TYPEDESCRIPTOR_SOURCE_VCARD;
+#line 68 "../src/contacts-type-descriptor.vala"
+       _tmp0_ = g_strdup (untranslated_name);
+#line 68 "../src/contacts-type-descriptor.vala"
+       _g_free0 (self->name);
+#line 68 "../src/contacts-type-descriptor.vala"
+       self->name = _tmp0_;
+#line 69 "../src/contacts-type-descriptor.vala"
+       _tmp1_ = (types != NULL) ? _vala_array_dup1 (types, types_length1) : ((gpointer) types);
+#line 69 "../src/contacts-type-descriptor.vala"
+       _tmp1__length1 = types_length1;
+#line 69 "../src/contacts-type-descriptor.vala"
+       self->vcard_types = (_vala_array_free (self->vcard_types, self->vcard_types_length1, (GDestroyNotify) 
g_free), NULL);
+#line 69 "../src/contacts-type-descriptor.vala"
+       self->vcard_types = _tmp1_;
+#line 69 "../src/contacts-type-descriptor.vala"
+       self->vcard_types_length1 = _tmp1__length1;
+#line 66 "../src/contacts-type-descriptor.vala"
+       return self;
+#line 265 "contacts-type-descriptor.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typedescriptor_new_vcard (const gchar* untranslated_name,
+                                   gchar** types,
+                                   gint types_length1)
+{
+#line 66 "../src/contacts-type-descriptor.vala"
+       return contacts_typedescriptor_construct_vcard (CONTACTS_TYPE_TYPEDESCRIPTOR, untranslated_name, 
types, types_length1);
+#line 275 "contacts-type-descriptor.c"
+}
+
+/**
+   * Creates a TypeDescriptor with a custom label
+   */
+ContactsTypeDescriptor*
+contacts_typedescriptor_construct_custom (GType object_type,
+                                          const gchar* name)
+{
+       ContactsTypeDescriptor * self = NULL;
+       gchar* _tmp0_;
+#line 75 "../src/contacts-type-descriptor.vala"
+       g_return_val_if_fail (name != NULL, NULL);
+#line 75 "../src/contacts-type-descriptor.vala"
+       self = (ContactsTypeDescriptor*) g_object_new (object_type, NULL);
+#line 76 "../src/contacts-type-descriptor.vala"
+       self->priv->source = CONTACTS_TYPEDESCRIPTOR_SOURCE_CUSTOM;
+#line 77 "../src/contacts-type-descriptor.vala"
+       _tmp0_ = g_strdup (name);
+#line 77 "../src/contacts-type-descriptor.vala"
+       _g_free0 (self->name);
+#line 77 "../src/contacts-type-descriptor.vala"
+       self->name = _tmp0_;
+#line 75 "../src/contacts-type-descriptor.vala"
+       return self;
+#line 301 "contacts-type-descriptor.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typedescriptor_new_custom (const gchar* name)
+{
+#line 75 "../src/contacts-type-descriptor.vala"
+       return contacts_typedescriptor_construct_custom (CONTACTS_TYPE_TYPEDESCRIPTOR, name);
+#line 309 "contacts-type-descriptor.c"
+}
+
+/**
+   * Creates a TypeDescriptor which represents all non-representable types.
+   */
+ContactsTypeDescriptor*
+contacts_typedescriptor_construct_other (GType object_type)
+{
+       ContactsTypeDescriptor * self = NULL;
+       gchar* _tmp0_;
+#line 83 "../src/contacts-type-descriptor.vala"
+       self = (ContactsTypeDescriptor*) g_object_new (object_type, NULL);
+#line 84 "../src/contacts-type-descriptor.vala"
+       self->priv->source = CONTACTS_TYPEDESCRIPTOR_SOURCE_OTHER;
+#line 85 "../src/contacts-type-descriptor.vala"
+       _tmp0_ = g_strdup (N_ ("Other"));
+#line 85 "../src/contacts-type-descriptor.vala"
+       _g_free0 (self->name);
+#line 85 "../src/contacts-type-descriptor.vala"
+       self->name = _tmp0_;
+#line 83 "../src/contacts-type-descriptor.vala"
+       return self;
+#line 332 "contacts-type-descriptor.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typedescriptor_new_other (void)
+{
+#line 83 "../src/contacts-type-descriptor.vala"
+       return contacts_typedescriptor_construct_other (CONTACTS_TYPE_TYPEDESCRIPTOR);
+#line 340 "contacts-type-descriptor.c"
+}
+
+gboolean
+contacts_typedescriptor_is_custom (ContactsTypeDescriptor* self)
+{
+       ContactsTypeDescriptorSource _tmp0_;
+       gboolean result = FALSE;
+#line 88 "../src/contacts-type-descriptor.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 89 "../src/contacts-type-descriptor.vala"
+       _tmp0_ = self->priv->source;
+#line 89 "../src/contacts-type-descriptor.vala"
+       result = _tmp0_ == CONTACTS_TYPEDESCRIPTOR_SOURCE_CUSTOM;
+#line 89 "../src/contacts-type-descriptor.vala"
+       return result;
+#line 356 "contacts-type-descriptor.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 95 "../src/contacts-type-descriptor.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 364 "contacts-type-descriptor.c"
+}
+
+void
+contacts_typedescriptor_save_to_field_details (ContactsTypeDescriptor* self,
+                                               FolksAbstractFieldDetails* details)
+{
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       GeeMultiMap* old_parameters = NULL;
+       GeeMultiMap* _tmp2_;
+       GeeMultiMap* _tmp3_;
+       GeeMultiMap* _tmp4_;
+       GeeHashMultiMap* new_parameters = NULL;
+       GeeHashMultiMap* _tmp5_;
+       gboolean has_pref = FALSE;
+       ContactsTypeDescriptorSource _tmp38_;
+       GeeHashMultiMap* _tmp49_;
+#line 92 "../src/contacts-type-descriptor.vala"
+       g_return_if_fail (self != NULL);
+#line 92 "../src/contacts-type-descriptor.vala"
+       g_return_if_fail (details != NULL);
+#line 93 "../src/contacts-type-descriptor.vala"
+       _tmp0_ = contacts_typedescriptor_to_string (self);
+#line 93 "../src/contacts-type-descriptor.vala"
+       _tmp1_ = _tmp0_;
+#line 93 "../src/contacts-type-descriptor.vala"
+       g_debug ("contacts-type-descriptor.vala:93: Saving type %s", _tmp1_);
+#line 93 "../src/contacts-type-descriptor.vala"
+       _g_free0 (_tmp1_);
+#line 95 "../src/contacts-type-descriptor.vala"
+       _tmp2_ = folks_abstract_field_details_get_parameters (details);
+#line 95 "../src/contacts-type-descriptor.vala"
+       _tmp3_ = _tmp2_;
+#line 95 "../src/contacts-type-descriptor.vala"
+       _tmp4_ = _g_object_ref0 (_tmp3_);
+#line 95 "../src/contacts-type-descriptor.vala"
+       old_parameters = _tmp4_;
+#line 96 "../src/contacts-type-descriptor.vala"
+       _tmp5_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, 
G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL, NULL, NULL);
+#line 96 "../src/contacts-type-descriptor.vala"
+       new_parameters = _tmp5_;
+#line 99 "../src/contacts-type-descriptor.vala"
+       has_pref = FALSE;
+#line 408 "contacts-type-descriptor.c"
+       {
+               GeeIterator* _val_it = NULL;
+               GeeMultiMap* _tmp6_;
+               GeeCollection* _tmp7_;
+               GeeCollection* _tmp8_;
+               GeeIterator* _tmp9_;
+               GeeIterator* _tmp10_;
+#line 100 "../src/contacts-type-descriptor.vala"
+               _tmp6_ = old_parameters;
+#line 100 "../src/contacts-type-descriptor.vala"
+               _tmp7_ = gee_multi_map_get (_tmp6_, "type");
+#line 100 "../src/contacts-type-descriptor.vala"
+               _tmp8_ = _tmp7_;
+#line 100 "../src/contacts-type-descriptor.vala"
+               _tmp9_ = gee_iterable_iterator ((GeeIterable*) _tmp8_);
+#line 100 "../src/contacts-type-descriptor.vala"
+               _tmp10_ = _tmp9_;
+#line 100 "../src/contacts-type-descriptor.vala"
+               _g_object_unref0 (_tmp8_);
+#line 100 "../src/contacts-type-descriptor.vala"
+               _val_it = _tmp10_;
+#line 100 "../src/contacts-type-descriptor.vala"
+               while (TRUE) {
+#line 432 "contacts-type-descriptor.c"
+                       GeeIterator* _tmp11_;
+                       gchar* val = NULL;
+                       GeeIterator* _tmp12_;
+                       gpointer _tmp13_;
+                       const gchar* _tmp14_;
+#line 100 "../src/contacts-type-descriptor.vala"
+                       _tmp11_ = _val_it;
+#line 100 "../src/contacts-type-descriptor.vala"
+                       if (!gee_iterator_next (_tmp11_)) {
+#line 100 "../src/contacts-type-descriptor.vala"
+                               break;
+#line 444 "contacts-type-descriptor.c"
+                       }
+#line 100 "../src/contacts-type-descriptor.vala"
+                       _tmp12_ = _val_it;
+#line 100 "../src/contacts-type-descriptor.vala"
+                       _tmp13_ = gee_iterator_get (_tmp12_);
+#line 100 "../src/contacts-type-descriptor.vala"
+                       val = (gchar*) _tmp13_;
+#line 101 "../src/contacts-type-descriptor.vala"
+                       _tmp14_ = val;
+#line 101 "../src/contacts-type-descriptor.vala"
+                       if (g_ascii_strcasecmp (_tmp14_, "PREF") == 0) {
+#line 102 "../src/contacts-type-descriptor.vala"
+                               has_pref = TRUE;
+#line 103 "../src/contacts-type-descriptor.vala"
+                               _g_free0 (val);
+#line 103 "../src/contacts-type-descriptor.vala"
+                               break;
+#line 462 "contacts-type-descriptor.c"
+                       }
+#line 100 "../src/contacts-type-descriptor.vala"
+                       _g_free0 (val);
+#line 466 "contacts-type-descriptor.c"
+               }
+#line 100 "../src/contacts-type-descriptor.vala"
+               _g_object_unref0 (_val_it);
+#line 470 "contacts-type-descriptor.c"
+       }
+       {
+               GeeIterator* _param_it = NULL;
+               GeeMultiMap* _tmp15_;
+               GeeSet* _tmp16_;
+               GeeSet* _tmp17_;
+               GeeIterator* _tmp18_;
+               GeeIterator* _tmp19_;
+#line 108 "../src/contacts-type-descriptor.vala"
+               _tmp15_ = old_parameters;
+#line 108 "../src/contacts-type-descriptor.vala"
+               _tmp16_ = gee_multi_map_get_keys (_tmp15_);
+#line 108 "../src/contacts-type-descriptor.vala"
+               _tmp17_ = _tmp16_;
+#line 108 "../src/contacts-type-descriptor.vala"
+               _tmp18_ = gee_iterable_iterator ((GeeIterable*) _tmp17_);
+#line 108 "../src/contacts-type-descriptor.vala"
+               _tmp19_ = _tmp18_;
+#line 108 "../src/contacts-type-descriptor.vala"
+               _g_object_unref0 (_tmp17_);
+#line 108 "../src/contacts-type-descriptor.vala"
+               _param_it = _tmp19_;
+#line 108 "../src/contacts-type-descriptor.vala"
+               while (TRUE) {
+#line 495 "contacts-type-descriptor.c"
+                       GeeIterator* _tmp20_;
+                       gchar* param = NULL;
+                       GeeIterator* _tmp21_;
+                       gpointer _tmp22_;
+                       gboolean _tmp23_ = FALSE;
+                       const gchar* _tmp24_;
+#line 108 "../src/contacts-type-descriptor.vala"
+                       _tmp20_ = _param_it;
+#line 108 "../src/contacts-type-descriptor.vala"
+                       if (!gee_iterator_next (_tmp20_)) {
+#line 108 "../src/contacts-type-descriptor.vala"
+                               break;
+#line 508 "contacts-type-descriptor.c"
+                       }
+#line 108 "../src/contacts-type-descriptor.vala"
+                       _tmp21_ = _param_it;
+#line 108 "../src/contacts-type-descriptor.vala"
+                       _tmp22_ = gee_iterator_get (_tmp21_);
+#line 108 "../src/contacts-type-descriptor.vala"
+                       param = (gchar*) _tmp22_;
+#line 109 "../src/contacts-type-descriptor.vala"
+                       _tmp24_ = param;
+#line 109 "../src/contacts-type-descriptor.vala"
+                       if (g_strcmp0 (_tmp24_, "type") != 0) {
+#line 520 "contacts-type-descriptor.c"
+                               const gchar* _tmp25_;
+#line 109 "../src/contacts-type-descriptor.vala"
+                               _tmp25_ = param;
+#line 109 "../src/contacts-type-descriptor.vala"
+                               _tmp23_ = g_strcmp0 (_tmp25_, CONTACTS_TYPEDESCRIPTOR_X_GOOGLE_LABEL) != 0;
+#line 526 "contacts-type-descriptor.c"
+                       } else {
+#line 109 "../src/contacts-type-descriptor.vala"
+                               _tmp23_ = FALSE;
+#line 530 "contacts-type-descriptor.c"
+                       }
+#line 109 "../src/contacts-type-descriptor.vala"
+                       if (_tmp23_) {
+#line 534 "contacts-type-descriptor.c"
+                               {
+                                       GeeIterator* _val_it = NULL;
+                                       GeeMultiMap* _tmp26_;
+                                       const gchar* _tmp27_;
+                                       GeeCollection* _tmp28_;
+                                       GeeCollection* _tmp29_;
+                                       GeeIterator* _tmp30_;
+                                       GeeIterator* _tmp31_;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _tmp26_ = old_parameters;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _tmp27_ = param;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _tmp28_ = gee_multi_map_get (_tmp26_, _tmp27_);
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _tmp29_ = _tmp28_;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _tmp30_ = gee_iterable_iterator ((GeeIterable*) _tmp29_);
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _tmp31_ = _tmp30_;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _g_object_unref0 (_tmp29_);
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _val_it = _tmp31_;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       while (TRUE) {
+#line 561 "contacts-type-descriptor.c"
+                                               GeeIterator* _tmp32_;
+                                               gchar* val = NULL;
+                                               GeeIterator* _tmp33_;
+                                               gpointer _tmp34_;
+                                               GeeHashMultiMap* _tmp35_;
+                                               const gchar* _tmp36_;
+                                               const gchar* _tmp37_;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                               _tmp32_ = _val_it;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                               if (!gee_iterator_next (_tmp32_)) {
+#line 110 "../src/contacts-type-descriptor.vala"
+                                                       break;
+#line 575 "contacts-type-descriptor.c"
+                                               }
+#line 110 "../src/contacts-type-descriptor.vala"
+                                               _tmp33_ = _val_it;
+#line 110 "../src/contacts-type-descriptor.vala"
+                                               _tmp34_ = gee_iterator_get (_tmp33_);
+#line 110 "../src/contacts-type-descriptor.vala"
+                                               val = (gchar*) _tmp34_;
+#line 111 "../src/contacts-type-descriptor.vala"
+                                               _tmp35_ = new_parameters;
+#line 111 "../src/contacts-type-descriptor.vala"
+                                               _tmp36_ = param;
+#line 111 "../src/contacts-type-descriptor.vala"
+                                               _tmp37_ = val;
+#line 111 "../src/contacts-type-descriptor.vala"
+                                               gee_multi_map_set ((GeeMultiMap*) _tmp35_, _tmp36_, _tmp37_);
+#line 110 "../src/contacts-type-descriptor.vala"
+                                               _g_free0 (val);
+#line 593 "contacts-type-descriptor.c"
+                                       }
+#line 110 "../src/contacts-type-descriptor.vala"
+                                       _g_object_unref0 (_val_it);
+#line 597 "contacts-type-descriptor.c"
+                               }
+                       }
+#line 108 "../src/contacts-type-descriptor.vala"
+                       _g_free0 (param);
+#line 602 "contacts-type-descriptor.c"
+               }
+#line 108 "../src/contacts-type-descriptor.vala"
+               _g_object_unref0 (_param_it);
+#line 606 "contacts-type-descriptor.c"
+       }
+#line 115 "../src/contacts-type-descriptor.vala"
+       _tmp38_ = self->priv->source;
+#line 115 "../src/contacts-type-descriptor.vala"
+       switch (_tmp38_) {
+#line 115 "../src/contacts-type-descriptor.vala"
+               case CONTACTS_TYPEDESCRIPTOR_SOURCE_VCARD:
+#line 614 "contacts-type-descriptor.c"
+               {
+                       gchar** _tmp39_;
+                       gint _tmp39__length1;
+#line 117 "../src/contacts-type-descriptor.vala"
+                       _tmp39_ = self->vcard_types;
+#line 117 "../src/contacts-type-descriptor.vala"
+                       _tmp39__length1 = self->vcard_types_length1;
+#line 622 "contacts-type-descriptor.c"
+                       {
+                               gchar** type_collection = NULL;
+                               gint type_collection_length1 = 0;
+                               gint _type_collection_size_ = 0;
+                               gint type_it = 0;
+#line 117 "../src/contacts-type-descriptor.vala"
+                               type_collection = _tmp39_;
+#line 117 "../src/contacts-type-descriptor.vala"
+                               type_collection_length1 = _tmp39__length1;
+#line 117 "../src/contacts-type-descriptor.vala"
+                               for (type_it = 0; type_it < type_collection_length1; type_it = type_it + 1) {
+#line 634 "contacts-type-descriptor.c"
+                                       gchar* _tmp40_;
+                                       gchar* type = NULL;
+#line 117 "../src/contacts-type-descriptor.vala"
+                                       _tmp40_ = g_strdup (type_collection[type_it]);
+#line 117 "../src/contacts-type-descriptor.vala"
+                                       type = _tmp40_;
+#line 641 "contacts-type-descriptor.c"
+                                       {
+                                               const gchar* _tmp41_;
+#line 118 "../src/contacts-type-descriptor.vala"
+                                               _tmp41_ = type;
+#line 118 "../src/contacts-type-descriptor.vala"
+                                               if (_tmp41_ != NULL) {
+#line 648 "contacts-type-descriptor.c"
+                                                       GeeHashMultiMap* _tmp42_;
+                                                       const gchar* _tmp43_;
+#line 119 "../src/contacts-type-descriptor.vala"
+                                                       _tmp42_ = new_parameters;
+#line 119 "../src/contacts-type-descriptor.vala"
+                                                       _tmp43_ = type;
+#line 119 "../src/contacts-type-descriptor.vala"
+                                                       gee_multi_map_set ((GeeMultiMap*) _tmp42_, "type", 
_tmp43_);
+#line 657 "contacts-type-descriptor.c"
+                                               }
+#line 117 "../src/contacts-type-descriptor.vala"
+                                               _g_free0 (type);
+#line 661 "contacts-type-descriptor.c"
+                                       }
+                               }
+                       }
+#line 120 "../src/contacts-type-descriptor.vala"
+                       break;
+#line 667 "contacts-type-descriptor.c"
+               }
+#line 115 "../src/contacts-type-descriptor.vala"
+               case CONTACTS_TYPEDESCRIPTOR_SOURCE_OTHER:
+#line 671 "contacts-type-descriptor.c"
+               {
+                       GeeHashMultiMap* _tmp44_;
+#line 122 "../src/contacts-type-descriptor.vala"
+                       _tmp44_ = new_parameters;
+#line 122 "../src/contacts-type-descriptor.vala"
+                       gee_multi_map_set ((GeeMultiMap*) _tmp44_, "type", "OTHER");
+#line 123 "../src/contacts-type-descriptor.vala"
+                       break;
+#line 680 "contacts-type-descriptor.c"
+               }
+#line 115 "../src/contacts-type-descriptor.vala"
+               case CONTACTS_TYPEDESCRIPTOR_SOURCE_CUSTOM:
+#line 684 "contacts-type-descriptor.c"
+               {
+                       GeeHashMultiMap* _tmp45_;
+                       GeeHashMultiMap* _tmp46_;
+                       const gchar* _tmp47_;
+#line 125 "../src/contacts-type-descriptor.vala"
+                       _tmp45_ = new_parameters;
+#line 125 "../src/contacts-type-descriptor.vala"
+                       gee_multi_map_set ((GeeMultiMap*) _tmp45_, "type", "OTHER");
+#line 126 "../src/contacts-type-descriptor.vala"
+                       _tmp46_ = new_parameters;
+#line 126 "../src/contacts-type-descriptor.vala"
+                       _tmp47_ = self->name;
+#line 126 "../src/contacts-type-descriptor.vala"
+                       gee_multi_map_set ((GeeMultiMap*) _tmp46_, CONTACTS_TYPEDESCRIPTOR_X_GOOGLE_LABEL, 
_tmp47_);
+#line 127 "../src/contacts-type-descriptor.vala"
+                       break;
+#line 701 "contacts-type-descriptor.c"
+               }
+               default:
+#line 115 "../src/contacts-type-descriptor.vala"
+               break;
+#line 706 "contacts-type-descriptor.c"
+       }
+#line 130 "../src/contacts-type-descriptor.vala"
+       if (has_pref) {
+#line 710 "contacts-type-descriptor.c"
+               GeeHashMultiMap* _tmp48_;
+#line 131 "../src/contacts-type-descriptor.vala"
+               _tmp48_ = new_parameters;
+#line 131 "../src/contacts-type-descriptor.vala"
+               gee_multi_map_set ((GeeMultiMap*) _tmp48_, "type", "PREF");
+#line 716 "contacts-type-descriptor.c"
+       }
+#line 134 "../src/contacts-type-descriptor.vala"
+       _tmp49_ = new_parameters;
+#line 134 "../src/contacts-type-descriptor.vala"
+       folks_abstract_field_details_set_parameters (details, (GeeMultiMap*) _tmp49_);
+#line 92 "../src/contacts-type-descriptor.vala"
+       _g_object_unref0 (new_parameters);
+#line 92 "../src/contacts-type-descriptor.vala"
+       _g_object_unref0 (old_parameters);
+#line 726 "contacts-type-descriptor.c"
+}
+
+/**
+   * Converts the TypeDescriptor to a string. Should only be used for debugging.
+   */
+static gchar*
+_vala_g_strjoinv (const gchar* separator,
+                  gchar** str_array,
+                  gint str_array_length1)
+{
+       gboolean _tmp0_ = FALSE;
+       gchar* result = NULL;
+#line 1200 "glib-2.0.vapi"
+       if (separator == NULL) {
+#line 1201 "glib-2.0.vapi"
+               separator = "";
+#line 743 "contacts-type-descriptor.c"
+       }
+#line 1203 "glib-2.0.vapi"
+       if (str_array != NULL) {
+#line 747 "contacts-type-descriptor.c"
+               gboolean _tmp1_ = FALSE;
+#line 1203 "glib-2.0.vapi"
+               if (str_array_length1 > 0) {
+#line 1203 "glib-2.0.vapi"
+                       _tmp1_ = TRUE;
+#line 753 "contacts-type-descriptor.c"
+               } else {
+                       gboolean _tmp2_ = FALSE;
+#line 1203 "glib-2.0.vapi"
+                       if (str_array_length1 == -1) {
+#line 758 "contacts-type-descriptor.c"
+                               const gchar* _tmp3_;
+#line 1203 "glib-2.0.vapi"
+                               _tmp3_ = str_array[0];
+#line 1203 "glib-2.0.vapi"
+                               _tmp2_ = _tmp3_ != NULL;
+#line 764 "contacts-type-descriptor.c"
+                       } else {
+#line 1203 "glib-2.0.vapi"
+                               _tmp2_ = FALSE;
+#line 768 "contacts-type-descriptor.c"
+                       }
+#line 1203 "glib-2.0.vapi"
+                       _tmp1_ = _tmp2_;
+#line 772 "contacts-type-descriptor.c"
+               }
+#line 1203 "glib-2.0.vapi"
+               _tmp0_ = _tmp1_;
+#line 776 "contacts-type-descriptor.c"
+       } else {
+#line 1203 "glib-2.0.vapi"
+               _tmp0_ = FALSE;
+#line 780 "contacts-type-descriptor.c"
+       }
+#line 1203 "glib-2.0.vapi"
+       if (_tmp0_) {
+#line 784 "contacts-type-descriptor.c"
+               gint i = 0;
+               gsize len = 0UL;
+               gint _tmp16_;
+               gint _tmp17_;
+               const gchar* res = NULL;
+               void* _tmp18_;
+               void* ptr = NULL;
+               const gchar* _tmp19_;
+               const gchar* _tmp20_;
+               void* _tmp21_;
+               const gchar* _tmp31_;
+#line 1205 "glib-2.0.vapi"
+               len = (gsize) 1;
+#line 798 "contacts-type-descriptor.c"
+               {
+                       gboolean _tmp4_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                       i = 0;
+#line 1206 "glib-2.0.vapi"
+                       _tmp4_ = TRUE;
+#line 1206 "glib-2.0.vapi"
+                       while (TRUE) {
+#line 807 "contacts-type-descriptor.c"
+                               gboolean _tmp6_ = FALSE;
+                               gboolean _tmp7_ = FALSE;
+                               gint _tmp10_ = 0;
+                               const gchar* _tmp11_;
+#line 1206 "glib-2.0.vapi"
+                               if (!_tmp4_) {
+#line 814 "contacts-type-descriptor.c"
+                                       gint _tmp5_;
+#line 1206 "glib-2.0.vapi"
+                                       _tmp5_ = i;
+#line 1206 "glib-2.0.vapi"
+                                       i = _tmp5_ + 1;
+#line 820 "contacts-type-descriptor.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               _tmp4_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                               if (str_array_length1 != -1) {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp7_ = i < str_array_length1;
+#line 828 "contacts-type-descriptor.c"
+                               } else {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp7_ = FALSE;
+#line 832 "contacts-type-descriptor.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               if (_tmp7_) {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp6_ = TRUE;
+#line 838 "contacts-type-descriptor.c"
+                               } else {
+                                       gboolean _tmp8_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                                       if (str_array_length1 == -1) {
+#line 843 "contacts-type-descriptor.c"
+                                               const gchar* _tmp9_;
+#line 1206 "glib-2.0.vapi"
+                                               _tmp9_ = str_array[i];
+#line 1206 "glib-2.0.vapi"
+                                               _tmp8_ = _tmp9_ != NULL;
+#line 849 "contacts-type-descriptor.c"
+                                       } else {
+#line 1206 "glib-2.0.vapi"
+                                               _tmp8_ = FALSE;
+#line 853 "contacts-type-descriptor.c"
+                                       }
+#line 1206 "glib-2.0.vapi"
+                                       _tmp6_ = _tmp8_;
+#line 857 "contacts-type-descriptor.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               if (!_tmp6_) {
+#line 1206 "glib-2.0.vapi"
+                                       break;
+#line 863 "contacts-type-descriptor.c"
+                               }
+#line 1207 "glib-2.0.vapi"
+                               _tmp11_ = str_array[i];
+#line 1207 "glib-2.0.vapi"
+                               if (_tmp11_ != NULL) {
+#line 869 "contacts-type-descriptor.c"
+                                       const gchar* _tmp12_;
+                                       gint _tmp13_;
+                                       gint _tmp14_;
+#line 1207 "glib-2.0.vapi"
+                                       _tmp12_ = str_array[i];
+#line 1207 "glib-2.0.vapi"
+                                       _tmp13_ = strlen ((const gchar*) _tmp12_);
+#line 1207 "glib-2.0.vapi"
+                                       _tmp14_ = _tmp13_;
+#line 1207 "glib-2.0.vapi"
+                                       _tmp10_ = _tmp14_;
+#line 881 "contacts-type-descriptor.c"
+                               } else {
+#line 1207 "glib-2.0.vapi"
+                                       _tmp10_ = 0;
+#line 885 "contacts-type-descriptor.c"
+                               }
+#line 1207 "glib-2.0.vapi"
+                               len += (gsize) _tmp10_;
+#line 889 "contacts-type-descriptor.c"
+                       }
+               }
+#line 1209 "glib-2.0.vapi"
+               if (i == 0) {
+#line 894 "contacts-type-descriptor.c"
+                       gchar* _tmp15_;
+#line 1210 "glib-2.0.vapi"
+                       _tmp15_ = g_strdup ("");
+#line 1210 "glib-2.0.vapi"
+                       result = _tmp15_;
+#line 1210 "glib-2.0.vapi"
+                       return result;
+#line 902 "contacts-type-descriptor.c"
+               }
+#line 1212 "glib-2.0.vapi"
+               str_array_length1 = i;
+#line 1213 "glib-2.0.vapi"
+               _tmp16_ = strlen ((const gchar*) separator);
+#line 1213 "glib-2.0.vapi"
+               _tmp17_ = _tmp16_;
+#line 1213 "glib-2.0.vapi"
+               len += (gsize) (_tmp17_ * (i - 1));
+#line 1215 "glib-2.0.vapi"
+               _tmp18_ = g_malloc (len);
+#line 1215 "glib-2.0.vapi"
+               res = _tmp18_;
+#line 1216 "glib-2.0.vapi"
+               _tmp19_ = res;
+#line 1216 "glib-2.0.vapi"
+               _tmp20_ = str_array[0];
+#line 1216 "glib-2.0.vapi"
+               _tmp21_ = g_stpcpy ((void*) _tmp19_, (const gchar*) _tmp20_);
+#line 1216 "glib-2.0.vapi"
+               ptr = _tmp21_;
+#line 924 "contacts-type-descriptor.c"
+               {
+                       gboolean _tmp22_ = FALSE;
+#line 1217 "glib-2.0.vapi"
+                       i = 1;
+#line 1217 "glib-2.0.vapi"
+                       _tmp22_ = TRUE;
+#line 1217 "glib-2.0.vapi"
+                       while (TRUE) {
+#line 933 "contacts-type-descriptor.c"
+                               void* _tmp24_;
+                               void* _tmp25_;
+                               const gchar* _tmp26_ = NULL;
+                               const gchar* _tmp27_;
+                               void* _tmp29_;
+                               void* _tmp30_;
+#line 1217 "glib-2.0.vapi"
+                               if (!_tmp22_) {
+#line 942 "contacts-type-descriptor.c"
+                                       gint _tmp23_;
+#line 1217 "glib-2.0.vapi"
+                                       _tmp23_ = i;
+#line 1217 "glib-2.0.vapi"
+                                       i = _tmp23_ + 1;
+#line 948 "contacts-type-descriptor.c"
+                               }
+#line 1217 "glib-2.0.vapi"
+                               _tmp22_ = FALSE;
+#line 1217 "glib-2.0.vapi"
+                               if (!(i < str_array_length1)) {
+#line 1217 "glib-2.0.vapi"
+                                       break;
+#line 956 "contacts-type-descriptor.c"
+                               }
+#line 1218 "glib-2.0.vapi"
+                               _tmp24_ = ptr;
+#line 1218 "glib-2.0.vapi"
+                               _tmp25_ = g_stpcpy (_tmp24_, (const gchar*) separator);
+#line 1218 "glib-2.0.vapi"
+                               ptr = _tmp25_;
+#line 1219 "glib-2.0.vapi"
+                               _tmp27_ = str_array[i];
+#line 1219 "glib-2.0.vapi"
+                               if (_tmp27_ != NULL) {
+#line 968 "contacts-type-descriptor.c"
+                                       const gchar* _tmp28_;
+#line 1219 "glib-2.0.vapi"
+                                       _tmp28_ = str_array[i];
+#line 1219 "glib-2.0.vapi"
+                                       _tmp26_ = (const gchar*) _tmp28_;
+#line 974 "contacts-type-descriptor.c"
+                               } else {
+#line 1219 "glib-2.0.vapi"
+                                       _tmp26_ = "";
+#line 978 "contacts-type-descriptor.c"
+                               }
+#line 1219 "glib-2.0.vapi"
+                               _tmp29_ = ptr;
+#line 1219 "glib-2.0.vapi"
+                               _tmp30_ = g_stpcpy (_tmp29_, _tmp26_);
+#line 1219 "glib-2.0.vapi"
+                               ptr = _tmp30_;
+#line 986 "contacts-type-descriptor.c"
+                       }
+               }
+#line 1222 "glib-2.0.vapi"
+               _tmp31_ = res;
+#line 1222 "glib-2.0.vapi"
+               res = NULL;
+#line 1222 "glib-2.0.vapi"
+               result = (gchar*) _tmp31_;
+#line 1222 "glib-2.0.vapi"
+               return result;
+#line 997 "contacts-type-descriptor.c"
+       } else {
+               gchar* _tmp32_;
+#line 1224 "glib-2.0.vapi"
+               _tmp32_ = g_strdup ("");
+#line 1224 "glib-2.0.vapi"
+               result = _tmp32_;
+#line 1224 "glib-2.0.vapi"
+               return result;
+#line 1006 "contacts-type-descriptor.c"
+       }
+}
+
+gchar*
+contacts_typedescriptor_to_string (ContactsTypeDescriptor* self)
+{
+       GString* str = NULL;
+       GString* _tmp0_;
+       GString* _tmp1_;
+       ContactsTypeDescriptorSource _tmp2_;
+       gchar* _tmp3_;
+       gchar* _tmp4_;
+       GString* _tmp5_;
+       const gchar* _tmp6_;
+       GString* _tmp7_;
+       const gchar* _tmp8_;
+       const gchar* _tmp9_;
+       gchar** _tmp10_;
+       gint _tmp10__length1;
+       GString* _tmp16_;
+       const gchar* _tmp17_;
+       gchar* _tmp18_;
+       gchar* result = NULL;
+#line 140 "../src/contacts-type-descriptor.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 141 "../src/contacts-type-descriptor.vala"
+       _tmp0_ = g_string_new ("{ ");
+#line 141 "../src/contacts-type-descriptor.vala"
+       str = _tmp0_;
+#line 142 "../src/contacts-type-descriptor.vala"
+       _tmp1_ = str;
+#line 142 "../src/contacts-type-descriptor.vala"
+       _tmp2_ = self->priv->source;
+#line 142 "../src/contacts-type-descriptor.vala"
+       _tmp3_ = contacts_typedescriptor_source_to_string (_tmp2_);
+#line 142 "../src/contacts-type-descriptor.vala"
+       _tmp4_ = _tmp3_;
+#line 142 "../src/contacts-type-descriptor.vala"
+       g_string_append_printf (_tmp1_, ".source = %s, ", _tmp4_);
+#line 142 "../src/contacts-type-descriptor.vala"
+       _g_free0 (_tmp4_);
+#line 143 "../src/contacts-type-descriptor.vala"
+       _tmp5_ = str;
+#line 143 "../src/contacts-type-descriptor.vala"
+       _tmp6_ = self->name;
+#line 143 "../src/contacts-type-descriptor.vala"
+       g_string_append_printf (_tmp5_, ".name = \"%s\", ", _tmp6_);
+#line 144 "../src/contacts-type-descriptor.vala"
+       _tmp7_ = str;
+#line 144 "../src/contacts-type-descriptor.vala"
+       _tmp8_ = contacts_typedescriptor_get_display_name (self);
+#line 144 "../src/contacts-type-descriptor.vala"
+       _tmp9_ = _tmp8_;
+#line 144 "../src/contacts-type-descriptor.vala"
+       g_string_append_printf (_tmp7_, ".display_name = \"%s\", ", _tmp9_);
+#line 145 "../src/contacts-type-descriptor.vala"
+       _tmp10_ = self->vcard_types;
+#line 145 "../src/contacts-type-descriptor.vala"
+       _tmp10__length1 = self->vcard_types_length1;
+#line 145 "../src/contacts-type-descriptor.vala"
+       if (_tmp10_ == NULL) {
+#line 1068 "contacts-type-descriptor.c"
+               GString* _tmp11_;
+#line 146 "../src/contacts-type-descriptor.vala"
+               _tmp11_ = str;
+#line 146 "../src/contacts-type-descriptor.vala"
+               g_string_append_printf (_tmp11_, ".vcard_types = NULL }");
+#line 1074 "contacts-type-descriptor.c"
+       } else {
+               GString* _tmp12_;
+               gchar** _tmp13_;
+               gint _tmp13__length1;
+               gchar* _tmp14_;
+               gchar* _tmp15_;
+#line 148 "../src/contacts-type-descriptor.vala"
+               _tmp12_ = str;
+#line 148 "../src/contacts-type-descriptor.vala"
+               _tmp13_ = self->vcard_types;
+#line 148 "../src/contacts-type-descriptor.vala"
+               _tmp13__length1 = self->vcard_types_length1;
+#line 148 "../src/contacts-type-descriptor.vala"
+               _tmp14_ = _vala_g_strjoinv (", ", _tmp13_, (gint) _tmp13__length1);
+#line 148 "../src/contacts-type-descriptor.vala"
+               _tmp15_ = _tmp14_;
+#line 148 "../src/contacts-type-descriptor.vala"
+               g_string_append_printf (_tmp12_, ".vcard_types = [ %s }", _tmp15_);
+#line 148 "../src/contacts-type-descriptor.vala"
+               _g_free0 (_tmp15_);
+#line 1095 "contacts-type-descriptor.c"
+       }
+#line 149 "../src/contacts-type-descriptor.vala"
+       _tmp16_ = str;
+#line 149 "../src/contacts-type-descriptor.vala"
+       _tmp17_ = _tmp16_->str;
+#line 149 "../src/contacts-type-descriptor.vala"
+       _tmp18_ = g_strdup (_tmp17_);
+#line 149 "../src/contacts-type-descriptor.vala"
+       result = _tmp18_;
+#line 149 "../src/contacts-type-descriptor.vala"
+       _g_string_free0 (str);
+#line 149 "../src/contacts-type-descriptor.vala"
+       return result;
+#line 1109 "contacts-type-descriptor.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typedescriptor_construct (GType object_type)
+{
+       ContactsTypeDescriptor * self = NULL;
+#line 25 "../src/contacts-type-descriptor.vala"
+       self = (ContactsTypeDescriptor*) g_object_new (object_type, NULL);
+#line 25 "../src/contacts-type-descriptor.vala"
+       return self;
+#line 1120 "contacts-type-descriptor.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typedescriptor_new (void)
+{
+#line 25 "../src/contacts-type-descriptor.vala"
+       return contacts_typedescriptor_construct (CONTACTS_TYPE_TYPEDESCRIPTOR);
+#line 1128 "contacts-type-descriptor.c"
+}
+
+const gchar*
+contacts_typedescriptor_get_display_name (ContactsTypeDescriptor* self)
+{
+       const gchar* result;
+       const gchar* _tmp1_;
+#line 56 "../src/contacts-type-descriptor.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 57 "../src/contacts-type-descriptor.vala"
+       if (contacts_typedescriptor_is_custom (self)) {
+#line 1140 "contacts-type-descriptor.c"
+               const gchar* _tmp0_;
+#line 58 "../src/contacts-type-descriptor.vala"
+               _tmp0_ = self->name;
+#line 58 "../src/contacts-type-descriptor.vala"
+               result = _tmp0_;
+#line 58 "../src/contacts-type-descriptor.vala"
+               return result;
+#line 1148 "contacts-type-descriptor.c"
+       }
+#line 59 "../src/contacts-type-descriptor.vala"
+       _tmp1_ = self->name;
+#line 59 "../src/contacts-type-descriptor.vala"
+       result = g_dgettext (GETTEXT_PACKAGE, _tmp1_);
+#line 59 "../src/contacts-type-descriptor.vala"
+       return result;
+#line 1156 "contacts-type-descriptor.c"
+}
+
+static void
+contacts_typedescriptor_class_init (ContactsTypeDescriptorClass * klass,
+                                    gpointer klass_data)
+{
+#line 25 "../src/contacts-type-descriptor.vala"
+       contacts_typedescriptor_parent_class = g_type_class_peek_parent (klass);
+#line 25 "../src/contacts-type-descriptor.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsTypeDescriptor_private_offset);
+#line 25 "../src/contacts-type-descriptor.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_typedescriptor_get_property;
+#line 25 "../src/contacts-type-descriptor.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_typedescriptor_finalize;
+#line 1171 "contacts-type-descriptor.c"
+       /**
+          * Returns the translated name for this property.
+          */
+#line 25 "../src/contacts-type-descriptor.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_TYPEDESCRIPTOR_DISPLAY_NAME_PROPERTY, 
contacts_typedescriptor_properties[CONTACTS_TYPEDESCRIPTOR_DISPLAY_NAME_PROPERTY] = g_param_spec_string 
("display-name", "display-name", "display-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 1177 "contacts-type-descriptor.c"
+}
+
+static void
+contacts_typedescriptor_instance_init (ContactsTypeDescriptor * self,
+                                       gpointer klass)
+{
+#line 25 "../src/contacts-type-descriptor.vala"
+       self->priv = contacts_typedescriptor_get_instance_private (self);
+#line 48 "../src/contacts-type-descriptor.vala"
+       self->name = NULL;
+#line 49 "../src/contacts-type-descriptor.vala"
+       self->vcard_types = NULL;
+#line 49 "../src/contacts-type-descriptor.vala"
+       self->vcard_types_length1 = 0;
+#line 1192 "contacts-type-descriptor.c"
+}
+
+static void
+contacts_typedescriptor_finalize (GObject * obj)
+{
+       ContactsTypeDescriptor * self;
+#line 25 "../src/contacts-type-descriptor.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptor);
+#line 48 "../src/contacts-type-descriptor.vala"
+       _g_free0 (self->name);
+#line 49 "../src/contacts-type-descriptor.vala"
+       self->vcard_types = (_vala_array_free (self->vcard_types, self->vcard_types_length1, (GDestroyNotify) 
g_free), NULL);
+#line 25 "../src/contacts-type-descriptor.vala"
+       G_OBJECT_CLASS (contacts_typedescriptor_parent_class)->finalize (obj);
+#line 1207 "contacts-type-descriptor.c"
+}
+
+/**
+ * The TypeDescriptor is the internal representation of a property's type.
+ */
+static GType
+contacts_typedescriptor_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsTypeDescriptorClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_typedescriptor_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsTypeDescriptor), 0, (GInstanceInitFunc) contacts_typedescriptor_instance_init, 
NULL };
+       GType contacts_typedescriptor_type_id;
+       contacts_typedescriptor_type_id = g_type_register_static (G_TYPE_OBJECT, "ContactsTypeDescriptor", 
&g_define_type_info, 0);
+       ContactsTypeDescriptor_private_offset = g_type_add_instance_private (contacts_typedescriptor_type_id, 
sizeof (ContactsTypeDescriptorPrivate));
+       return contacts_typedescriptor_type_id;
+}
+
+GType
+contacts_typedescriptor_get_type (void)
+{
+       static volatile gsize contacts_typedescriptor_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_typedescriptor_type_id__volatile)) {
+               GType contacts_typedescriptor_type_id;
+               contacts_typedescriptor_type_id = contacts_typedescriptor_get_type_once ();
+               g_once_init_leave (&contacts_typedescriptor_type_id__volatile, 
contacts_typedescriptor_type_id);
+       }
+       return contacts_typedescriptor_type_id__volatile;
+}
+
+static void
+_vala_contacts_typedescriptor_get_property (GObject * object,
+                                            guint property_id,
+                                            GValue * value,
+                                            GParamSpec * pspec)
+{
+       ContactsTypeDescriptor * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptor);
+#line 25 "../src/contacts-type-descriptor.vala"
+       switch (property_id) {
+#line 25 "../src/contacts-type-descriptor.vala"
+               case CONTACTS_TYPEDESCRIPTOR_DISPLAY_NAME_PROPERTY:
+#line 25 "../src/contacts-type-descriptor.vala"
+               g_value_set_string (value, contacts_typedescriptor_get_display_name (self));
+#line 25 "../src/contacts-type-descriptor.vala"
+               break;
+#line 1251 "contacts-type-descriptor.c"
+               default:
+#line 25 "../src/contacts-type-descriptor.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 25 "../src/contacts-type-descriptor.vala"
+               break;
+#line 1257 "contacts-type-descriptor.c"
+       }
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-typeset.c 
b/_build/src/25a6634@@contacts@sta/contacts-typeset.c
new file mode 100644
index 0000000..01c885a
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-typeset.c
@@ -0,0 +1,1570 @@
+/* contacts-typeset.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-typeset.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gee.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <folks/folks.h>
+
+#define CONTACTS_TYPE_TYPESET (contacts_typeset_get_type ())
+#define CONTACTS_TYPESET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPESET, ContactsTypeSet))
+#define CONTACTS_TYPESET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_TYPESET, 
ContactsTypeSetClass))
+#define CONTACTS_IS_TYPESET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPESET))
+#define CONTACTS_IS_TYPESET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_TYPESET))
+#define CONTACTS_TYPESET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_TYPESET, 
ContactsTypeSetClass))
+
+typedef struct _ContactsTypeSet ContactsTypeSet;
+typedef struct _ContactsTypeSetClass ContactsTypeSetClass;
+typedef struct _ContactsTypeSetPrivate ContactsTypeSetPrivate;
+
+#define CONTACTS_TYPE_TYPEDESCRIPTOR (contacts_typedescriptor_get_type ())
+#define CONTACTS_TYPEDESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPEDESCRIPTOR, 
ContactsTypeDescriptor))
+#define CONTACTS_TYPEDESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptorClass))
+#define CONTACTS_IS_TYPEDESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPEDESCRIPTOR))
+#define CONTACTS_IS_TYPEDESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_TYPEDESCRIPTOR))
+#define CONTACTS_TYPEDESCRIPTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptorClass))
+
+typedef struct _ContactsTypeDescriptor ContactsTypeDescriptor;
+typedef struct _ContactsTypeDescriptorClass ContactsTypeDescriptorClass;
+
+#define CONTACTS_TYPE_VCARD_TYPE_MAPPING (contacts_vcard_type_mapping_get_type ())
+typedef struct _ContactsVcardTypeMapping ContactsVcardTypeMapping;
+enum  {
+       CONTACTS_TYPESET_0_PROPERTY,
+       CONTACTS_TYPESET_CATEGORY_PROPERTY,
+       CONTACTS_TYPESET_STORE_PROPERTY,
+       CONTACTS_TYPESET_NUM_PROPERTIES
+};
+static GParamSpec* contacts_typeset_properties[CONTACTS_TYPESET_NUM_PROPERTIES];
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+typedef struct _ContactsTypeDescriptorPrivate ContactsTypeDescriptorPrivate;
+#define _contacts_vcard_type_mapping_free0(var) ((var == NULL) ? NULL : (var = 
(contacts_vcard_type_mapping_free (var), NULL)))
+
+struct _ContactsTypeSet {
+       GObject parent_instance;
+       ContactsTypeSetPrivate * priv;
+};
+
+struct _ContactsTypeSetClass {
+       GObjectClass parent_class;
+};
+
+struct _ContactsVcardTypeMapping {
+       const gchar* name;
+       const gchar* types[3];
+};
+
+struct _ContactsTypeSetPrivate {
+       gchar* _category;
+       ContactsTypeDescriptor* other_dummy;
+       GeeList* vcard_type_mappings;
+       GtkListStore* _store;
+};
+
+struct _ContactsTypeDescriptor {
+       GObject parent_instance;
+       ContactsTypeDescriptorPrivate * priv;
+       gchar* name;
+       gchar** vcard_types;
+       gint vcard_types_length1;
+       GtkTreeIter iter;
+};
+
+struct _ContactsTypeDescriptorClass {
+       GObjectClass parent_class;
+};
+
+static gint ContactsTypeSet_private_offset;
+static gpointer contacts_typeset_parent_class = NULL;
+static ContactsTypeSet* contacts_typeset__general;
+static ContactsTypeSet* contacts_typeset__general = NULL;
+static ContactsTypeSet* contacts_typeset__email;
+static ContactsTypeSet* contacts_typeset__email = NULL;
+static ContactsTypeSet* contacts_typeset__phone;
+static ContactsTypeSet* contacts_typeset__phone = NULL;
+
+GType contacts_typeset_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeSet, g_object_unref)
+GType contacts_typedescriptor_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeDescriptor, g_object_unref)
+GType contacts_vcard_type_mapping_get_type (void) G_GNUC_CONST;
+ContactsVcardTypeMapping* contacts_vcard_type_mapping_dup (const ContactsVcardTypeMapping* self);
+void contacts_vcard_type_mapping_free (ContactsVcardTypeMapping* self);
+ContactsTypeDescriptor* contacts_typedescriptor_new_other (void);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_other (GType object_type);
+static ContactsTypeSet* contacts_typeset_new (const gchar* category);
+static ContactsTypeSet* contacts_typeset_construct (GType object_type,
+                                             const gchar* category);
+static void contacts_typeset_set_store (ContactsTypeSet* self,
+                                 GtkListStore* value);
+void contacts_typeset_get_iter_for_field_details (ContactsTypeSet* self,
+                                                  FolksAbstractFieldDetails* detail,
+                                                  GtkTreeIter* iter);
+ContactsTypeDescriptor* contacts_typeset_lookup_descriptor_for_field_details (ContactsTypeSet* self,
+                                                                              FolksAbstractFieldDetails* 
detail);
+void contacts_typeset_get_iter_for_vcard_type (ContactsTypeSet* self,
+                                               const gchar* type,
+                                               GtkTreeIter* iter);
+static ContactsTypeDescriptor* contacts_typeset_lookup_descriptor_by_vcard_type (ContactsTypeSet* self,
+                                                                          const gchar* str);
+void contacts_typeset_get_iter_for_custom_label (ContactsTypeSet* self,
+                                                 const gchar* label,
+                                                 GtkTreeIter* iter);
+ContactsTypeDescriptor* contacts_typeset_get_descriptor_for_custom_label (ContactsTypeSet* self,
+                                                                          const gchar* label);
+static ContactsTypeDescriptor* contacts_typeset_create_descriptor_for_custom_label (ContactsTypeSet* self,
+                                                                             const gchar* label);
+gchar* contacts_typeset_format_type (ContactsTypeSet* self,
+                                     FolksAbstractFieldDetails* detail);
+const gchar* contacts_typedescriptor_get_display_name (ContactsTypeDescriptor* self);
+static void contacts_typeset_add_descriptor_to_store (ContactsTypeSet* self,
+                                               ContactsTypeDescriptor* descriptor);
+const gchar* contacts_typeset_get_category (ContactsTypeSet* self);
+gchar* contacts_typedescriptor_to_string (ContactsTypeDescriptor* self);
+gboolean contacts_typedescriptor_is_custom (ContactsTypeDescriptor* self);
+GtkListStore* contacts_typeset_get_store (ContactsTypeSet* self);
+ContactsTypeDescriptor* contacts_typeset_lookup_descriptor_in_store (ContactsTypeSet* self,
+                                                                     const gchar* display_name);
+static void contacts_typeset_add_vcard_mapping (ContactsTypeSet* self,
+                                         ContactsVcardTypeMapping* vcard_mapping);
+ContactsTypeDescriptor* contacts_typedescriptor_new_vcard (const gchar* untranslated_name,
+                                                           gchar** types,
+                                                           gint types_length1);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_vcard (GType object_type,
+                                                                 const gchar* untranslated_name,
+                                                                 gchar** types,
+                                                                 gint types_length1);
+static void contacts_typeset_add_type_other (ContactsTypeSet* self);
+ContactsTypeDescriptor* contacts_typedescriptor_new_custom (const gchar* name);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_custom (GType object_type,
+                                                                  const gchar* name);
+gboolean contacts_vcard_type_mapping_contains (ContactsVcardTypeMapping *self,
+                                               const gchar* type);
+#define CONTACTS_TYPEDESCRIPTOR_X_GOOGLE_LABEL "x-google-label"
+gpointer contacts_utils_get_first (GType t_type,
+                                   GBoxedCopyFunc t_dup_func,
+                                   GDestroyNotify t_destroy_func,
+                                   GeeCollection* collection);
+gboolean contacts_vcard_type_mapping_matches (ContactsVcardTypeMapping *self,
+                                              GeeCollection* types);
+void contacts_typeset_set_category (ContactsTypeSet* self,
+                                    const gchar* value);
+ContactsTypeSet* contacts_typeset_get_general (void);
+ContactsTypeSet* contacts_typeset_get_email (void);
+ContactsTypeSet* contacts_typeset_get_phone (void);
+static void contacts_typeset_finalize (GObject * obj);
+static GType contacts_typeset_get_type_once (void);
+static void _vala_contacts_typeset_get_property (GObject * object,
+                                          guint property_id,
+                                          GValue * value,
+                                          GParamSpec * pspec);
+static void _vala_contacts_typeset_set_property (GObject * object,
+                                          guint property_id,
+                                          const GValue * value,
+                                          GParamSpec * pspec);
+
+static const ContactsVcardTypeMapping CONTACTS_TYPESET_general_data[2] = {{N_ ("Home"), {"HOME"}}, {N_ 
("Work"), {"WORK"}}};
+static const ContactsVcardTypeMapping CONTACTS_TYPESET_email_data[3] = {{N_ ("Personal"), {"PERSONAL"}}, {N_ 
("Home"), {"HOME"}}, {N_ ("Work"), {"WORK"}}};
+static const ContactsVcardTypeMapping CONTACTS_TYPESET_phone_data[18] = {{N_ ("Assistant"), 
{"X-EVOLUTION-ASSISTANT"}}, {N_ ("Work"), {"WORK", "VOICE"}}, {N_ ("Work Fax"), {"WORK", "FAX"}}, {N_ 
("Work"), {"WORK"}}, {N_ ("Callback"), {"X-EVOLUTION-CALLBACK"}}, {N_ ("Car"), {"CAR"}}, {N_ ("Company"), 
{"X-EVOLUTION-COMPANY"}}, {N_ ("Home"), {"HOME", "VOICE"}}, {N_ ("Home Fax"), {"HOME", "FAX"}}, {N_ ("Home"), 
{"HOME"}}, {N_ ("ISDN"), {"ISDN"}}, {N_ ("Mobile"), {"CELL"}}, {N_ ("Other"), {"VOICE"}}, {N_ ("Fax"), 
{"FAX"}}, {N_ ("Pager"), {"PAGER"}}, {N_ ("Radio"), {"X-EVOLUTION-RADIO"}}, {N_ ("Telex"), 
{"X-EVOLUTION-TELEX"}}, {N_ ("TTY"), {"X-EVOLUTION-TTYTDD"}}};
+
+static inline gpointer
+contacts_typeset_get_instance_private (ContactsTypeSet* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsTypeSet_private_offset);
+}
+
+/**
+   * Creates a TypeSet for the given category, e.g. "phones" (used for debugging)
+   */
+static ContactsTypeSet*
+contacts_typeset_construct (GType object_type,
+                            const gchar* category)
+{
+       ContactsTypeSet * self = NULL;
+       GtkListStore* _tmp0_;
+       GtkListStore* _tmp1_;
+#line 48 "../src/contacts-typeset.vala"
+       self = (ContactsTypeSet*) g_object_new (object_type, "category", category, NULL);
+#line 50 "../src/contacts-typeset.vala"
+       _tmp0_ = gtk_list_store_new (2, G_TYPE_STRING, CONTACTS_TYPE_TYPEDESCRIPTOR, -1);
+#line 50 "../src/contacts-typeset.vala"
+       _tmp1_ = _tmp0_;
+#line 50 "../src/contacts-typeset.vala"
+       contacts_typeset_set_store (self, _tmp1_);
+#line 50 "../src/contacts-typeset.vala"
+       _g_object_unref0 (_tmp1_);
+#line 47 "../src/contacts-typeset.vala"
+       return self;
+#line 221 "contacts-typeset.c"
+}
+
+static ContactsTypeSet*
+contacts_typeset_new (const gchar* category)
+{
+#line 47 "../src/contacts-typeset.vala"
+       return contacts_typeset_construct (CONTACTS_TYPE_TYPESET, category);
+#line 229 "contacts-typeset.c"
+}
+
+/**
+   * Returns the TreeIter which corresponds to the type of the given
+   * AbstractFieldDetails.
+   */
+void
+contacts_typeset_get_iter_for_field_details (ContactsTypeSet* self,
+                                             FolksAbstractFieldDetails* detail,
+                                             GtkTreeIter* iter)
+{
+       GtkTreeIter _vala_iter = {0};
+       ContactsTypeDescriptor* d = NULL;
+       ContactsTypeDescriptor* _tmp0_;
+       GtkTreeIter _tmp1_;
+#line 57 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 57 "../src/contacts-typeset.vala"
+       g_return_if_fail (detail != NULL);
+#line 59 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset_lookup_descriptor_for_field_details (self, detail);
+#line 59 "../src/contacts-typeset.vala"
+       d = _tmp0_;
+#line 60 "../src/contacts-typeset.vala"
+       _tmp1_ = d->iter;
+#line 60 "../src/contacts-typeset.vala"
+       _vala_iter = _tmp1_;
+#line 57 "../src/contacts-typeset.vala"
+       _g_object_unref0 (d);
+#line 57 "../src/contacts-typeset.vala"
+       if (iter) {
+#line 57 "../src/contacts-typeset.vala"
+               *iter = _vala_iter;
+#line 263 "contacts-typeset.c"
+       }
+}
+
+/**
+   * Returns the TreeIter which corresponds the best to the given vcard type.
+   * @param type A VCard-like type, such as "HOME" or "CELL".
+   */
+void
+contacts_typeset_get_iter_for_vcard_type (ContactsTypeSet* self,
+                                          const gchar* type,
+                                          GtkTreeIter* iter)
+{
+       GtkTreeIter _vala_iter = {0};
+       ContactsTypeDescriptor* d = NULL;
+       ContactsTypeDescriptor* _tmp0_;
+       GtkTreeIter _tmp1_ = {0};
+       ContactsTypeDescriptor* _tmp2_;
+#line 67 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 67 "../src/contacts-typeset.vala"
+       g_return_if_fail (type != NULL);
+#line 68 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset_lookup_descriptor_by_vcard_type (self, type);
+#line 68 "../src/contacts-typeset.vala"
+       d = _tmp0_;
+#line 69 "../src/contacts-typeset.vala"
+       _tmp2_ = d;
+#line 69 "../src/contacts-typeset.vala"
+       if (_tmp2_ != NULL) {
+#line 293 "contacts-typeset.c"
+               ContactsTypeDescriptor* _tmp3_;
+               GtkTreeIter _tmp4_;
+#line 69 "../src/contacts-typeset.vala"
+               _tmp3_ = d;
+#line 69 "../src/contacts-typeset.vala"
+               _tmp4_ = _tmp3_->iter;
+#line 69 "../src/contacts-typeset.vala"
+               _tmp1_ = _tmp4_;
+#line 302 "contacts-typeset.c"
+       } else {
+               ContactsTypeDescriptor* _tmp5_;
+               GtkTreeIter _tmp6_;
+#line 69 "../src/contacts-typeset.vala"
+               _tmp5_ = self->priv->other_dummy;
+#line 69 "../src/contacts-typeset.vala"
+               _tmp6_ = _tmp5_->iter;
+#line 69 "../src/contacts-typeset.vala"
+               _tmp1_ = _tmp6_;
+#line 312 "contacts-typeset.c"
+       }
+#line 69 "../src/contacts-typeset.vala"
+       _vala_iter = _tmp1_;
+#line 67 "../src/contacts-typeset.vala"
+       if (iter) {
+#line 67 "../src/contacts-typeset.vala"
+               *iter = _vala_iter;
+#line 320 "contacts-typeset.c"
+       }
+}
+
+/**
+   * Returns the TreeIter which corresponds the best to the given custom label.
+   */
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 76 "../src/contacts-typeset.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 332 "contacts-typeset.c"
+}
+
+void
+contacts_typeset_get_iter_for_custom_label (ContactsTypeSet* self,
+                                            const gchar* label,
+                                            GtkTreeIter* iter)
+{
+       GtkTreeIter _vala_iter = {0};
+       ContactsTypeDescriptor* descr = NULL;
+       ContactsTypeDescriptor* _tmp0_;
+       ContactsTypeDescriptor* _tmp1_;
+       ContactsTypeDescriptor* _tmp2_;
+       ContactsTypeDescriptor* _tmp4_;
+       GtkTreeIter _tmp5_;
+#line 75 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 75 "../src/contacts-typeset.vala"
+       g_return_if_fail (label != NULL);
+#line 76 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset_get_descriptor_for_custom_label (self, label);
+#line 76 "../src/contacts-typeset.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 76 "../src/contacts-typeset.vala"
+       descr = _tmp1_;
+#line 77 "../src/contacts-typeset.vala"
+       _tmp2_ = descr;
+#line 77 "../src/contacts-typeset.vala"
+       if (_tmp2_ == NULL) {
+#line 361 "contacts-typeset.c"
+               ContactsTypeDescriptor* _tmp3_;
+#line 78 "../src/contacts-typeset.vala"
+               _tmp3_ = contacts_typeset_create_descriptor_for_custom_label (self, label);
+#line 78 "../src/contacts-typeset.vala"
+               _g_object_unref0 (descr);
+#line 78 "../src/contacts-typeset.vala"
+               descr = _tmp3_;
+#line 369 "contacts-typeset.c"
+       }
+#line 79 "../src/contacts-typeset.vala"
+       _tmp4_ = descr;
+#line 79 "../src/contacts-typeset.vala"
+       _tmp5_ = _tmp4_->iter;
+#line 79 "../src/contacts-typeset.vala"
+       _vala_iter = _tmp5_;
+#line 75 "../src/contacts-typeset.vala"
+       _g_object_unref0 (descr);
+#line 75 "../src/contacts-typeset.vala"
+       if (iter) {
+#line 75 "../src/contacts-typeset.vala"
+               *iter = _vala_iter;
+#line 383 "contacts-typeset.c"
+       }
+}
+
+/**
+   * Returns the display name for the type of the given AbstractFieldDetails.
+   */
+gchar*
+contacts_typeset_format_type (ContactsTypeSet* self,
+                              FolksAbstractFieldDetails* detail)
+{
+       ContactsTypeDescriptor* d = NULL;
+       ContactsTypeDescriptor* _tmp0_;
+       const gchar* _tmp1_;
+       const gchar* _tmp2_;
+       gchar* _tmp3_;
+       gchar* result = NULL;
+#line 85 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 85 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (detail != NULL, NULL);
+#line 86 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset_lookup_descriptor_for_field_details (self, detail);
+#line 86 "../src/contacts-typeset.vala"
+       d = _tmp0_;
+#line 87 "../src/contacts-typeset.vala"
+       _tmp1_ = contacts_typedescriptor_get_display_name (d);
+#line 87 "../src/contacts-typeset.vala"
+       _tmp2_ = _tmp1_;
+#line 87 "../src/contacts-typeset.vala"
+       _tmp3_ = g_strdup (_tmp2_);
+#line 87 "../src/contacts-typeset.vala"
+       result = _tmp3_;
+#line 87 "../src/contacts-typeset.vala"
+       _g_object_unref0 (d);
+#line 87 "../src/contacts-typeset.vala"
+       return result;
+#line 420 "contacts-typeset.c"
+}
+
+/**
+   * Adds the TypeDescriptor to the {@link TypeSet}'s store.
+   * @param descriptor The TypeDescription to be added
+   */
+static void
+contacts_typeset_add_descriptor_to_store (ContactsTypeSet* self,
+                                          ContactsTypeDescriptor* descriptor)
+{
+       const gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       GtkListStore* _tmp7_;
+       GtkTreeIter _tmp8_;
+       const gchar* _tmp9_;
+       const gchar* _tmp10_;
+#line 94 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 94 "../src/contacts-typeset.vala"
+       g_return_if_fail (descriptor != NULL);
+#line 95 "../src/contacts-typeset.vala"
+       _tmp0_ = self->priv->_category;
+#line 95 "../src/contacts-typeset.vala"
+       _tmp1_ = contacts_typedescriptor_to_string (descriptor);
+#line 95 "../src/contacts-typeset.vala"
+       _tmp2_ = _tmp1_;
+#line 95 "../src/contacts-typeset.vala"
+       g_debug ("contacts-typeset.vala:95: %s: Adding type %s to store", _tmp0_, _tmp2_);
+#line 95 "../src/contacts-typeset.vala"
+       _g_free0 (_tmp2_);
+#line 97 "../src/contacts-typeset.vala"
+       if (contacts_typedescriptor_is_custom (descriptor)) {
+#line 454 "contacts-typeset.c"
+               GtkListStore* _tmp3_;
+               GtkTreeIter _tmp4_ = {0};
+#line 98 "../src/contacts-typeset.vala"
+               _tmp3_ = self->priv->_store;
+#line 98 "../src/contacts-typeset.vala"
+               gtk_list_store_insert_before (_tmp3_, &_tmp4_, NULL);
+#line 98 "../src/contacts-typeset.vala"
+               descriptor->iter = _tmp4_;
+#line 463 "contacts-typeset.c"
+       } else {
+               GtkListStore* _tmp5_;
+               GtkTreeIter _tmp6_ = {0};
+#line 100 "../src/contacts-typeset.vala"
+               _tmp5_ = self->priv->_store;
+#line 100 "../src/contacts-typeset.vala"
+               gtk_list_store_append (_tmp5_, &_tmp6_);
+#line 100 "../src/contacts-typeset.vala"
+               descriptor->iter = _tmp6_;
+#line 473 "contacts-typeset.c"
+       }
+#line 102 "../src/contacts-typeset.vala"
+       _tmp7_ = self->priv->_store;
+#line 102 "../src/contacts-typeset.vala"
+       _tmp8_ = descriptor->iter;
+#line 102 "../src/contacts-typeset.vala"
+       _tmp9_ = contacts_typedescriptor_get_display_name (descriptor);
+#line 102 "../src/contacts-typeset.vala"
+       _tmp10_ = _tmp9_;
+#line 102 "../src/contacts-typeset.vala"
+       gtk_list_store_set (_tmp7_, &_tmp8_, 0, _tmp10_, 1, descriptor, -1);
+#line 485 "contacts-typeset.c"
+}
+
+/**
+   * Returns the TypeDescriptor for the given display name in the
+   * {@link TypeSet}'s store, if any.
+   *
+   * @param display_name The translated display name
+   * @return The appropriate TypeDescriptor or null if no match was found.
+   */
+ContactsTypeDescriptor*
+contacts_typeset_lookup_descriptor_in_store (ContactsTypeSet* self,
+                                             const gchar* display_name)
+{
+       GtkTreeIter iter = {0};
+       GtkListStore* _tmp0_;
+       GtkTreeIter _tmp1_ = {0};
+       gboolean _tmp2_;
+       ContactsTypeDescriptor* result = NULL;
+#line 112 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 112 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (display_name != NULL, NULL);
+#line 116 "../src/contacts-typeset.vala"
+       _tmp0_ = self->priv->_store;
+#line 116 "../src/contacts-typeset.vala"
+       _tmp2_ = gtk_tree_model_get_iter_first ((GtkTreeModel*) _tmp0_, &_tmp1_);
+#line 116 "../src/contacts-typeset.vala"
+       iter = _tmp1_;
+#line 116 "../src/contacts-typeset.vala"
+       if (!_tmp2_) {
+#line 117 "../src/contacts-typeset.vala"
+               result = NULL;
+#line 117 "../src/contacts-typeset.vala"
+               return result;
+#line 520 "contacts-typeset.c"
+       }
+       {
+               gboolean _tmp3_ = FALSE;
+#line 119 "../src/contacts-typeset.vala"
+               _tmp3_ = TRUE;
+#line 119 "../src/contacts-typeset.vala"
+               while (TRUE) {
+#line 528 "contacts-typeset.c"
+                       ContactsTypeDescriptor* type_descr = NULL;
+                       GtkListStore* _tmp6_;
+                       GtkTreeIter _tmp7_;
+                       ContactsTypeDescriptor* _tmp8_ = NULL;
+                       ContactsTypeDescriptor* _tmp9_;
+                       const gchar* _tmp10_;
+                       const gchar* _tmp11_;
+                       ContactsTypeDescriptor* _tmp13_;
+                       const gchar* _tmp14_;
+#line 119 "../src/contacts-typeset.vala"
+                       if (!_tmp3_) {
+#line 540 "contacts-typeset.c"
+                               GtkListStore* _tmp4_;
+                               gboolean _tmp5_;
+#line 127 "../src/contacts-typeset.vala"
+                               _tmp4_ = self->priv->_store;
+#line 127 "../src/contacts-typeset.vala"
+                               _tmp5_ = gtk_tree_model_iter_next ((GtkTreeModel*) _tmp4_, &iter);
+#line 127 "../src/contacts-typeset.vala"
+                               if (!_tmp5_) {
+#line 127 "../src/contacts-typeset.vala"
+                                       break;
+#line 551 "contacts-typeset.c"
+                               }
+                       }
+#line 119 "../src/contacts-typeset.vala"
+                       _tmp3_ = FALSE;
+#line 121 "../src/contacts-typeset.vala"
+                       _tmp6_ = self->priv->_store;
+#line 121 "../src/contacts-typeset.vala"
+                       _tmp7_ = iter;
+#line 121 "../src/contacts-typeset.vala"
+                       gtk_tree_model_get ((GtkTreeModel*) _tmp6_, &_tmp7_, 1, &_tmp8_, -1);
+#line 121 "../src/contacts-typeset.vala"
+                       type_descr = _tmp8_;
+#line 123 "../src/contacts-typeset.vala"
+                       _tmp9_ = type_descr;
+#line 123 "../src/contacts-typeset.vala"
+                       _tmp10_ = contacts_typedescriptor_get_display_name (_tmp9_);
+#line 123 "../src/contacts-typeset.vala"
+                       _tmp11_ = _tmp10_;
+#line 123 "../src/contacts-typeset.vala"
+                       if (g_ascii_strcasecmp (display_name, _tmp11_) == 0) {
+#line 572 "contacts-typeset.c"
+                               ContactsTypeDescriptor* _tmp12_;
+#line 124 "../src/contacts-typeset.vala"
+                               _tmp12_ = type_descr;
+#line 124 "../src/contacts-typeset.vala"
+                               result = _tmp12_;
+#line 124 "../src/contacts-typeset.vala"
+                               return result;
+#line 580 "contacts-typeset.c"
+                       }
+#line 125 "../src/contacts-typeset.vala"
+                       _tmp13_ = type_descr;
+#line 125 "../src/contacts-typeset.vala"
+                       _tmp14_ = _tmp13_->name;
+#line 125 "../src/contacts-typeset.vala"
+                       if (g_ascii_strcasecmp (display_name, _tmp14_) == 0) {
+#line 588 "contacts-typeset.c"
+                               ContactsTypeDescriptor* _tmp15_;
+#line 126 "../src/contacts-typeset.vala"
+                               _tmp15_ = type_descr;
+#line 126 "../src/contacts-typeset.vala"
+                               result = _tmp15_;
+#line 126 "../src/contacts-typeset.vala"
+                               return result;
+#line 596 "contacts-typeset.c"
+                       }
+               }
+       }
+#line 130 "../src/contacts-typeset.vala"
+       result = NULL;
+#line 130 "../src/contacts-typeset.vala"
+       return result;
+#line 604 "contacts-typeset.c"
+}
+
+static void
+contacts_typeset_add_vcard_mapping (ContactsTypeSet* self,
+                                    ContactsVcardTypeMapping* vcard_mapping)
+{
+       ContactsTypeDescriptor* descriptor = NULL;
+       ContactsVcardTypeMapping _tmp0_;
+       const gchar* _tmp1_;
+       ContactsTypeDescriptor* _tmp2_;
+       ContactsTypeDescriptor* _tmp3_;
+       ContactsTypeDescriptor* _tmp4_;
+       GeeList* _tmp10_;
+       ContactsVcardTypeMapping _tmp11_;
+#line 133 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 133 "../src/contacts-typeset.vala"
+       g_return_if_fail (vcard_mapping != NULL);
+#line 134 "../src/contacts-typeset.vala"
+       _tmp0_ = *vcard_mapping;
+#line 134 "../src/contacts-typeset.vala"
+       _tmp1_ = _tmp0_.name;
+#line 134 "../src/contacts-typeset.vala"
+       _tmp2_ = contacts_typeset_lookup_descriptor_in_store (self, _tmp1_);
+#line 134 "../src/contacts-typeset.vala"
+       _tmp3_ = _g_object_ref0 (_tmp2_);
+#line 134 "../src/contacts-typeset.vala"
+       descriptor = _tmp3_;
+#line 135 "../src/contacts-typeset.vala"
+       _tmp4_ = descriptor;
+#line 135 "../src/contacts-typeset.vala"
+       if (_tmp4_ == NULL) {
+#line 637 "contacts-typeset.c"
+               ContactsVcardTypeMapping _tmp5_;
+               const gchar* _tmp6_;
+               ContactsVcardTypeMapping _tmp7_;
+               ContactsTypeDescriptor* _tmp8_;
+               ContactsTypeDescriptor* _tmp9_;
+#line 136 "../src/contacts-typeset.vala"
+               _tmp5_ = *vcard_mapping;
+#line 136 "../src/contacts-typeset.vala"
+               _tmp6_ = _tmp5_.name;
+#line 136 "../src/contacts-typeset.vala"
+               _tmp7_ = *vcard_mapping;
+#line 136 "../src/contacts-typeset.vala"
+               _tmp8_ = contacts_typedescriptor_new_vcard (_tmp6_, _tmp7_.types, 3);
+#line 136 "../src/contacts-typeset.vala"
+               _g_object_unref0 (descriptor);
+#line 136 "../src/contacts-typeset.vala"
+               descriptor = _tmp8_;
+#line 137 "../src/contacts-typeset.vala"
+               _tmp9_ = descriptor;
+#line 137 "../src/contacts-typeset.vala"
+               contacts_typeset_add_descriptor_to_store (self, _tmp9_);
+#line 659 "contacts-typeset.c"
+       }
+#line 140 "../src/contacts-typeset.vala"
+       _tmp10_ = self->priv->vcard_type_mappings;
+#line 140 "../src/contacts-typeset.vala"
+       _tmp11_ = *vcard_mapping;
+#line 140 "../src/contacts-typeset.vala"
+       gee_collection_add ((GeeCollection*) _tmp10_, &_tmp11_);
+#line 133 "../src/contacts-typeset.vala"
+       _g_object_unref0 (descriptor);
+#line 669 "contacts-typeset.c"
+}
+
+static void
+contacts_typeset_add_type_other (ContactsTypeSet* self)
+{
+       GtkListStore* _tmp0_;
+       ContactsTypeDescriptor* _tmp1_;
+       GtkTreeIter _tmp2_ = {0};
+       GtkListStore* _tmp3_;
+       ContactsTypeDescriptor* _tmp4_;
+       GtkTreeIter _tmp5_;
+       ContactsTypeDescriptor* _tmp6_;
+       const gchar* _tmp7_;
+       const gchar* _tmp8_;
+       ContactsTypeDescriptor* _tmp9_;
+#line 144 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 145 "../src/contacts-typeset.vala"
+       _tmp0_ = self->priv->_store;
+#line 145 "../src/contacts-typeset.vala"
+       _tmp1_ = self->priv->other_dummy;
+#line 145 "../src/contacts-typeset.vala"
+       gtk_list_store_append (_tmp0_, &_tmp2_);
+#line 145 "../src/contacts-typeset.vala"
+       _tmp1_->iter = _tmp2_;
+#line 146 "../src/contacts-typeset.vala"
+       _tmp3_ = self->priv->_store;
+#line 146 "../src/contacts-typeset.vala"
+       _tmp4_ = self->priv->other_dummy;
+#line 146 "../src/contacts-typeset.vala"
+       _tmp5_ = _tmp4_->iter;
+#line 146 "../src/contacts-typeset.vala"
+       _tmp6_ = self->priv->other_dummy;
+#line 146 "../src/contacts-typeset.vala"
+       _tmp7_ = contacts_typedescriptor_get_display_name (_tmp6_);
+#line 146 "../src/contacts-typeset.vala"
+       _tmp8_ = _tmp7_;
+#line 146 "../src/contacts-typeset.vala"
+       _tmp9_ = self->priv->other_dummy;
+#line 146 "../src/contacts-typeset.vala"
+       gtk_list_store_set (_tmp3_, &_tmp5_, 0, _tmp8_, 1, _tmp9_, -1);
+#line 711 "contacts-typeset.c"
+}
+
+/**
+   * Tries to find the TypeDescriptor matching the given custom label, or null if none.
+   */
+ContactsTypeDescriptor*
+contacts_typeset_get_descriptor_for_custom_label (ContactsTypeSet* self,
+                                                  const gchar* label)
+{
+       ContactsTypeDescriptor* descriptor = NULL;
+       ContactsTypeDescriptor* _tmp0_;
+       ContactsTypeDescriptor* _tmp1_;
+       ContactsTypeDescriptor* _tmp3_;
+       ContactsTypeDescriptor* _tmp4_;
+       ContactsTypeDescriptor* result = NULL;
+#line 152 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 152 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (label != NULL, NULL);
+#line 154 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset_lookup_descriptor_in_store (self, label);
+#line 154 "../src/contacts-typeset.vala"
+       descriptor = _tmp0_;
+#line 155 "../src/contacts-typeset.vala"
+       _tmp1_ = descriptor;
+#line 155 "../src/contacts-typeset.vala"
+       if (_tmp1_ != NULL) {
+#line 739 "contacts-typeset.c"
+               ContactsTypeDescriptor* _tmp2_;
+#line 156 "../src/contacts-typeset.vala"
+               _tmp2_ = descriptor;
+#line 156 "../src/contacts-typeset.vala"
+               result = _tmp2_;
+#line 156 "../src/contacts-typeset.vala"
+               return result;
+#line 747 "contacts-typeset.c"
+       }
+#line 159 "../src/contacts-typeset.vala"
+       _tmp3_ = contacts_typeset_lookup_descriptor_by_vcard_type (self, label);
+#line 159 "../src/contacts-typeset.vala"
+       descriptor = _tmp3_;
+#line 160 "../src/contacts-typeset.vala"
+       _tmp4_ = descriptor;
+#line 160 "../src/contacts-typeset.vala"
+       result = _tmp4_;
+#line 160 "../src/contacts-typeset.vala"
+       return result;
+#line 759 "contacts-typeset.c"
+}
+
+static ContactsTypeDescriptor*
+contacts_typeset_create_descriptor_for_custom_label (ContactsTypeSet* self,
+                                                     const gchar* label)
+{
+       ContactsTypeDescriptor* new_descriptor = NULL;
+       ContactsTypeDescriptor* _tmp0_;
+       ContactsTypeDescriptor* result = NULL;
+#line 163 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 163 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (label != NULL, NULL);
+#line 164 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typedescriptor_new_custom (label);
+#line 164 "../src/contacts-typeset.vala"
+       new_descriptor = _tmp0_;
+#line 165 "../src/contacts-typeset.vala"
+       contacts_typeset_add_descriptor_to_store (self, new_descriptor);
+#line 166 "../src/contacts-typeset.vala"
+       result = new_descriptor;
+#line 166 "../src/contacts-typeset.vala"
+       return result;
+#line 783 "contacts-typeset.c"
+}
+
+/**
+   * Returns the TypeDescriptor which corresponds the best to the given vcard type.
+   * @param str A VCard-like type, such as "HOME" or "CELL".
+   */
+static ContactsTypeDescriptor*
+contacts_typeset_lookup_descriptor_by_vcard_type (ContactsTypeSet* self,
+                                                  const gchar* str)
+{
+       ContactsTypeDescriptor* result = NULL;
+#line 173 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 173 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (str != NULL, NULL);
+#line 799 "contacts-typeset.c"
+       {
+               GeeList* _mapping_list = NULL;
+               GeeList* _tmp0_;
+               GeeList* _tmp1_;
+               gint _mapping_size = 0;
+               GeeList* _tmp2_;
+               gint _tmp3_;
+               gint _tmp4_;
+               gint _mapping_index = 0;
+#line 174 "../src/contacts-typeset.vala"
+               _tmp0_ = self->priv->vcard_type_mappings;
+#line 174 "../src/contacts-typeset.vala"
+               _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 174 "../src/contacts-typeset.vala"
+               _mapping_list = _tmp1_;
+#line 174 "../src/contacts-typeset.vala"
+               _tmp2_ = _mapping_list;
+#line 174 "../src/contacts-typeset.vala"
+               _tmp3_ = gee_collection_get_size ((GeeCollection*) _tmp2_);
+#line 174 "../src/contacts-typeset.vala"
+               _tmp4_ = _tmp3_;
+#line 174 "../src/contacts-typeset.vala"
+               _mapping_size = _tmp4_;
+#line 174 "../src/contacts-typeset.vala"
+               _mapping_index = -1;
+#line 174 "../src/contacts-typeset.vala"
+               while (TRUE) {
+#line 827 "contacts-typeset.c"
+                       ContactsVcardTypeMapping* mapping = NULL;
+                       GeeList* _tmp5_;
+                       gpointer _tmp6_;
+                       ContactsVcardTypeMapping* _tmp7_;
+#line 174 "../src/contacts-typeset.vala"
+                       _mapping_index = _mapping_index + 1;
+#line 174 "../src/contacts-typeset.vala"
+                       if (!(_mapping_index < _mapping_size)) {
+#line 174 "../src/contacts-typeset.vala"
+                               break;
+#line 838 "contacts-typeset.c"
+                       }
+#line 174 "../src/contacts-typeset.vala"
+                       _tmp5_ = _mapping_list;
+#line 174 "../src/contacts-typeset.vala"
+                       _tmp6_ = gee_list_get (_tmp5_, _mapping_index);
+#line 174 "../src/contacts-typeset.vala"
+                       mapping = (ContactsVcardTypeMapping*) _tmp6_;
+#line 175 "../src/contacts-typeset.vala"
+                       _tmp7_ = mapping;
+#line 175 "../src/contacts-typeset.vala"
+                       if (contacts_vcard_type_mapping_contains (_tmp7_, str)) {
+#line 850 "contacts-typeset.c"
+                               ContactsVcardTypeMapping* _tmp8_;
+                               const gchar* _tmp9_;
+                               ContactsTypeDescriptor* _tmp10_;
+#line 176 "../src/contacts-typeset.vala"
+                               _tmp8_ = mapping;
+#line 176 "../src/contacts-typeset.vala"
+                               _tmp9_ = (*_tmp8_).name;
+#line 176 "../src/contacts-typeset.vala"
+                               _tmp10_ = contacts_typeset_lookup_descriptor_in_store (self, _tmp9_);
+#line 176 "../src/contacts-typeset.vala"
+                               result = _tmp10_;
+#line 176 "../src/contacts-typeset.vala"
+                               _contacts_vcard_type_mapping_free0 (mapping);
+#line 176 "../src/contacts-typeset.vala"
+                               _g_object_unref0 (_mapping_list);
+#line 176 "../src/contacts-typeset.vala"
+                               return result;
+#line 868 "contacts-typeset.c"
+                       }
+#line 174 "../src/contacts-typeset.vala"
+                       _contacts_vcard_type_mapping_free0 (mapping);
+#line 872 "contacts-typeset.c"
+               }
+#line 174 "../src/contacts-typeset.vala"
+               _g_object_unref0 (_mapping_list);
+#line 876 "contacts-typeset.c"
+       }
+#line 179 "../src/contacts-typeset.vala"
+       result = NULL;
+#line 179 "../src/contacts-typeset.vala"
+       return result;
+#line 882 "contacts-typeset.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typeset_lookup_descriptor_for_field_details (ContactsTypeSet* self,
+                                                      FolksAbstractFieldDetails* detail)
+{
+       GeeMultiMap* _tmp0_;
+       GeeMultiMap* _tmp1_;
+       GeeCollection* types = NULL;
+       GeeCollection* _tmp14_;
+       gboolean _tmp15_ = FALSE;
+       GeeCollection* _tmp16_;
+       ContactsTypeDescriptor* _tmp35_;
+       ContactsTypeDescriptor* _tmp36_;
+       ContactsTypeDescriptor* result = NULL;
+#line 182 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 182 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (detail != NULL, NULL);
+#line 183 "../src/contacts-typeset.vala"
+       _tmp0_ = folks_abstract_field_details_get_parameters (detail);
+#line 183 "../src/contacts-typeset.vala"
+       _tmp1_ = _tmp0_;
+#line 183 "../src/contacts-typeset.vala"
+       if (gee_multi_map_contains (_tmp1_, CONTACTS_TYPEDESCRIPTOR_X_GOOGLE_LABEL)) {
+#line 908 "contacts-typeset.c"
+               gchar* label = NULL;
+               GeeMultiMap* _tmp2_;
+               GeeMultiMap* _tmp3_;
+               GeeCollection* _tmp4_;
+               GeeCollection* _tmp5_;
+               gpointer _tmp6_;
+               gchar* _tmp7_;
+               ContactsTypeDescriptor* descriptor = NULL;
+               const gchar* _tmp8_;
+               ContactsTypeDescriptor* _tmp9_;
+               ContactsTypeDescriptor* _tmp10_;
+               ContactsTypeDescriptor* _tmp11_;
+#line 184 "../src/contacts-typeset.vala"
+               _tmp2_ = folks_abstract_field_details_get_parameters (detail);
+#line 184 "../src/contacts-typeset.vala"
+               _tmp3_ = _tmp2_;
+#line 184 "../src/contacts-typeset.vala"
+               _tmp4_ = gee_multi_map_get (_tmp3_, CONTACTS_TYPEDESCRIPTOR_X_GOOGLE_LABEL);
+#line 184 "../src/contacts-typeset.vala"
+               _tmp5_ = _tmp4_;
+#line 184 "../src/contacts-typeset.vala"
+               _tmp6_ = contacts_utils_get_first (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, _tmp5_);
+#line 184 "../src/contacts-typeset.vala"
+               _tmp7_ = (gchar*) _tmp6_;
+#line 184 "../src/contacts-typeset.vala"
+               _g_object_unref0 (_tmp5_);
+#line 184 "../src/contacts-typeset.vala"
+               label = _tmp7_;
+#line 185 "../src/contacts-typeset.vala"
+               _tmp8_ = label;
+#line 185 "../src/contacts-typeset.vala"
+               _tmp9_ = contacts_typeset_get_descriptor_for_custom_label (self, _tmp8_);
+#line 185 "../src/contacts-typeset.vala"
+               _tmp10_ = _g_object_ref0 (_tmp9_);
+#line 185 "../src/contacts-typeset.vala"
+               descriptor = _tmp10_;
+#line 187 "../src/contacts-typeset.vala"
+               _tmp11_ = descriptor;
+#line 187 "../src/contacts-typeset.vala"
+               if (_tmp11_ == NULL) {
+#line 949 "contacts-typeset.c"
+                       const gchar* _tmp12_;
+                       ContactsTypeDescriptor* _tmp13_;
+#line 188 "../src/contacts-typeset.vala"
+                       _tmp12_ = label;
+#line 188 "../src/contacts-typeset.vala"
+                       _tmp13_ = contacts_typeset_create_descriptor_for_custom_label (self, _tmp12_);
+#line 188 "../src/contacts-typeset.vala"
+                       _g_object_unref0 (descriptor);
+#line 188 "../src/contacts-typeset.vala"
+                       descriptor = _tmp13_;
+#line 960 "contacts-typeset.c"
+               }
+#line 189 "../src/contacts-typeset.vala"
+               result = descriptor;
+#line 189 "../src/contacts-typeset.vala"
+               _g_free0 (label);
+#line 189 "../src/contacts-typeset.vala"
+               return result;
+#line 968 "contacts-typeset.c"
+       }
+#line 192 "../src/contacts-typeset.vala"
+       _tmp14_ = folks_abstract_field_details_get_parameter_values (detail, "type");
+#line 192 "../src/contacts-typeset.vala"
+       types = _tmp14_;
+#line 193 "../src/contacts-typeset.vala"
+       _tmp16_ = types;
+#line 193 "../src/contacts-typeset.vala"
+       if (_tmp16_ == NULL) {
+#line 193 "../src/contacts-typeset.vala"
+               _tmp15_ = TRUE;
+#line 980 "contacts-typeset.c"
+       } else {
+               GeeCollection* _tmp17_;
+               gboolean _tmp18_;
+               gboolean _tmp19_;
+#line 193 "../src/contacts-typeset.vala"
+               _tmp17_ = types;
+#line 193 "../src/contacts-typeset.vala"
+               _tmp18_ = gee_collection_get_is_empty (_tmp17_);
+#line 193 "../src/contacts-typeset.vala"
+               _tmp19_ = _tmp18_;
+#line 193 "../src/contacts-typeset.vala"
+               _tmp15_ = _tmp19_;
+#line 993 "contacts-typeset.c"
+       }
+#line 193 "../src/contacts-typeset.vala"
+       if (_tmp15_) {
+#line 997 "contacts-typeset.c"
+               ContactsTypeDescriptor* _tmp20_;
+               ContactsTypeDescriptor* _tmp21_;
+#line 194 "../src/contacts-typeset.vala"
+               g_warning ("contacts-typeset.vala:194: No types given in the AbstractFieldDetails");
+#line 195 "../src/contacts-typeset.vala"
+               _tmp20_ = self->priv->other_dummy;
+#line 195 "../src/contacts-typeset.vala"
+               _tmp21_ = _g_object_ref0 (_tmp20_);
+#line 195 "../src/contacts-typeset.vala"
+               result = _tmp21_;
+#line 195 "../src/contacts-typeset.vala"
+               _g_object_unref0 (types);
+#line 195 "../src/contacts-typeset.vala"
+               return result;
+#line 1012 "contacts-typeset.c"
+       }
+       {
+               GeeList* _d_list = NULL;
+               GeeList* _tmp22_;
+               GeeList* _tmp23_;
+               gint _d_size = 0;
+               GeeList* _tmp24_;
+               gint _tmp25_;
+               gint _tmp26_;
+               gint _d_index = 0;
+#line 198 "../src/contacts-typeset.vala"
+               _tmp22_ = self->priv->vcard_type_mappings;
+#line 198 "../src/contacts-typeset.vala"
+               _tmp23_ = _g_object_ref0 (_tmp22_);
+#line 198 "../src/contacts-typeset.vala"
+               _d_list = _tmp23_;
+#line 198 "../src/contacts-typeset.vala"
+               _tmp24_ = _d_list;
+#line 198 "../src/contacts-typeset.vala"
+               _tmp25_ = gee_collection_get_size ((GeeCollection*) _tmp24_);
+#line 198 "../src/contacts-typeset.vala"
+               _tmp26_ = _tmp25_;
+#line 198 "../src/contacts-typeset.vala"
+               _d_size = _tmp26_;
+#line 198 "../src/contacts-typeset.vala"
+               _d_index = -1;
+#line 198 "../src/contacts-typeset.vala"
+               while (TRUE) {
+#line 1041 "contacts-typeset.c"
+                       ContactsVcardTypeMapping* d = NULL;
+                       GeeList* _tmp27_;
+                       gpointer _tmp28_;
+                       ContactsVcardTypeMapping* _tmp29_;
+                       GeeCollection* _tmp30_;
+#line 198 "../src/contacts-typeset.vala"
+                       _d_index = _d_index + 1;
+#line 198 "../src/contacts-typeset.vala"
+                       if (!(_d_index < _d_size)) {
+#line 198 "../src/contacts-typeset.vala"
+                               break;
+#line 1053 "contacts-typeset.c"
+                       }
+#line 198 "../src/contacts-typeset.vala"
+                       _tmp27_ = _d_list;
+#line 198 "../src/contacts-typeset.vala"
+                       _tmp28_ = gee_list_get (_tmp27_, _d_index);
+#line 198 "../src/contacts-typeset.vala"
+                       d = (ContactsVcardTypeMapping*) _tmp28_;
+#line 199 "../src/contacts-typeset.vala"
+                       _tmp29_ = d;
+#line 199 "../src/contacts-typeset.vala"
+                       _tmp30_ = types;
+#line 199 "../src/contacts-typeset.vala"
+                       if (contacts_vcard_type_mapping_matches (_tmp29_, _tmp30_)) {
+#line 1067 "contacts-typeset.c"
+                               ContactsVcardTypeMapping* _tmp31_;
+                               const gchar* _tmp32_;
+                               ContactsTypeDescriptor* _tmp33_;
+                               ContactsTypeDescriptor* _tmp34_;
+#line 200 "../src/contacts-typeset.vala"
+                               _tmp31_ = d;
+#line 200 "../src/contacts-typeset.vala"
+                               _tmp32_ = (*_tmp31_).name;
+#line 200 "../src/contacts-typeset.vala"
+                               _tmp33_ = contacts_typeset_lookup_descriptor_in_store (self, _tmp32_);
+#line 200 "../src/contacts-typeset.vala"
+                               _tmp34_ = _g_object_ref0 (_tmp33_);
+#line 200 "../src/contacts-typeset.vala"
+                               result = _tmp34_;
+#line 200 "../src/contacts-typeset.vala"
+                               _contacts_vcard_type_mapping_free0 (d);
+#line 200 "../src/contacts-typeset.vala"
+                               _g_object_unref0 (_d_list);
+#line 200 "../src/contacts-typeset.vala"
+                               _g_object_unref0 (types);
+#line 200 "../src/contacts-typeset.vala"
+                               return result;
+#line 1090 "contacts-typeset.c"
+                       }
+#line 198 "../src/contacts-typeset.vala"
+                       _contacts_vcard_type_mapping_free0 (d);
+#line 1094 "contacts-typeset.c"
+               }
+#line 198 "../src/contacts-typeset.vala"
+               _g_object_unref0 (_d_list);
+#line 1098 "contacts-typeset.c"
+       }
+#line 203 "../src/contacts-typeset.vala"
+       _tmp35_ = self->priv->other_dummy;
+#line 203 "../src/contacts-typeset.vala"
+       _tmp36_ = _g_object_ref0 (_tmp35_);
+#line 203 "../src/contacts-typeset.vala"
+       result = _tmp36_;
+#line 203 "../src/contacts-typeset.vala"
+       _g_object_unref0 (types);
+#line 203 "../src/contacts-typeset.vala"
+       return result;
+#line 1110 "contacts-typeset.c"
+}
+
+const gchar*
+contacts_typeset_get_category (ContactsTypeSet* self)
+{
+       const gchar* result;
+       const gchar* _tmp0_;
+#line 30 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 30 "../src/contacts-typeset.vala"
+       _tmp0_ = self->priv->_category;
+#line 30 "../src/contacts-typeset.vala"
+       result = _tmp0_;
+#line 30 "../src/contacts-typeset.vala"
+       return result;
+#line 1126 "contacts-typeset.c"
+}
+
+void
+contacts_typeset_set_category (ContactsTypeSet* self,
+                               const gchar* value)
+{
+#line 30 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 30 "../src/contacts-typeset.vala"
+       if (g_strcmp0 (value, contacts_typeset_get_category (self)) != 0) {
+#line 1137 "contacts-typeset.c"
+               gchar* _tmp0_;
+#line 30 "../src/contacts-typeset.vala"
+               _tmp0_ = g_strdup (value);
+#line 30 "../src/contacts-typeset.vala"
+               _g_free0 (self->priv->_category);
+#line 30 "../src/contacts-typeset.vala"
+               self->priv->_category = _tmp0_;
+#line 30 "../src/contacts-typeset.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_typeset_properties[CONTACTS_TYPESET_CATEGORY_PROPERTY]);
+#line 1147 "contacts-typeset.c"
+       }
+}
+
+GtkListStore*
+contacts_typeset_get_store (ContactsTypeSet* self)
+{
+       GtkListStore* result;
+       GtkListStore* _tmp0_;
+#line 42 "../src/contacts-typeset.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 42 "../src/contacts-typeset.vala"
+       _tmp0_ = self->priv->_store;
+#line 42 "../src/contacts-typeset.vala"
+       result = _tmp0_;
+#line 42 "../src/contacts-typeset.vala"
+       return result;
+#line 1164 "contacts-typeset.c"
+}
+
+static void
+contacts_typeset_set_store (ContactsTypeSet* self,
+                            GtkListStore* value)
+{
+#line 42 "../src/contacts-typeset.vala"
+       g_return_if_fail (self != NULL);
+#line 42 "../src/contacts-typeset.vala"
+       if (contacts_typeset_get_store (self) != value) {
+#line 1175 "contacts-typeset.c"
+               GtkListStore* _tmp0_;
+#line 42 "../src/contacts-typeset.vala"
+               _tmp0_ = _g_object_ref0 (value);
+#line 42 "../src/contacts-typeset.vala"
+               _g_object_unref0 (self->priv->_store);
+#line 42 "../src/contacts-typeset.vala"
+               self->priv->_store = _tmp0_;
+#line 42 "../src/contacts-typeset.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_typeset_properties[CONTACTS_TYPESET_STORE_PROPERTY]);
+#line 1185 "contacts-typeset.c"
+       }
+}
+
+ContactsTypeSet*
+contacts_typeset_get_general (void)
+{
+       ContactsTypeSet* result;
+       ContactsTypeSet* _tmp0_;
+       ContactsTypeSet* _tmp7_;
+#line 215 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset__general;
+#line 215 "../src/contacts-typeset.vala"
+       if (_tmp0_ == NULL) {
+#line 1199 "contacts-typeset.c"
+               ContactsTypeSet* _tmp1_;
+               ContactsTypeSet* _tmp6_;
+#line 216 "../src/contacts-typeset.vala"
+               _tmp1_ = contacts_typeset_new ("General");
+#line 216 "../src/contacts-typeset.vala"
+               _g_object_unref0 (contacts_typeset__general);
+#line 216 "../src/contacts-typeset.vala"
+               contacts_typeset__general = _tmp1_;
+#line 1208 "contacts-typeset.c"
+               {
+                       gint i = 0;
+#line 217 "../src/contacts-typeset.vala"
+                       i = 0;
+#line 1213 "contacts-typeset.c"
+                       {
+                               gboolean _tmp2_ = FALSE;
+#line 217 "../src/contacts-typeset.vala"
+                               _tmp2_ = TRUE;
+#line 217 "../src/contacts-typeset.vala"
+                               while (TRUE) {
+#line 1220 "contacts-typeset.c"
+                                       ContactsTypeSet* _tmp4_;
+                                       ContactsVcardTypeMapping _tmp5_;
+#line 217 "../src/contacts-typeset.vala"
+                                       if (!_tmp2_) {
+#line 1225 "contacts-typeset.c"
+                                               gint _tmp3_;
+#line 217 "../src/contacts-typeset.vala"
+                                               _tmp3_ = i;
+#line 217 "../src/contacts-typeset.vala"
+                                               i = _tmp3_ + 1;
+#line 1231 "contacts-typeset.c"
+                                       }
+#line 217 "../src/contacts-typeset.vala"
+                                       _tmp2_ = FALSE;
+#line 217 "../src/contacts-typeset.vala"
+                                       if (!(i < G_N_ELEMENTS (CONTACTS_TYPESET_general_data))) {
+#line 217 "../src/contacts-typeset.vala"
+                                               break;
+#line 1239 "contacts-typeset.c"
+                                       }
+#line 218 "../src/contacts-typeset.vala"
+                                       _tmp4_ = contacts_typeset__general;
+#line 218 "../src/contacts-typeset.vala"
+                                       _tmp5_ = CONTACTS_TYPESET_general_data[i];
+#line 218 "../src/contacts-typeset.vala"
+                                       contacts_typeset_add_vcard_mapping (_tmp4_, &_tmp5_);
+#line 1247 "contacts-typeset.c"
+                               }
+                       }
+               }
+#line 219 "../src/contacts-typeset.vala"
+               _tmp6_ = contacts_typeset__general;
+#line 219 "../src/contacts-typeset.vala"
+               contacts_typeset_add_type_other (_tmp6_);
+#line 1255 "contacts-typeset.c"
+       }
+#line 222 "../src/contacts-typeset.vala"
+       _tmp7_ = contacts_typeset__general;
+#line 222 "../src/contacts-typeset.vala"
+       result = _tmp7_;
+#line 222 "../src/contacts-typeset.vala"
+       return result;
+#line 1263 "contacts-typeset.c"
+}
+
+ContactsTypeSet*
+contacts_typeset_get_email (void)
+{
+       ContactsTypeSet* result;
+       ContactsTypeSet* _tmp0_;
+       ContactsTypeSet* _tmp7_;
+#line 235 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset__email;
+#line 235 "../src/contacts-typeset.vala"
+       if (_tmp0_ == NULL) {
+#line 1276 "contacts-typeset.c"
+               ContactsTypeSet* _tmp1_;
+               ContactsTypeSet* _tmp6_;
+#line 236 "../src/contacts-typeset.vala"
+               _tmp1_ = contacts_typeset_new ("Emails");
+#line 236 "../src/contacts-typeset.vala"
+               _g_object_unref0 (contacts_typeset__email);
+#line 236 "../src/contacts-typeset.vala"
+               contacts_typeset__email = _tmp1_;
+#line 1285 "contacts-typeset.c"
+               {
+                       gint i = 0;
+#line 237 "../src/contacts-typeset.vala"
+                       i = 0;
+#line 1290 "contacts-typeset.c"
+                       {
+                               gboolean _tmp2_ = FALSE;
+#line 237 "../src/contacts-typeset.vala"
+                               _tmp2_ = TRUE;
+#line 237 "../src/contacts-typeset.vala"
+                               while (TRUE) {
+#line 1297 "contacts-typeset.c"
+                                       ContactsTypeSet* _tmp4_;
+                                       ContactsVcardTypeMapping _tmp5_;
+#line 237 "../src/contacts-typeset.vala"
+                                       if (!_tmp2_) {
+#line 1302 "contacts-typeset.c"
+                                               gint _tmp3_;
+#line 237 "../src/contacts-typeset.vala"
+                                               _tmp3_ = i;
+#line 237 "../src/contacts-typeset.vala"
+                                               i = _tmp3_ + 1;
+#line 1308 "contacts-typeset.c"
+                                       }
+#line 237 "../src/contacts-typeset.vala"
+                                       _tmp2_ = FALSE;
+#line 237 "../src/contacts-typeset.vala"
+                                       if (!(i < G_N_ELEMENTS (CONTACTS_TYPESET_email_data))) {
+#line 237 "../src/contacts-typeset.vala"
+                                               break;
+#line 1316 "contacts-typeset.c"
+                                       }
+#line 238 "../src/contacts-typeset.vala"
+                                       _tmp4_ = contacts_typeset__email;
+#line 238 "../src/contacts-typeset.vala"
+                                       _tmp5_ = CONTACTS_TYPESET_email_data[i];
+#line 238 "../src/contacts-typeset.vala"
+                                       contacts_typeset_add_vcard_mapping (_tmp4_, &_tmp5_);
+#line 1324 "contacts-typeset.c"
+                               }
+                       }
+               }
+#line 239 "../src/contacts-typeset.vala"
+               _tmp6_ = contacts_typeset__email;
+#line 239 "../src/contacts-typeset.vala"
+               contacts_typeset_add_type_other (_tmp6_);
+#line 1332 "contacts-typeset.c"
+       }
+#line 242 "../src/contacts-typeset.vala"
+       _tmp7_ = contacts_typeset__email;
+#line 242 "../src/contacts-typeset.vala"
+       result = _tmp7_;
+#line 242 "../src/contacts-typeset.vala"
+       return result;
+#line 1340 "contacts-typeset.c"
+}
+
+ContactsTypeSet*
+contacts_typeset_get_phone (void)
+{
+       ContactsTypeSet* result;
+       ContactsTypeSet* _tmp0_;
+       ContactsTypeSet* _tmp7_;
+#line 272 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typeset__phone;
+#line 272 "../src/contacts-typeset.vala"
+       if (_tmp0_ == NULL) {
+#line 1353 "contacts-typeset.c"
+               ContactsTypeSet* _tmp1_;
+               ContactsTypeSet* _tmp6_;
+#line 273 "../src/contacts-typeset.vala"
+               _tmp1_ = contacts_typeset_new ("Phones");
+#line 273 "../src/contacts-typeset.vala"
+               _g_object_unref0 (contacts_typeset__phone);
+#line 273 "../src/contacts-typeset.vala"
+               contacts_typeset__phone = _tmp1_;
+#line 1362 "contacts-typeset.c"
+               {
+                       gint i = 0;
+#line 274 "../src/contacts-typeset.vala"
+                       i = 0;
+#line 1367 "contacts-typeset.c"
+                       {
+                               gboolean _tmp2_ = FALSE;
+#line 274 "../src/contacts-typeset.vala"
+                               _tmp2_ = TRUE;
+#line 274 "../src/contacts-typeset.vala"
+                               while (TRUE) {
+#line 1374 "contacts-typeset.c"
+                                       ContactsTypeSet* _tmp4_;
+                                       ContactsVcardTypeMapping _tmp5_;
+#line 274 "../src/contacts-typeset.vala"
+                                       if (!_tmp2_) {
+#line 1379 "contacts-typeset.c"
+                                               gint _tmp3_;
+#line 274 "../src/contacts-typeset.vala"
+                                               _tmp3_ = i;
+#line 274 "../src/contacts-typeset.vala"
+                                               i = _tmp3_ + 1;
+#line 1385 "contacts-typeset.c"
+                                       }
+#line 274 "../src/contacts-typeset.vala"
+                                       _tmp2_ = FALSE;
+#line 274 "../src/contacts-typeset.vala"
+                                       if (!(i < G_N_ELEMENTS (CONTACTS_TYPESET_phone_data))) {
+#line 274 "../src/contacts-typeset.vala"
+                                               break;
+#line 1393 "contacts-typeset.c"
+                                       }
+#line 275 "../src/contacts-typeset.vala"
+                                       _tmp4_ = contacts_typeset__phone;
+#line 275 "../src/contacts-typeset.vala"
+                                       _tmp5_ = CONTACTS_TYPESET_phone_data[i];
+#line 275 "../src/contacts-typeset.vala"
+                                       contacts_typeset_add_vcard_mapping (_tmp4_, &_tmp5_);
+#line 1401 "contacts-typeset.c"
+                               }
+                       }
+               }
+#line 276 "../src/contacts-typeset.vala"
+               _tmp6_ = contacts_typeset__phone;
+#line 276 "../src/contacts-typeset.vala"
+               contacts_typeset_add_type_other (_tmp6_);
+#line 1409 "contacts-typeset.c"
+       }
+#line 279 "../src/contacts-typeset.vala"
+       _tmp7_ = contacts_typeset__phone;
+#line 279 "../src/contacts-typeset.vala"
+       result = _tmp7_;
+#line 279 "../src/contacts-typeset.vala"
+       return result;
+#line 1417 "contacts-typeset.c"
+}
+
+static void
+contacts_typeset_class_init (ContactsTypeSetClass * klass,
+                             gpointer klass_data)
+{
+#line 27 "../src/contacts-typeset.vala"
+       contacts_typeset_parent_class = g_type_class_peek_parent (klass);
+#line 27 "../src/contacts-typeset.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsTypeSet_private_offset);
+#line 27 "../src/contacts-typeset.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_typeset_get_property;
+#line 27 "../src/contacts-typeset.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_typeset_set_property;
+#line 27 "../src/contacts-typeset.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_typeset_finalize;
+#line 1434 "contacts-typeset.c"
+       /** Returns the category of typeset (mostly used for debugging). */
+#line 27 "../src/contacts-typeset.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_TYPESET_CATEGORY_PROPERTY, 
contacts_typeset_properties[CONTACTS_TYPESET_CATEGORY_PROPERTY] = g_param_spec_string ("category", 
"category", "category", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | 
G_PARAM_CONSTRUCT));
+#line 27 "../src/contacts-typeset.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_TYPESET_STORE_PROPERTY, 
contacts_typeset_properties[CONTACTS_TYPESET_STORE_PROPERTY] = g_param_spec_object ("store", "store", 
"store", gtk_list_store_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 1440 "contacts-typeset.c"
+}
+
+static void
+contacts_typeset_instance_init (ContactsTypeSet * self,
+                                gpointer klass)
+{
+       ContactsTypeDescriptor* _tmp0_;
+       GeeArrayList* _tmp1_;
+#line 27 "../src/contacts-typeset.vala"
+       self->priv = contacts_typeset_get_instance_private (self);
+#line 33 "../src/contacts-typeset.vala"
+       _tmp0_ = contacts_typedescriptor_new_other ();
+#line 33 "../src/contacts-typeset.vala"
+       self->priv->other_dummy = _tmp0_;
+#line 36 "../src/contacts-typeset.vala"
+       _tmp1_ = gee_array_list_new (CONTACTS_TYPE_VCARD_TYPE_MAPPING, (GBoxedCopyFunc) 
contacts_vcard_type_mapping_dup, (GDestroyNotify) contacts_vcard_type_mapping_free, NULL, NULL, NULL);
+#line 36 "../src/contacts-typeset.vala"
+       self->priv->vcard_type_mappings = (GeeList*) _tmp1_;
+#line 1459 "contacts-typeset.c"
+}
+
+static void
+contacts_typeset_finalize (GObject * obj)
+{
+       ContactsTypeSet * self;
+#line 27 "../src/contacts-typeset.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_TYPESET, ContactsTypeSet);
+#line 30 "../src/contacts-typeset.vala"
+       _g_free0 (self->priv->_category);
+#line 33 "../src/contacts-typeset.vala"
+       _g_object_unref0 (self->priv->other_dummy);
+#line 36 "../src/contacts-typeset.vala"
+       _g_object_unref0 (self->priv->vcard_type_mappings);
+#line 42 "../src/contacts-typeset.vala"
+       _g_object_unref0 (self->priv->_store);
+#line 27 "../src/contacts-typeset.vala"
+       G_OBJECT_CLASS (contacts_typeset_parent_class)->finalize (obj);
+#line 1478 "contacts-typeset.c"
+}
+
+/**
+ * A TypeSet contains all the possible types of a property. For example, a
+ * phone number can be both for a personal phone, a work phone or even a fax
+ * machine.
+ */
+static GType
+contacts_typeset_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsTypeSetClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_typeset_class_init, (GClassFinalizeFunc) NULL, NULL, 
sizeof (ContactsTypeSet), 0, (GInstanceInitFunc) contacts_typeset_instance_init, NULL };
+       GType contacts_typeset_type_id;
+       contacts_typeset_type_id = g_type_register_static (G_TYPE_OBJECT, "ContactsTypeSet", 
&g_define_type_info, 0);
+       ContactsTypeSet_private_offset = g_type_add_instance_private (contacts_typeset_type_id, sizeof 
(ContactsTypeSetPrivate));
+       return contacts_typeset_type_id;
+}
+
+GType
+contacts_typeset_get_type (void)
+{
+       static volatile gsize contacts_typeset_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_typeset_type_id__volatile)) {
+               GType contacts_typeset_type_id;
+               contacts_typeset_type_id = contacts_typeset_get_type_once ();
+               g_once_init_leave (&contacts_typeset_type_id__volatile, contacts_typeset_type_id);
+       }
+       return contacts_typeset_type_id__volatile;
+}
+
+static void
+_vala_contacts_typeset_get_property (GObject * object,
+                                     guint property_id,
+                                     GValue * value,
+                                     GParamSpec * pspec)
+{
+       ContactsTypeSet * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_TYPESET, ContactsTypeSet);
+#line 27 "../src/contacts-typeset.vala"
+       switch (property_id) {
+#line 27 "../src/contacts-typeset.vala"
+               case CONTACTS_TYPESET_CATEGORY_PROPERTY:
+#line 27 "../src/contacts-typeset.vala"
+               g_value_set_string (value, contacts_typeset_get_category (self));
+#line 27 "../src/contacts-typeset.vala"
+               break;
+#line 27 "../src/contacts-typeset.vala"
+               case CONTACTS_TYPESET_STORE_PROPERTY:
+#line 27 "../src/contacts-typeset.vala"
+               g_value_set_object (value, contacts_typeset_get_store (self));
+#line 27 "../src/contacts-typeset.vala"
+               break;
+#line 1530 "contacts-typeset.c"
+               default:
+#line 27 "../src/contacts-typeset.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 27 "../src/contacts-typeset.vala"
+               break;
+#line 1536 "contacts-typeset.c"
+       }
+}
+
+static void
+_vala_contacts_typeset_set_property (GObject * object,
+                                     guint property_id,
+                                     const GValue * value,
+                                     GParamSpec * pspec)
+{
+       ContactsTypeSet * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_TYPESET, ContactsTypeSet);
+#line 27 "../src/contacts-typeset.vala"
+       switch (property_id) {
+#line 27 "../src/contacts-typeset.vala"
+               case CONTACTS_TYPESET_CATEGORY_PROPERTY:
+#line 27 "../src/contacts-typeset.vala"
+               contacts_typeset_set_category (self, g_value_get_string (value));
+#line 27 "../src/contacts-typeset.vala"
+               break;
+#line 27 "../src/contacts-typeset.vala"
+               case CONTACTS_TYPESET_STORE_PROPERTY:
+#line 27 "../src/contacts-typeset.vala"
+               contacts_typeset_set_store (self, g_value_get_object (value));
+#line 27 "../src/contacts-typeset.vala"
+               break;
+#line 1562 "contacts-typeset.c"
+               default:
+#line 27 "../src/contacts-typeset.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 27 "../src/contacts-typeset.vala"
+               break;
+#line 1568 "contacts-typeset.c"
+       }
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-utils.c 
b/_build/src/25a6634@@contacts@sta/contacts-utils.c
new file mode 100644
index 0000000..688d3e4
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-utils.c
@@ -0,0 +1,5665 @@
+/* contacts-utils.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-utils.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <gio/gio.h>
+#include <gdk/gdk.h>
+#include <gio/gdesktopappinfo.h>
+#include <gee.h>
+#include <folks/folks.h>
+#include <folks/folks-eds.h>
+#include <glib/gi18n-lib.h>
+
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_FREEDESKTOP_APPLICATION (contacts_freedesktop_application_get_type ())
+#define CONTACTS_FREEDESKTOP_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_FREEDESKTOP_APPLICATION, ContactsFreedesktopApplication))
+#define CONTACTS_IS_FREEDESKTOP_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_FREEDESKTOP_APPLICATION))
+#define CONTACTS_FREEDESKTOP_APPLICATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), 
CONTACTS_TYPE_FREEDESKTOP_APPLICATION, ContactsFreedesktopApplicationIface))
+
+typedef struct _ContactsFreedesktopApplication ContactsFreedesktopApplication;
+typedef struct _ContactsFreedesktopApplicationIface ContactsFreedesktopApplicationIface;
+
+#define CONTACTS_TYPE_FREEDESKTOP_APPLICATION_PROXY (contacts_freedesktop_application_proxy_get_type ())
+typedef GDBusProxy ContactsFreedesktopApplicationProxy;
+typedef GDBusProxyClass ContactsFreedesktopApplicationProxyClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
+#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _g_dir_close0(var) ((var == NULL) ? NULL : (var = (g_dir_close (var), NULL)))
+
+#define CONTACTS_TYPE_STORE (contacts_store_get_type ())
+#define CONTACTS_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_STORE, ContactsStore))
+#define CONTACTS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_STORE, 
ContactsStoreClass))
+#define CONTACTS_IS_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_STORE))
+#define CONTACTS_IS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_STORE))
+#define CONTACTS_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_STORE, 
ContactsStoreClass))
+
+typedef struct _ContactsStore ContactsStore;
+typedef struct _ContactsStoreClass ContactsStoreClass;
+
+#define CONTACTS_TYPE_TYPESET (contacts_typeset_get_type ())
+#define CONTACTS_TYPESET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPESET, ContactsTypeSet))
+#define CONTACTS_TYPESET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_TYPESET, 
ContactsTypeSetClass))
+#define CONTACTS_IS_TYPESET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPESET))
+#define CONTACTS_IS_TYPESET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_TYPESET))
+#define CONTACTS_TYPESET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_TYPESET, 
ContactsTypeSetClass))
+
+typedef struct _ContactsTypeSet ContactsTypeSet;
+typedef struct _ContactsTypeSetClass ContactsTypeSetClass;
+typedef struct _ContactsUtilsSetIndividualPropertyData ContactsUtilsSetIndividualPropertyData;
+typedef struct _ContactsUtilsSetPersonaPropertyData ContactsUtilsSetPersonaPropertyData;
+
+struct _ContactsFreedesktopApplicationIface {
+       GTypeInterface parent_iface;
+       void (*ActivateAction) (ContactsFreedesktopApplication* self, const gchar* action, GVariant** 
parameter, gint parameter_length1, GHashTable* data, GError** error);
+};
+
+struct _ContactsUtilsSetIndividualPropertyData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       FolksIndividual* individual;
+       gchar* property_name;
+       GValue value;
+       FolksPersona** personas_copy;
+       GeeSet* _tmp0_;
+       GeeSet* _tmp1_;
+       gint _tmp2_;
+       gpointer* _tmp3_;
+       gint personas_copy_length1;
+       gint _personas_copy_size_;
+       FolksPersona** _tmp4_;
+       gint _tmp4__length1;
+       FolksPersona** p_collection;
+       gint p_collection_length1;
+       gint _p_collection_size_;
+       gint p_it;
+       FolksPersona* _tmp5_;
+       FolksPersona* p;
+       FolksPersona* _tmp6_;
+       gchar** _tmp7_;
+       gint _tmp7__length1;
+       gchar** _tmp8_;
+       gint _tmp8__length1;
+       FolksPersona* _tmp9_;
+       GValue _tmp10_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsUtilsSetPersonaPropertyData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       FolksPersona* persona;
+       gchar* property_name;
+       GValue new_value;
+       const gchar* _tmp0_;
+       GQuark _tmp2_;
+       GValue _tmp3_;
+       GValue _tmp4_;
+       GValue _tmp5_;
+       GValue _tmp6_;
+       GValue _tmp7_;
+       GValue _tmp8_;
+       GValue _tmp9_;
+       GValue _tmp10_;
+       GValue _tmp11_;
+       GValue _tmp12_;
+       GValue _tmp13_;
+       GValue _tmp14_;
+       GValue _tmp15_;
+       GValue _tmp16_;
+       GValue _tmp17_;
+       GValue _tmp18_;
+       GValue _tmp19_;
+       GValue _tmp20_;
+       GValue _tmp21_;
+       GError* _inner_error0_;
+};
+
+gboolean contacts_is_set (const gchar* str);
+void contacts_add_separator (GtkListBoxRow* row,
+                             GtkListBoxRow* before_row);
+GType contacts_freedesktop_application_proxy_get_type (void) G_GNUC_CONST;
+guint contacts_freedesktop_application_register_object (void* object,
+                                                        GDBusConnection* connection,
+                                                        const gchar* path,
+                                                        GError** error);
+GType contacts_freedesktop_application_get_type (void) G_GNUC_CONST;
+void contacts_freedesktop_application_ActivateAction (ContactsFreedesktopApplication* self,
+                                                      const gchar* action,
+                                                      GVariant** parameter,
+                                                      gint parameter_length1,
+                                                      GHashTable* data,
+                                                      GError** error);
+static GType contacts_freedesktop_application_get_type_once (void);
+static void contacts_freedesktop_application_proxy_g_signal (GDBusProxy* proxy,
+                                                      const gchar* sender_name,
+                                                      const gchar* signal_name,
+                                                      GVariant* parameters);
+static void contacts_freedesktop_application_proxy_ActivateAction (ContactsFreedesktopApplication* self,
+                                                            const gchar* action,
+                                                            GVariant** parameter,
+                                                            gint parameter_length1,
+                                                            GHashTable* data,
+                                                            GError** error);
+static void contacts_freedesktop_application_proxy_contacts_freedesktop_application_interface_init 
(ContactsFreedesktopApplicationIface* iface);
+static void _dbus_contacts_freedesktop_application_ActivateAction (ContactsFreedesktopApplication* self,
+                                                            GVariant* _parameters_,
+                                                            GDBusMethodInvocation* invocation);
+static void contacts_freedesktop_application_dbus_interface_method_call (GDBusConnection* connection,
+                                                                  const gchar* sender,
+                                                                  const gchar* object_path,
+                                                                  const gchar* interface_name,
+                                                                  const gchar* method_name,
+                                                                  GVariant* parameters,
+                                                                  GDBusMethodInvocation* invocation,
+                                                                  gpointer user_data);
+static GVariant* contacts_freedesktop_application_dbus_interface_get_property (GDBusConnection* connection,
+                                                                        const gchar* sender,
+                                                                        const gchar* object_path,
+                                                                        const gchar* interface_name,
+                                                                        const gchar* property_name,
+                                                                        GError** error,
+                                                                        gpointer user_data);
+static gboolean contacts_freedesktop_application_dbus_interface_set_property (GDBusConnection* connection,
+                                                                       const gchar* sender,
+                                                                       const gchar* object_path,
+                                                                       const gchar* interface_name,
+                                                                       const gchar* property_name,
+                                                                       GVariant* value,
+                                                                       GError** error,
+                                                                       gpointer user_data);
+static void _contacts_freedesktop_application_unregister_object (gpointer user_data);
+void contacts_activate_action (const gchar* app_id,
+                               const gchar* action,
+                               GVariant* parameter,
+                               guint32 timestamp);
+static void _vala_array_add1 (GVariant** * array,
+                       gint* length,
+                       gint* size,
+                       GVariant* value);
+static void _g_object_unref0_ (gpointer var);
+static inline void _g_list_free__g_object_unref0_ (GList* self);
+static void _g_free0_ (gpointer var);
+static void _g_variant_unref0_ (gpointer var);
+void contacts_utils_compose_mail (const gchar* email);
+gpointer contacts_utils_get_first (GType t_type,
+                                   GBoxedCopyFunc t_dup_func,
+                                   GDestroyNotify t_destroy_func,
+                                   GeeCollection* collection);
+void contacts_utils_grab_entry_focus_no_select (GtkEntry* entry);
+gchar** contacts_utils_get_stock_avatars (gint* result_length1);
+static gchar** _vala_array_dup2 (gchar** self,
+                          gint length);
+static void _vala_array_add2 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+GType contacts_store_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsStore, g_object_unref)
+FolksPersonaStore** contacts_utils_get_eds_address_books (ContactsStore* contacts_store,
+                                                          gint* result_length1);
+FolksBackendStore* contacts_store_get_backend_store (ContactsStore* self);
+static void _vala_array_add3 (FolksPersonaStore** * array,
+                       gint* length,
+                       gint* size,
+                       FolksPersonaStore* value);
+void contacts_utils_show_error_dialog (const gchar* _error_,
+                                       GtkWindow* toplevel);
+gboolean contacts_utils_has_main_persona (FolksIndividual* individual);
+gboolean contacts_utils_persona_is_google_other (FolksPersona* persona);
+gboolean contacts_utils_is_ignorable (FolksIndividual* individual);
+gboolean contacts_utils_suggest_link_to (ContactsStore* store,
+                                         FolksIndividual* _self_,
+                                         FolksIndividual* other);
+gboolean contacts_utils_non_linkable (FolksIndividual* individual);
+gboolean contacts_store_may_suggest_link (ContactsStore* self,
+                                          FolksIndividual* a,
+                                          FolksIndividual* b);
+gboolean contacts_utils_has_mainable_persona (FolksIndividual* individual);
+gboolean contacts_utils_has_pref (FolksAbstractFieldDetails* details);
+GType contacts_typeset_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeSet, g_object_unref)
+ContactsTypeSet* contacts_utils_select_typeset_from_fielddetails (FolksAbstractFieldDetails* a);
+ContactsTypeSet* contacts_typeset_get_email (void);
+ContactsTypeSet* contacts_typeset_get_phone (void);
+ContactsTypeSet* contacts_typeset_get_general (void);
+gint contacts_utils_compare_fields (void* _a,
+                                    void* _b);
+gchar* contacts_typeset_format_type (ContactsTypeSet* self,
+                                     FolksAbstractFieldDetails* detail);
+GeeList* contacts_utils_sort_fields (GType t_type,
+                                     GBoxedCopyFunc t_dup_func,
+                                     GDestroyNotify t_destroy_func,
+                                     GeeCollection* fields);
+static gint _contacts_utils_compare_fields_gcompare_data_func (gconstpointer a,
+                                                        gconstpointer b,
+                                                        gpointer self);
+gchar** contacts_utils_format_address (FolksPostalAddress* addr,
+                                       gint* result_length1);
+static void _vala_array_add4 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+static void _vala_array_add5 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+static void _vala_array_add6 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+static void _vala_array_add7 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+static void _vala_array_add8 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+static void _vala_array_add9 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+static void _vala_array_add10 (gchar** * array,
+                        gint* length,
+                        gint* size,
+                        gchar* value);
+static void _vala_array_add11 (gchar** * array,
+                        gint* length,
+                        gint* size,
+                        gchar* value);
+gboolean contacts_utils_can_remove_personas (FolksIndividual* individual);
+GeeList* contacts_utils_get_personas_for_display (FolksIndividual* individual);
+static gint __lambda6_ (FolksPersona* a,
+                 FolksPersona* b);
+gboolean contacts_utils_persona_is_google (FolksPersona* persona);
+static gint ___lambda6__gcompare_data_func (gconstpointer a,
+                                     gconstpointer b,
+                                     gpointer self);
+FolksPersona* contacts_utils_find_primary_persona (FolksIndividual* individual);
+FolksPersona* contacts_utils_find_persona_from_uid (FolksIndividual* individual,
+                                                    const gchar* uid);
+gchar* contacts_utils_format_persona_stores (FolksIndividual* individual);
+gchar* contacts_utils_format_persona_store_name_for_contact (FolksPersona* persona);
+gchar* contacts_utils_format_persona_store_name (FolksPersonaStore* store);
+gchar* contacts_lookup_esource_name_by_uid (const gchar* uid);
+gboolean contacts_utils_persona_is_google_profile (FolksPersona* persona);
+gboolean contacts_esource_uid_is_google (const gchar* uid);
+gchar* contacts_lookup_esource_name_by_uid_for_contact (const gchar* uid);
+static void contacts_utils_set_individual_property_data_free (gpointer _data);
+void contacts_utils_set_individual_property (FolksIndividual* individual,
+                                             const gchar* property_name,
+                                             GValue* value,
+                                             GAsyncReadyCallback _callback_,
+                                             gpointer _user_data_);
+void contacts_utils_set_individual_property_finish (GAsyncResult* _res_,
+                                                    GError** error);
+static gboolean contacts_utils_set_individual_property_co (ContactsUtilsSetIndividualPropertyData* _data_);
+static gboolean _vala_string_array_contains (gchar* * stack,
+                                      gint stack_length,
+                                      const gchar* needle);
+void contacts_utils_set_persona_property (FolksPersona* persona,
+                                          const gchar* property_name,
+                                          GValue* new_value,
+                                          GAsyncReadyCallback _callback_,
+                                          gpointer _user_data_);
+void contacts_utils_set_persona_property_finish (GAsyncResult* _res_,
+                                                 GError** error);
+static void contacts_utils_set_individual_property_ready (GObject* source_object,
+                                                   GAsyncResult* _res_,
+                                                   gpointer _user_data_);
+static void contacts_utils_set_persona_property_data_free (gpointer _data);
+static gboolean contacts_utils_set_persona_property_co (ContactsUtilsSetPersonaPropertyData* _data_);
+static void contacts_utils_set_persona_property_ready (GObject* source_object,
+                                                GAsyncResult* _res_,
+                                                gpointer _user_data_);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+
+static const GDBusArgInfo _contacts_freedesktop_application_dbus_arg_info_ActivateAction_action = {-1, 
"action", "s", NULL};
+static const GDBusArgInfo _contacts_freedesktop_application_dbus_arg_info_ActivateAction_parameter = {-1, 
"parameter", "av", NULL};
+static const GDBusArgInfo _contacts_freedesktop_application_dbus_arg_info_ActivateAction_data = {-1, "data", 
"a{sv}", NULL};
+static const GDBusArgInfo * const _contacts_freedesktop_application_dbus_arg_info_ActivateAction_in[] = 
{&_contacts_freedesktop_application_dbus_arg_info_ActivateAction_action, 
&_contacts_freedesktop_application_dbus_arg_info_ActivateAction_parameter, 
&_contacts_freedesktop_application_dbus_arg_info_ActivateAction_data, NULL};
+static const GDBusArgInfo * const _contacts_freedesktop_application_dbus_arg_info_ActivateAction_out[] = 
{NULL};
+static const GDBusMethodInfo _contacts_freedesktop_application_dbus_method_info_ActivateAction = {-1, 
"ActivateAction", (GDBusArgInfo **) (&_contacts_freedesktop_application_dbus_arg_info_ActivateAction_in), 
(GDBusArgInfo **) (&_contacts_freedesktop_application_dbus_arg_info_ActivateAction_out), NULL};
+static const GDBusMethodInfo * const _contacts_freedesktop_application_dbus_method_info[] = 
{&_contacts_freedesktop_application_dbus_method_info_ActivateAction, NULL};
+static const GDBusSignalInfo * const _contacts_freedesktop_application_dbus_signal_info[] = {NULL};
+static const GDBusPropertyInfo * const _contacts_freedesktop_application_dbus_property_info[] = {NULL};
+static const GDBusInterfaceInfo _contacts_freedesktop_application_dbus_interface_info = {-1, 
"org.freedesktop.Application", (GDBusMethodInfo **) (&_contacts_freedesktop_application_dbus_method_info), 
(GDBusSignalInfo **) (&_contacts_freedesktop_application_dbus_signal_info), (GDBusPropertyInfo **) 
(&_contacts_freedesktop_application_dbus_property_info), NULL};
+static const GDBusInterfaceVTable _contacts_freedesktop_application_dbus_interface_vtable = 
{contacts_freedesktop_application_dbus_interface_method_call, 
contacts_freedesktop_application_dbus_interface_get_property, 
contacts_freedesktop_application_dbus_interface_set_property};
+static GRegex* _tmp_regex_0 = NULL;
+
+gboolean
+contacts_is_set (const gchar* str)
+{
+       gboolean _tmp0_ = FALSE;
+       gboolean result = FALSE;
+#line 27 "../src/contacts-utils.vala"
+       if (str != NULL) {
+#line 27 "../src/contacts-utils.vala"
+               _tmp0_ = g_strcmp0 (str, "") != 0;
+#line 374 "contacts-utils.c"
+       } else {
+#line 27 "../src/contacts-utils.vala"
+               _tmp0_ = FALSE;
+#line 378 "contacts-utils.c"
+       }
+#line 27 "../src/contacts-utils.vala"
+       result = _tmp0_;
+#line 27 "../src/contacts-utils.vala"
+       return result;
+#line 384 "contacts-utils.c"
+}
+
+void
+contacts_add_separator (GtkListBoxRow* row,
+                        GtkListBoxRow* before_row)
+{
+       GtkSeparator* _tmp0_;
+       GtkSeparator* _tmp1_;
+#line 30 "../src/contacts-utils.vala"
+       g_return_if_fail (row != NULL);
+#line 31 "../src/contacts-utils.vala"
+       _tmp0_ = (GtkSeparator*) gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+#line 31 "../src/contacts-utils.vala"
+       g_object_ref_sink (_tmp0_);
+#line 31 "../src/contacts-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 31 "../src/contacts-utils.vala"
+       gtk_list_box_row_set_header (row, (GtkWidget*) _tmp1_);
+#line 31 "../src/contacts-utils.vala"
+       _g_object_unref0 (_tmp1_);
+#line 405 "contacts-utils.c"
+}
+
+void
+contacts_freedesktop_application_ActivateAction (ContactsFreedesktopApplication* self,
+                                                 const gchar* action,
+                                                 GVariant** parameter,
+                                                 gint parameter_length1,
+                                                 GHashTable* data,
+                                                 GError** error)
+{
+#line 37 "../src/contacts-utils.vala"
+       g_return_if_fail (self != NULL);
+#line 37 "../src/contacts-utils.vala"
+       CONTACTS_FREEDESKTOP_APPLICATION_GET_INTERFACE (self)->ActivateAction (self, action, parameter, 
parameter_length1, data, error);
+#line 420 "contacts-utils.c"
+}
+
+static void
+contacts_freedesktop_application_default_init (ContactsFreedesktopApplicationIface * iface,
+                                               gpointer iface_data)
+{
+}
+
+static GType
+contacts_freedesktop_application_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsFreedesktopApplicationIface), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) 
contacts_freedesktop_application_default_init, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) 
NULL, NULL };
+       GType contacts_freedesktop_application_type_id;
+       contacts_freedesktop_application_type_id = g_type_register_static (G_TYPE_INTERFACE, 
"ContactsFreedesktopApplication", &g_define_type_info, 0);
+       g_type_interface_add_prerequisite (contacts_freedesktop_application_type_id, G_TYPE_OBJECT);
+       g_type_set_qdata (contacts_freedesktop_application_type_id, g_quark_from_static_string 
("vala-dbus-proxy-type"), (void*) contacts_freedesktop_application_proxy_get_type);
+       g_type_set_qdata (contacts_freedesktop_application_type_id, g_quark_from_static_string 
("vala-dbus-interface-name"), "org.freedesktop.Application");
+       g_type_set_qdata (contacts_freedesktop_application_type_id, g_quark_from_static_string 
("vala-dbus-interface-info"), (void*) (&_contacts_freedesktop_application_dbus_interface_info));
+       g_type_set_qdata (contacts_freedesktop_application_type_id, g_quark_from_static_string 
("vala-dbus-register-object"), (void*) contacts_freedesktop_application_register_object);
+       return contacts_freedesktop_application_type_id;
+}
+
+GType
+contacts_freedesktop_application_get_type (void)
+{
+       static volatile gsize contacts_freedesktop_application_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_freedesktop_application_type_id__volatile)) {
+               GType contacts_freedesktop_application_type_id;
+               contacts_freedesktop_application_type_id = contacts_freedesktop_application_get_type_once ();
+               g_once_init_leave (&contacts_freedesktop_application_type_id__volatile, 
contacts_freedesktop_application_type_id);
+       }
+       return contacts_freedesktop_application_type_id__volatile;
+}
+
+G_DEFINE_TYPE_EXTENDED (ContactsFreedesktopApplicationProxy, contacts_freedesktop_application_proxy, 
G_TYPE_DBUS_PROXY, 0, G_IMPLEMENT_INTERFACE (CONTACTS_TYPE_FREEDESKTOP_APPLICATION, 
contacts_freedesktop_application_proxy_contacts_freedesktop_application_interface_init) )
+static void
+contacts_freedesktop_application_proxy_class_init (ContactsFreedesktopApplicationProxyClass* klass)
+{
+       G_DBUS_PROXY_CLASS (klass)->g_signal = contacts_freedesktop_application_proxy_g_signal;
+}
+
+static void
+contacts_freedesktop_application_proxy_g_signal (GDBusProxy* proxy,
+                                                 const gchar* sender_name,
+                                                 const gchar* signal_name,
+                                                 GVariant* parameters)
+{
+}
+
+static void
+contacts_freedesktop_application_proxy_init (ContactsFreedesktopApplicationProxy* self)
+{
+}
+
+static void
+contacts_freedesktop_application_proxy_ActivateAction (ContactsFreedesktopApplication* self,
+                                                       const gchar* action,
+                                                       GVariant** parameter,
+                                                       gint parameter_length1,
+                                                       GHashTable* data,
+                                                       GError** error)
+{
+       GDBusMessage *_message;
+       GVariant *_arguments;
+       GVariantBuilder _arguments_builder;
+       GVariant** _tmp0_;
+       GVariantBuilder _tmp1_;
+       gint _tmp2_;
+       GVariantBuilder _tmp3_;
+       GHashTableIter _tmp4_;
+       gpointer _tmp5_;
+       gpointer _tmp6_;
+       GDBusMessage *_reply_message;
+       _message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), 
g_dbus_proxy_get_object_path ((GDBusProxy *) self), "org.freedesktop.Application", "ActivateAction");
+       g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+       g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (action));
+       _tmp0_ = parameter;
+       g_variant_builder_init (&_tmp1_, G_VARIANT_TYPE ("av"));
+       for (_tmp2_ = 0; _tmp2_ < parameter_length1; _tmp2_++) {
+               g_variant_builder_add_value (&_tmp1_, g_variant_new_variant (*_tmp0_));
+               _tmp0_++;
+       }
+       g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp1_));
+       g_hash_table_iter_init (&_tmp4_, data);
+       g_variant_builder_init (&_tmp3_, G_VARIANT_TYPE ("a{sv}"));
+       while (g_hash_table_iter_next (&_tmp4_, &_tmp5_, &_tmp6_)) {
+               gchar* _key;
+               GVariant* _value;
+               _key = (gchar*) _tmp5_;
+               _value = (GVariant*) _tmp6_;
+               g_variant_builder_add (&_tmp3_, "{?*}", g_variant_new_string (_key), g_variant_new_variant 
(_value));
+       }
+       g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp3_));
+       _arguments = g_variant_builder_end (&_arguments_builder);
+       g_dbus_message_set_body (_message, _arguments);
+       _reply_message = g_dbus_connection_send_message_with_reply_sync (g_dbus_proxy_get_connection 
((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout 
((GDBusProxy *) self), NULL, NULL, error);
+       g_object_unref (_message);
+       if (!_reply_message) {
+               return;
+       }
+       if (g_dbus_message_to_gerror (_reply_message, error)) {
+               g_object_unref (_reply_message);
+               return;
+       }
+       g_object_unref (_reply_message);
+}
+
+static void
+contacts_freedesktop_application_proxy_contacts_freedesktop_application_interface_init 
(ContactsFreedesktopApplicationIface* iface)
+{
+       iface->ActivateAction = contacts_freedesktop_application_proxy_ActivateAction;
+}
+
+static void
+_dbus_contacts_freedesktop_application_ActivateAction (ContactsFreedesktopApplication* self,
+                                                       GVariant* _parameters_,
+                                                       GDBusMethodInvocation* invocation)
+{
+       GError* error = NULL;
+       GVariantIter _arguments_iter;
+       gchar* action = NULL;
+       GVariant* _tmp7_;
+       GVariant** parameter = NULL;
+       gint parameter_length1 = 0;
+       GVariant* _tmp8_;
+       GVariant** _tmp9_;
+       gint _tmp9__length;
+       gint _tmp9__size;
+       gint _tmp9__length1;
+       GVariantIter _tmp10_;
+       GVariant* _tmp11_;
+       GHashTable* data = NULL;
+       GVariant* _tmp12_;
+       GHashTable* _tmp13_;
+       GVariantIter _tmp14_;
+       GVariant* _tmp15_;
+       GVariant* _tmp16_;
+       GDBusMessage* _reply_message = NULL;
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       g_variant_iter_init (&_arguments_iter, _parameters_);
+       _tmp7_ = g_variant_iter_next_value (&_arguments_iter);
+       action = g_variant_dup_string (_tmp7_, NULL);
+       g_variant_unref (_tmp7_);
+       _tmp8_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp9_ = g_new (GVariant*, 5);
+       _tmp9__length = 0;
+       _tmp9__size = 4;
+       _tmp9__length1 = 0;
+       g_variant_iter_init (&_tmp10_, _tmp8_);
+       for (; (_tmp11_ = g_variant_iter_next_value (&_tmp10_)) != NULL; _tmp9__length1++) {
+               if (_tmp9__size == _tmp9__length) {
+                       _tmp9__size = 2 * _tmp9__size;
+                       _tmp9_ = g_renew (GVariant*, _tmp9_, _tmp9__size + 1);
+               }
+               _tmp9_[_tmp9__length++] = g_variant_get_variant (_tmp11_);
+               g_variant_unref (_tmp11_);
+       }
+       parameter_length1 = _tmp9__length1;
+       _tmp9_[_tmp9__length] = NULL;
+       parameter = _tmp9_;
+       g_variant_unref (_tmp8_);
+       _tmp12_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp13_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_variant_unref);
+       g_variant_iter_init (&_tmp14_, _tmp12_);
+       while (g_variant_iter_loop (&_tmp14_, "{?*}", &_tmp15_, &_tmp16_)) {
+               g_hash_table_insert (_tmp13_, g_variant_dup_string (_tmp15_, NULL), g_variant_get_variant 
(_tmp16_));
+       }
+       data = _tmp13_;
+       g_variant_unref (_tmp12_);
+       contacts_freedesktop_application_ActivateAction (self, action, parameter, parameter_length1, data, 
&error);
+       if (error) {
+               g_dbus_method_invocation_return_gerror (invocation, error);
+               g_error_free (error);
+               return;
+       }
+       _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_message_set_body (_reply_message, _reply);
+       g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, 
G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
+       g_object_unref (invocation);
+       g_object_unref (_reply_message);
+       _g_free0 (action);
+       parameter = (_vala_array_free (parameter, parameter_length1, (GDestroyNotify) g_variant_unref), NULL);
+       _g_hash_table_unref0 (data);
+}
+
+static void
+contacts_freedesktop_application_dbus_interface_method_call (GDBusConnection* connection,
+                                                             const gchar* sender,
+                                                             const gchar* object_path,
+                                                             const gchar* interface_name,
+                                                             const gchar* method_name,
+                                                             GVariant* parameters,
+                                                             GDBusMethodInvocation* invocation,
+                                                             gpointer user_data)
+{
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       if (strcmp (method_name, "ActivateAction") == 0) {
+               _dbus_contacts_freedesktop_application_ActivateAction (object, parameters, invocation);
+       } else {
+               g_object_unref (invocation);
+       }
+}
+
+static GVariant*
+contacts_freedesktop_application_dbus_interface_get_property (GDBusConnection* connection,
+                                                              const gchar* sender,
+                                                              const gchar* object_path,
+                                                              const gchar* interface_name,
+                                                              const gchar* property_name,
+                                                              GError** error,
+                                                              gpointer user_data)
+{
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       return NULL;
+}
+
+static gboolean
+contacts_freedesktop_application_dbus_interface_set_property (GDBusConnection* connection,
+                                                              const gchar* sender,
+                                                              const gchar* object_path,
+                                                              const gchar* interface_name,
+                                                              const gchar* property_name,
+                                                              GVariant* value,
+                                                              GError** error,
+                                                              gpointer user_data)
+{
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       return FALSE;
+}
+
+guint
+contacts_freedesktop_application_register_object (gpointer object,
+                                                  GDBusConnection* connection,
+                                                  const gchar* path,
+                                                  GError** error)
+{
+       guint result;
+       gpointer *data;
+       data = g_new (gpointer, 3);
+       data[0] = g_object_ref (object);
+       data[1] = g_object_ref (connection);
+       data[2] = g_strdup (path);
+       result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) 
(&_contacts_freedesktop_application_dbus_interface_info), 
&_contacts_freedesktop_application_dbus_interface_vtable, data, 
_contacts_freedesktop_application_unregister_object, error);
+       if (!result) {
+               return 0;
+       }
+       return result;
+}
+
+static void
+_contacts_freedesktop_application_unregister_object (gpointer user_data)
+{
+       gpointer* data;
+       data = user_data;
+       g_object_unref (data[0]);
+       g_object_unref (data[1]);
+       g_free (data[2]);
+       g_free (data);
+}
+
+static gchar*
+string_replace (const gchar* self,
+                const gchar* old,
+                const gchar* replacement)
+{
+       gboolean _tmp0_ = FALSE;
+       gboolean _tmp1_ = FALSE;
+       GError* _inner_error0_ = NULL;
+       gchar* result = NULL;
+#line 1534 "glib-2.0.vapi"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 1534 "glib-2.0.vapi"
+       g_return_val_if_fail (old != NULL, NULL);
+#line 1534 "glib-2.0.vapi"
+       g_return_val_if_fail (replacement != NULL, NULL);
+#line 1535 "glib-2.0.vapi"
+       if ((*((gchar*) self)) == '\0') {
+#line 1535 "glib-2.0.vapi"
+               _tmp1_ = TRUE;
+#line 712 "contacts-utils.c"
+       } else {
+#line 1535 "glib-2.0.vapi"
+               _tmp1_ = (*((gchar*) old)) == '\0';
+#line 716 "contacts-utils.c"
+       }
+#line 1535 "glib-2.0.vapi"
+       if (_tmp1_) {
+#line 1535 "glib-2.0.vapi"
+               _tmp0_ = TRUE;
+#line 722 "contacts-utils.c"
+       } else {
+#line 1535 "glib-2.0.vapi"
+               _tmp0_ = g_strcmp0 (old, replacement) == 0;
+#line 726 "contacts-utils.c"
+       }
+#line 1535 "glib-2.0.vapi"
+       if (_tmp0_) {
+#line 730 "contacts-utils.c"
+               gchar* _tmp2_;
+#line 1536 "glib-2.0.vapi"
+               _tmp2_ = g_strdup (self);
+#line 1536 "glib-2.0.vapi"
+               result = _tmp2_;
+#line 1536 "glib-2.0.vapi"
+               return result;
+#line 738 "contacts-utils.c"
+       }
+       {
+               GRegex* regex = NULL;
+               gchar* _tmp3_;
+               gchar* _tmp4_;
+               GRegex* _tmp5_;
+               GRegex* _tmp6_;
+               gchar* _tmp7_ = NULL;
+               GRegex* _tmp8_;
+               gchar* _tmp9_;
+               gchar* _tmp10_;
+#line 1539 "glib-2.0.vapi"
+               _tmp3_ = g_regex_escape_string (old, -1);
+#line 1539 "glib-2.0.vapi"
+               _tmp4_ = _tmp3_;
+#line 1539 "glib-2.0.vapi"
+               _tmp5_ = g_regex_new (_tmp4_, 0, 0, &_inner_error0_);
+#line 1539 "glib-2.0.vapi"
+               _tmp6_ = _tmp5_;
+#line 1539 "glib-2.0.vapi"
+               _g_free0 (_tmp4_);
+#line 1539 "glib-2.0.vapi"
+               regex = _tmp6_;
+#line 1539 "glib-2.0.vapi"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1539 "glib-2.0.vapi"
+                       if (_inner_error0_->domain == G_REGEX_ERROR) {
+#line 766 "contacts-utils.c"
+                               goto __catch8_g_regex_error;
+                       }
+#line 1539 "glib-2.0.vapi"
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 1539 "glib-2.0.vapi"
+                       g_clear_error (&_inner_error0_);
+#line 1539 "glib-2.0.vapi"
+                       return NULL;
+#line 775 "contacts-utils.c"
+               }
+#line 1540 "glib-2.0.vapi"
+               _tmp8_ = regex;
+#line 1540 "glib-2.0.vapi"
+               _tmp9_ = g_regex_replace_literal (_tmp8_, self, (gssize) -1, 0, replacement, 0, 
&_inner_error0_);
+#line 1540 "glib-2.0.vapi"
+               _tmp7_ = _tmp9_;
+#line 1540 "glib-2.0.vapi"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1540 "glib-2.0.vapi"
+                       _g_regex_unref0 (regex);
+#line 1540 "glib-2.0.vapi"
+                       if (_inner_error0_->domain == G_REGEX_ERROR) {
+#line 789 "contacts-utils.c"
+                               goto __catch8_g_regex_error;
+                       }
+#line 1540 "glib-2.0.vapi"
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 1540 "glib-2.0.vapi"
+                       g_clear_error (&_inner_error0_);
+#line 1540 "glib-2.0.vapi"
+                       return NULL;
+#line 798 "contacts-utils.c"
+               }
+#line 1540 "glib-2.0.vapi"
+               _tmp10_ = _tmp7_;
+#line 1540 "glib-2.0.vapi"
+               _tmp7_ = NULL;
+#line 1540 "glib-2.0.vapi"
+               result = _tmp10_;
+#line 1540 "glib-2.0.vapi"
+               _g_free0 (_tmp7_);
+#line 1540 "glib-2.0.vapi"
+               _g_regex_unref0 (regex);
+#line 1540 "glib-2.0.vapi"
+               return result;
+#line 812 "contacts-utils.c"
+       }
+       goto __finally8;
+       __catch8_g_regex_error:
+       {
+               GError* e = NULL;
+#line 1538 "glib-2.0.vapi"
+               e = _inner_error0_;
+#line 1538 "glib-2.0.vapi"
+               _inner_error0_ = NULL;
+#line 1542 "glib-2.0.vapi"
+               g_assert_not_reached ();
+#line 1538 "glib-2.0.vapi"
+               _g_error_free0 (e);
+#line 826 "contacts-utils.c"
+       }
+       __finally8:
+#line 1538 "glib-2.0.vapi"
+       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 1538 "glib-2.0.vapi"
+       g_clear_error (&_inner_error0_);
+#line 1538 "glib-2.0.vapi"
+       return NULL;
+#line 835 "contacts-utils.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 50 "../src/contacts-utils.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 843 "contacts-utils.c"
+}
+
+static gpointer
+_g_variant_ref0 (gpointer self)
+{
+#line 59 "../src/contacts-utils.vala"
+       return self ? g_variant_ref (self) : NULL;
+#line 851 "contacts-utils.c"
+}
+
+static void
+_vala_array_add1 (GVariant** * array,
+                  gint* length,
+                  gint* size,
+                  GVariant* value)
+{
+#line 59 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 59 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 59 "../src/contacts-utils.vala"
+               *array = g_renew (GVariant*, *array, (*size) + 1);
+#line 866 "contacts-utils.c"
+       }
+#line 59 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 59 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 872 "contacts-utils.c"
+}
+
+static void
+_g_object_unref0_ (gpointer var)
+{
+#line 61 "../src/contacts-utils.vala"
+       (var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
+#line 880 "contacts-utils.c"
+}
+
+static inline void
+_g_list_free__g_object_unref0_ (GList* self)
+{
+#line 61 "../src/contacts-utils.vala"
+       g_list_free_full (self, (GDestroyNotify) _g_object_unref0_);
+#line 888 "contacts-utils.c"
+}
+
+static void
+_g_free0_ (gpointer var)
+{
+#line 63 "../src/contacts-utils.vala"
+       var = (g_free (var), NULL);
+#line 896 "contacts-utils.c"
+}
+
+static void
+_g_variant_unref0_ (gpointer var)
+{
+#line 63 "../src/contacts-utils.vala"
+       (var == NULL) ? NULL : (var = (g_variant_unref (var), NULL));
+#line 904 "contacts-utils.c"
+}
+
+void
+contacts_activate_action (const gchar* app_id,
+                          const gchar* action,
+                          GVariant* parameter,
+                          guint32 timestamp)
+{
+       ContactsFreedesktopApplication* con = NULL;
+       GError* _inner_error0_ = NULL;
+#line 42 "../src/contacts-utils.vala"
+       g_return_if_fail (app_id != NULL);
+#line 42 "../src/contacts-utils.vala"
+       g_return_if_fail (action != NULL);
+#line 46 "../src/contacts-utils.vala"
+       con = NULL;
+#line 921 "contacts-utils.c"
+       {
+               gchar* object_path = NULL;
+               gchar* _tmp0_;
+               gchar* _tmp1_;
+               gchar* _tmp2_;
+               gchar* _tmp3_;
+               GdkDisplay* display = NULL;
+               GdkDisplay* _tmp4_;
+               GdkDisplay* _tmp5_;
+               GDesktopAppInfo* info = NULL;
+               gchar* _tmp6_;
+               gchar* _tmp7_;
+               GDesktopAppInfo* _tmp8_;
+               GDesktopAppInfo* _tmp9_;
+               GdkAppLaunchContext* context = NULL;
+               GdkDisplay* _tmp10_;
+               GdkAppLaunchContext* _tmp11_;
+               ContactsFreedesktopApplication* _tmp12_ = NULL;
+               const gchar* _tmp13_;
+               ContactsFreedesktopApplication* _tmp14_;
+               ContactsFreedesktopApplication* _tmp15_;
+               GdkAppLaunchContext* _tmp16_;
+               GVariant** param_array = NULL;
+               GVariant** _tmp17_;
+               gint param_array_length1;
+               gint _param_array_size_;
+               gchar* startup_id = NULL;
+               GdkAppLaunchContext* _tmp20_;
+               GDesktopAppInfo* _tmp21_;
+               GList* _tmp22_;
+               gchar* _tmp23_;
+               gchar* _tmp24_;
+               GHashTable* data = NULL;
+               GHashFunc _tmp25_;
+               GEqualFunc _tmp26_;
+               GHashTable* _tmp27_;
+               GHashTable* _tmp28_;
+               gchar* _tmp29_;
+               const gchar* _tmp30_;
+               GVariant* _tmp31_;
+               ContactsFreedesktopApplication* _tmp32_;
+               GVariant** _tmp33_;
+               gint _tmp33__length1;
+               GHashTable* _tmp34_;
+#line 49 "../src/contacts-utils.vala"
+               _tmp0_ = string_replace (app_id, ".", "/");
+#line 49 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 49 "../src/contacts-utils.vala"
+               _tmp2_ = g_strconcat ("/", _tmp1_, NULL);
+#line 49 "../src/contacts-utils.vala"
+               _tmp3_ = _tmp2_;
+#line 49 "../src/contacts-utils.vala"
+               _g_free0 (_tmp1_);
+#line 49 "../src/contacts-utils.vala"
+               object_path = _tmp3_;
+#line 50 "../src/contacts-utils.vala"
+               _tmp4_ = gdk_display_get_default ();
+#line 50 "../src/contacts-utils.vala"
+               _tmp5_ = _g_object_ref0 (_tmp4_);
+#line 50 "../src/contacts-utils.vala"
+               display = _tmp5_;
+#line 51 "../src/contacts-utils.vala"
+               _tmp6_ = g_strconcat (app_id, ".desktop", NULL);
+#line 51 "../src/contacts-utils.vala"
+               _tmp7_ = _tmp6_;
+#line 51 "../src/contacts-utils.vala"
+               _tmp8_ = g_desktop_app_info_new (_tmp7_);
+#line 51 "../src/contacts-utils.vala"
+               _tmp9_ = _tmp8_;
+#line 51 "../src/contacts-utils.vala"
+               _g_free0 (_tmp7_);
+#line 51 "../src/contacts-utils.vala"
+               info = _tmp9_;
+#line 52 "../src/contacts-utils.vala"
+               _tmp10_ = display;
+#line 52 "../src/contacts-utils.vala"
+               _tmp11_ = gdk_display_get_app_launch_context (_tmp10_);
+#line 52 "../src/contacts-utils.vala"
+               context = _tmp11_;
+#line 54 "../src/contacts-utils.vala"
+               _tmp13_ = object_path;
+#line 54 "../src/contacts-utils.vala"
+               _tmp14_ = (ContactsFreedesktopApplication*) g_initable_new 
(CONTACTS_TYPE_FREEDESKTOP_APPLICATION_PROXY, NULL, &_inner_error0_, "g-flags", 0, "g-name", app_id, 
"g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", _tmp13_, "g-interface-name", 
"org.freedesktop.Application", "g-interface-info", g_type_get_qdata (CONTACTS_TYPE_FREEDESKTOP_APPLICATION, 
g_quark_from_static_string ("vala-dbus-interface-info")), NULL);
+#line 54 "../src/contacts-utils.vala"
+               _tmp12_ = (ContactsFreedesktopApplication*) _tmp14_;
+#line 54 "../src/contacts-utils.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 54 "../src/contacts-utils.vala"
+                       _g_object_unref0 (context);
+#line 54 "../src/contacts-utils.vala"
+                       _g_object_unref0 (info);
+#line 54 "../src/contacts-utils.vala"
+                       _g_object_unref0 (display);
+#line 54 "../src/contacts-utils.vala"
+                       _g_free0 (object_path);
+#line 1018 "contacts-utils.c"
+                       goto __catch7_g_error;
+               }
+#line 54 "../src/contacts-utils.vala"
+               _tmp15_ = _tmp12_;
+#line 54 "../src/contacts-utils.vala"
+               _tmp12_ = NULL;
+#line 54 "../src/contacts-utils.vala"
+               _g_object_unref0 (con);
+#line 54 "../src/contacts-utils.vala"
+               con = _tmp15_;
+#line 55 "../src/contacts-utils.vala"
+               _tmp16_ = context;
+#line 55 "../src/contacts-utils.vala"
+               gdk_app_launch_context_set_timestamp (_tmp16_, timestamp);
+#line 57 "../src/contacts-utils.vala"
+               _tmp17_ = g_new0 (GVariant*, 0 + 1);
+#line 57 "../src/contacts-utils.vala"
+               param_array = _tmp17_;
+#line 57 "../src/contacts-utils.vala"
+               param_array_length1 = 0;
+#line 57 "../src/contacts-utils.vala"
+               _param_array_size_ = param_array_length1;
+#line 58 "../src/contacts-utils.vala"
+               if (parameter != NULL) {
+#line 1043 "contacts-utils.c"
+                       GVariant** _tmp18_;
+                       gint _tmp18__length1;
+                       GVariant* _tmp19_;
+#line 59 "../src/contacts-utils.vala"
+                       _tmp18_ = param_array;
+#line 59 "../src/contacts-utils.vala"
+                       _tmp18__length1 = param_array_length1;
+#line 59 "../src/contacts-utils.vala"
+                       _tmp19_ = _g_variant_ref0 (parameter);
+#line 59 "../src/contacts-utils.vala"
+                       _vala_array_add1 (&param_array, &param_array_length1, &_param_array_size_, _tmp19_);
+#line 1055 "contacts-utils.c"
+               }
+#line 61 "../src/contacts-utils.vala"
+               _tmp20_ = context;
+#line 61 "../src/contacts-utils.vala"
+               _tmp21_ = info;
+#line 61 "../src/contacts-utils.vala"
+               _tmp22_ = NULL;
+#line 61 "../src/contacts-utils.vala"
+               _tmp23_ = g_app_launch_context_get_startup_notify_id ((GAppLaunchContext*) _tmp20_, 
(GAppInfo*) _tmp21_, _tmp22_);
+#line 61 "../src/contacts-utils.vala"
+               _tmp24_ = _tmp23_;
+#line 61 "../src/contacts-utils.vala"
+               (_tmp22_ == NULL) ? NULL : (_tmp22_ = (_g_list_free__g_object_unref0_ (_tmp22_), NULL));
+#line 61 "../src/contacts-utils.vala"
+               startup_id = _tmp24_;
+#line 63 "../src/contacts-utils.vala"
+               _tmp25_ = g_str_hash;
+#line 63 "../src/contacts-utils.vala"
+               _tmp26_ = g_str_equal;
+#line 63 "../src/contacts-utils.vala"
+               _tmp27_ = g_hash_table_new_full (_tmp25_, _tmp26_, _g_free0_, _g_variant_unref0_);
+#line 63 "../src/contacts-utils.vala"
+               data = _tmp27_;
+#line 64 "../src/contacts-utils.vala"
+               _tmp28_ = data;
+#line 64 "../src/contacts-utils.vala"
+               _tmp29_ = g_strdup ("desktop-startup-id");
+#line 64 "../src/contacts-utils.vala"
+               _tmp30_ = startup_id;
+#line 64 "../src/contacts-utils.vala"
+               _tmp31_ = g_variant_new_string (_tmp30_);
+#line 64 "../src/contacts-utils.vala"
+               g_variant_ref_sink (_tmp31_);
+#line 64 "../src/contacts-utils.vala"
+               g_hash_table_insert (_tmp28_, _tmp29_, _tmp31_);
+#line 65 "../src/contacts-utils.vala"
+               _tmp32_ = con;
+#line 65 "../src/contacts-utils.vala"
+               _tmp33_ = param_array;
+#line 65 "../src/contacts-utils.vala"
+               _tmp33__length1 = param_array_length1;
+#line 65 "../src/contacts-utils.vala"
+               _tmp34_ = data;
+#line 65 "../src/contacts-utils.vala"
+               contacts_freedesktop_application_ActivateAction (_tmp32_, action, _tmp33_, (gint) 
_tmp33__length1, _tmp34_, &_inner_error0_);
+#line 65 "../src/contacts-utils.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 65 "../src/contacts-utils.vala"
+                       _g_hash_table_unref0 (data);
+#line 65 "../src/contacts-utils.vala"
+                       _g_free0 (startup_id);
+#line 65 "../src/contacts-utils.vala"
+                       param_array = (_vala_array_free (param_array, param_array_length1, (GDestroyNotify) 
g_variant_unref), NULL);
+#line 65 "../src/contacts-utils.vala"
+                       _g_object_unref0 (_tmp12_);
+#line 65 "../src/contacts-utils.vala"
+                       _g_object_unref0 (context);
+#line 65 "../src/contacts-utils.vala"
+                       _g_object_unref0 (info);
+#line 65 "../src/contacts-utils.vala"
+                       _g_object_unref0 (display);
+#line 65 "../src/contacts-utils.vala"
+                       _g_free0 (object_path);
+#line 1119 "contacts-utils.c"
+                       goto __catch7_g_error;
+               }
+#line 48 "../src/contacts-utils.vala"
+               _g_hash_table_unref0 (data);
+#line 48 "../src/contacts-utils.vala"
+               _g_free0 (startup_id);
+#line 48 "../src/contacts-utils.vala"
+               param_array = (_vala_array_free (param_array, param_array_length1, (GDestroyNotify) 
g_variant_unref), NULL);
+#line 48 "../src/contacts-utils.vala"
+               _g_object_unref0 (_tmp12_);
+#line 48 "../src/contacts-utils.vala"
+               _g_object_unref0 (context);
+#line 48 "../src/contacts-utils.vala"
+               _g_object_unref0 (info);
+#line 48 "../src/contacts-utils.vala"
+               _g_object_unref0 (display);
+#line 48 "../src/contacts-utils.vala"
+               _g_free0 (object_path);
+#line 1138 "contacts-utils.c"
+       }
+       goto __finally7;
+       __catch7_g_error:
+       {
+               GError* e = NULL;
+               gchar* _tmp35_;
+               gchar* _tmp36_;
+#line 48 "../src/contacts-utils.vala"
+               e = _inner_error0_;
+#line 48 "../src/contacts-utils.vala"
+               _inner_error0_ = NULL;
+#line 67 "../src/contacts-utils.vala"
+               _tmp35_ = g_strconcat ("Failed to activate action", action, NULL);
+#line 67 "../src/contacts-utils.vala"
+               _tmp36_ = _tmp35_;
+#line 67 "../src/contacts-utils.vala"
+               g_debug ("contacts-utils.vala:67: %s", _tmp36_);
+#line 67 "../src/contacts-utils.vala"
+               _g_free0 (_tmp36_);
+#line 48 "../src/contacts-utils.vala"
+               _g_error_free0 (e);
+#line 1160 "contacts-utils.c"
+       }
+       __finally7:
+#line 48 "../src/contacts-utils.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 48 "../src/contacts-utils.vala"
+               _g_object_unref0 (con);
+#line 48 "../src/contacts-utils.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 48 "../src/contacts-utils.vala"
+               g_clear_error (&_inner_error0_);
+#line 48 "../src/contacts-utils.vala"
+               return;
+#line 1173 "contacts-utils.c"
+       }
+#line 42 "../src/contacts-utils.vala"
+       _g_object_unref0 (con);
+#line 1177 "contacts-utils.c"
+}
+
+void
+contacts_utils_compose_mail (const gchar* email)
+{
+       gchar* mailto_uri = NULL;
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       GError* _inner_error0_ = NULL;
+#line 73 "../src/contacts-utils.vala"
+       g_return_if_fail (email != NULL);
+#line 74 "../src/contacts-utils.vala"
+       _tmp0_ = g_uri_escape_string (email, "@", FALSE);
+#line 74 "../src/contacts-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 74 "../src/contacts-utils.vala"
+       _tmp2_ = g_strconcat ("mailto:";, _tmp1_, NULL);
+#line 74 "../src/contacts-utils.vala"
+       _tmp3_ = _tmp2_;
+#line 74 "../src/contacts-utils.vala"
+       _g_free0 (_tmp1_);
+#line 74 "../src/contacts-utils.vala"
+       mailto_uri = _tmp3_;
+#line 1203 "contacts-utils.c"
+       {
+#line 76 "../src/contacts-utils.vala"
+               gtk_show_uri_on_window (NULL, mailto_uri, (guint32) 0, &_inner_error0_);
+#line 76 "../src/contacts-utils.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1209 "contacts-utils.c"
+                       goto __catch9_g_error;
+               }
+       }
+       goto __finally9;
+       __catch9_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp4_;
+               const gchar* _tmp5_;
+#line 75 "../src/contacts-utils.vala"
+               e = _inner_error0_;
+#line 75 "../src/contacts-utils.vala"
+               _inner_error0_ = NULL;
+#line 78 "../src/contacts-utils.vala"
+               _tmp4_ = e;
+#line 78 "../src/contacts-utils.vala"
+               _tmp5_ = _tmp4_->message;
+#line 78 "../src/contacts-utils.vala"
+               g_debug ("contacts-utils.vala:78: Couldn't launch URI \"%s\": %s", mailto_uri, _tmp5_);
+#line 75 "../src/contacts-utils.vala"
+               _g_error_free0 (e);
+#line 1231 "contacts-utils.c"
+       }
+       __finally9:
+#line 75 "../src/contacts-utils.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 75 "../src/contacts-utils.vala"
+               _g_free0 (mailto_uri);
+#line 75 "../src/contacts-utils.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 75 "../src/contacts-utils.vala"
+               g_clear_error (&_inner_error0_);
+#line 75 "../src/contacts-utils.vala"
+               return;
+#line 1244 "contacts-utils.c"
+       }
+#line 73 "../src/contacts-utils.vala"
+       _g_free0 (mailto_uri);
+#line 1248 "contacts-utils.c"
+}
+
+gpointer
+contacts_utils_get_first (GType t_type,
+                          GBoxedCopyFunc t_dup_func,
+                          GDestroyNotify t_destroy_func,
+                          GeeCollection* collection)
+{
+       GeeIterator* i = NULL;
+       GeeIterator* _tmp0_;
+       GeeIterator* _tmp1_;
+       gpointer result = NULL;
+#line 117 "../src/contacts-utils.vala"
+       g_return_val_if_fail (collection != NULL, NULL);
+#line 118 "../src/contacts-utils.vala"
+       _tmp0_ = gee_iterable_iterator ((GeeIterable*) collection);
+#line 118 "../src/contacts-utils.vala"
+       i = _tmp0_;
+#line 119 "../src/contacts-utils.vala"
+       _tmp1_ = i;
+#line 119 "../src/contacts-utils.vala"
+       if (gee_iterator_next (_tmp1_)) {
+#line 1271 "contacts-utils.c"
+               GeeIterator* _tmp2_;
+               gpointer _tmp3_;
+#line 120 "../src/contacts-utils.vala"
+               _tmp2_ = i;
+#line 120 "../src/contacts-utils.vala"
+               _tmp3_ = gee_iterator_get (_tmp2_);
+#line 120 "../src/contacts-utils.vala"
+               result = _tmp3_;
+#line 120 "../src/contacts-utils.vala"
+               _g_object_unref0 (i);
+#line 120 "../src/contacts-utils.vala"
+               return result;
+#line 1284 "contacts-utils.c"
+       }
+#line 121 "../src/contacts-utils.vala"
+       result = NULL;
+#line 121 "../src/contacts-utils.vala"
+       _g_object_unref0 (i);
+#line 121 "../src/contacts-utils.vala"
+       return result;
+#line 1292 "contacts-utils.c"
+}
+
+void
+contacts_utils_grab_entry_focus_no_select (GtkEntry* entry)
+{
+       gint start = 0;
+       gint end = 0;
+       gint _tmp0_ = 0;
+       gint _tmp1_ = 0;
+       gboolean _tmp2_;
+#line 124 "../src/contacts-utils.vala"
+       g_return_if_fail (entry != NULL);
+#line 126 "../src/contacts-utils.vala"
+       _tmp2_ = gtk_editable_get_selection_bounds ((GtkEditable*) entry, &_tmp0_, &_tmp1_);
+#line 126 "../src/contacts-utils.vala"
+       start = _tmp0_;
+#line 126 "../src/contacts-utils.vala"
+       end = _tmp1_;
+#line 126 "../src/contacts-utils.vala"
+       if (!_tmp2_) {
+#line 127 "../src/contacts-utils.vala"
+               end = gtk_editable_get_position ((GtkEditable*) entry);
+#line 127 "../src/contacts-utils.vala"
+               start = end;
+#line 1317 "contacts-utils.c"
+       }
+#line 129 "../src/contacts-utils.vala"
+       gtk_widget_grab_focus ((GtkWidget*) entry);
+#line 130 "../src/contacts-utils.vala"
+       gtk_editable_select_region ((GtkEditable*) entry, start, end);
+#line 1323 "contacts-utils.c"
+}
+
+static gchar**
+_vala_array_dup2 (gchar** self,
+                  gint length)
+{
+       gchar** result;
+       gint i;
+#line 135 "../src/contacts-utils.vala"
+       result = g_new0 (gchar*, length + 1);
+#line 135 "../src/contacts-utils.vala"
+       for (i = 0; i < length; i++) {
+#line 1336 "contacts-utils.c"
+               gchar* _tmp0_;
+#line 135 "../src/contacts-utils.vala"
+               _tmp0_ = g_strdup (self[i]);
+#line 135 "../src/contacts-utils.vala"
+               result[i] = _tmp0_;
+#line 1342 "contacts-utils.c"
+       }
+#line 135 "../src/contacts-utils.vala"
+       return result;
+#line 1346 "contacts-utils.c"
+}
+
+static void
+_vala_array_add2 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 148 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 148 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 148 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 1361 "contacts-utils.c"
+       }
+#line 148 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 148 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 1367 "contacts-utils.c"
+}
+
+gchar**
+contacts_utils_get_stock_avatars (gint* result_length1)
+{
+       gchar** files = NULL;
+       gchar** _tmp0_;
+       gint files_length1;
+       gint _files_size_;
+       gchar** system_data_dirs = NULL;
+       gchar** _tmp1_;
+       gchar** _tmp2_;
+       gchar** _tmp3_;
+       gint _tmp3__length1;
+       gint system_data_dirs_length1;
+       gint _system_data_dirs_size_;
+       gchar** _tmp4_;
+       gint _tmp4__length1;
+       gchar** _tmp26_;
+       gint _tmp26__length1;
+       GError* _inner_error0_ = NULL;
+       gchar** result = NULL;
+#line 134 "../src/contacts-utils.vala"
+       _tmp0_ = g_new0 (gchar*, 0 + 1);
+#line 134 "../src/contacts-utils.vala"
+       files = _tmp0_;
+#line 134 "../src/contacts-utils.vala"
+       files_length1 = 0;
+#line 134 "../src/contacts-utils.vala"
+       _files_size_ = files_length1;
+#line 135 "../src/contacts-utils.vala"
+       _tmp2_ = _tmp1_ = g_get_system_data_dirs ();
+#line 135 "../src/contacts-utils.vala"
+       _tmp3_ = (_tmp2_ != NULL) ? _vala_array_dup2 (_tmp2_, _vala_array_length (_tmp1_)) : ((gpointer) 
_tmp2_);
+#line 135 "../src/contacts-utils.vala"
+       _tmp3__length1 = _vala_array_length (_tmp1_);
+#line 135 "../src/contacts-utils.vala"
+       system_data_dirs = _tmp3_;
+#line 135 "../src/contacts-utils.vala"
+       system_data_dirs_length1 = _tmp3__length1;
+#line 135 "../src/contacts-utils.vala"
+       _system_data_dirs_size_ = system_data_dirs_length1;
+#line 136 "../src/contacts-utils.vala"
+       _tmp4_ = system_data_dirs;
+#line 136 "../src/contacts-utils.vala"
+       _tmp4__length1 = system_data_dirs_length1;
+#line 1414 "contacts-utils.c"
+       {
+               gchar** data_dir_collection = NULL;
+               gint data_dir_collection_length1 = 0;
+               gint _data_dir_collection_size_ = 0;
+               gint data_dir_it = 0;
+#line 136 "../src/contacts-utils.vala"
+               data_dir_collection = _tmp4_;
+#line 136 "../src/contacts-utils.vala"
+               data_dir_collection_length1 = _tmp4__length1;
+#line 136 "../src/contacts-utils.vala"
+               for (data_dir_it = 0; data_dir_it < data_dir_collection_length1; data_dir_it = data_dir_it + 
1) {
+#line 1426 "contacts-utils.c"
+                       gchar* _tmp5_;
+                       gchar* data_dir = NULL;
+#line 136 "../src/contacts-utils.vala"
+                       _tmp5_ = g_strdup (data_dir_collection[data_dir_it]);
+#line 136 "../src/contacts-utils.vala"
+                       data_dir = _tmp5_;
+#line 1433 "contacts-utils.c"
+                       {
+                               gchar* path = NULL;
+                               const gchar* _tmp6_;
+                               gchar* _tmp7_;
+                               GDir* dir = NULL;
+                               GDir* _tmp15_;
+#line 137 "../src/contacts-utils.vala"
+                               _tmp6_ = data_dir;
+#line 137 "../src/contacts-utils.vala"
+                               _tmp7_ = g_build_filename (_tmp6_, "pixmaps", "faces", NULL);
+#line 137 "../src/contacts-utils.vala"
+                               path = _tmp7_;
+#line 138 "../src/contacts-utils.vala"
+                               dir = NULL;
+#line 1448 "contacts-utils.c"
+                               {
+                                       GDir* _tmp8_ = NULL;
+                                       const gchar* _tmp9_;
+                                       GDir* _tmp10_;
+                                       GDir* _tmp11_;
+#line 140 "../src/contacts-utils.vala"
+                                       _tmp9_ = path;
+#line 140 "../src/contacts-utils.vala"
+                                       _tmp10_ = g_dir_open (_tmp9_, (guint) 0, &_inner_error0_);
+#line 140 "../src/contacts-utils.vala"
+                                       _tmp8_ = _tmp10_;
+#line 140 "../src/contacts-utils.vala"
+                                       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1462 "contacts-utils.c"
+                                               goto __catch10_g_error;
+                                       }
+#line 140 "../src/contacts-utils.vala"
+                                       _tmp11_ = _tmp8_;
+#line 140 "../src/contacts-utils.vala"
+                                       _tmp8_ = NULL;
+#line 140 "../src/contacts-utils.vala"
+                                       _g_dir_close0 (dir);
+#line 140 "../src/contacts-utils.vala"
+                                       dir = _tmp11_;
+#line 139 "../src/contacts-utils.vala"
+                                       _g_dir_close0 (_tmp8_);
+#line 1475 "contacts-utils.c"
+                               }
+                               goto __finally10;
+                               __catch10_g_error:
+                               {
+                                       GError* e = NULL;
+                                       const gchar* _tmp12_;
+                                       GError* _tmp13_;
+                                       const gchar* _tmp14_;
+#line 139 "../src/contacts-utils.vala"
+                                       e = _inner_error0_;
+#line 139 "../src/contacts-utils.vala"
+                                       _inner_error0_ = NULL;
+#line 142 "../src/contacts-utils.vala"
+                                       _tmp12_ = path;
+#line 142 "../src/contacts-utils.vala"
+                                       _tmp13_ = e;
+#line 142 "../src/contacts-utils.vala"
+                                       _tmp14_ = _tmp13_->message;
+#line 142 "../src/contacts-utils.vala"
+                                       g_debug ("contacts-utils.vala:142: Couldn't open stock avatars folder 
\"%s\": %s", _tmp12_, _tmp14_);
+#line 139 "../src/contacts-utils.vala"
+                                       _g_error_free0 (e);
+#line 1498 "contacts-utils.c"
+                               }
+                               __finally10:
+#line 139 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 139 "../src/contacts-utils.vala"
+                                       _g_dir_close0 (dir);
+#line 139 "../src/contacts-utils.vala"
+                                       _g_free0 (path);
+#line 139 "../src/contacts-utils.vala"
+                                       _g_free0 (data_dir);
+#line 139 "../src/contacts-utils.vala"
+                                       system_data_dirs = (_vala_array_free (system_data_dirs, 
system_data_dirs_length1, (GDestroyNotify) g_free), NULL);
+#line 139 "../src/contacts-utils.vala"
+                                       files = (_vala_array_free (files, files_length1, (GDestroyNotify) 
g_free), NULL);
+#line 139 "../src/contacts-utils.vala"
+                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), 
_inner_error0_->code);
+#line 139 "../src/contacts-utils.vala"
+                                       g_clear_error (&_inner_error0_);
+#line 139 "../src/contacts-utils.vala"
+                                       return NULL;
+#line 1519 "contacts-utils.c"
+                               }
+#line 144 "../src/contacts-utils.vala"
+                               _tmp15_ = dir;
+#line 144 "../src/contacts-utils.vala"
+                               if (_tmp15_ != NULL) {
+#line 1525 "contacts-utils.c"
+                                       gchar* face = NULL;
+#line 146 "../src/contacts-utils.vala"
+                                       while (TRUE) {
+#line 1529 "contacts-utils.c"
+                                               GDir* _tmp16_;
+                                               const gchar* _tmp17_;
+                                               gchar* _tmp18_;
+                                               const gchar* _tmp19_;
+                                               gchar* filename = NULL;
+                                               const gchar* _tmp20_;
+                                               const gchar* _tmp21_;
+                                               gchar* _tmp22_;
+                                               gchar** _tmp23_;
+                                               gint _tmp23__length1;
+                                               const gchar* _tmp24_;
+                                               gchar* _tmp25_;
+#line 146 "../src/contacts-utils.vala"
+                                               _tmp16_ = dir;
+#line 146 "../src/contacts-utils.vala"
+                                               _tmp17_ = g_dir_read_name (_tmp16_);
+#line 146 "../src/contacts-utils.vala"
+                                               _tmp18_ = g_strdup (_tmp17_);
+#line 146 "../src/contacts-utils.vala"
+                                               _g_free0 (face);
+#line 146 "../src/contacts-utils.vala"
+                                               face = _tmp18_;
+#line 146 "../src/contacts-utils.vala"
+                                               _tmp19_ = face;
+#line 146 "../src/contacts-utils.vala"
+                                               if (!(_tmp19_ != NULL)) {
+#line 146 "../src/contacts-utils.vala"
+                                                       break;
+#line 1558 "contacts-utils.c"
+                                               }
+#line 147 "../src/contacts-utils.vala"
+                                               _tmp20_ = path;
+#line 147 "../src/contacts-utils.vala"
+                                               _tmp21_ = face;
+#line 147 "../src/contacts-utils.vala"
+                                               _tmp22_ = g_build_filename (_tmp20_, _tmp21_, NULL);
+#line 147 "../src/contacts-utils.vala"
+                                               filename = _tmp22_;
+#line 148 "../src/contacts-utils.vala"
+                                               _tmp23_ = files;
+#line 148 "../src/contacts-utils.vala"
+                                               _tmp23__length1 = files_length1;
+#line 148 "../src/contacts-utils.vala"
+                                               _tmp24_ = filename;
+#line 148 "../src/contacts-utils.vala"
+                                               _tmp25_ = g_strdup (_tmp24_);
+#line 148 "../src/contacts-utils.vala"
+                                               _vala_array_add2 (&files, &files_length1, &_files_size_, 
_tmp25_);
+#line 146 "../src/contacts-utils.vala"
+                                               _g_free0 (filename);
+#line 1580 "contacts-utils.c"
+                                       }
+#line 144 "../src/contacts-utils.vala"
+                                       _g_free0 (face);
+#line 1584 "contacts-utils.c"
+                               }
+#line 136 "../src/contacts-utils.vala"
+                               _g_dir_close0 (dir);
+#line 136 "../src/contacts-utils.vala"
+                               _g_free0 (path);
+#line 136 "../src/contacts-utils.vala"
+                               _g_free0 (data_dir);
+#line 1592 "contacts-utils.c"
+                       }
+               }
+       }
+#line 152 "../src/contacts-utils.vala"
+       _tmp26_ = files;
+#line 152 "../src/contacts-utils.vala"
+       _tmp26__length1 = files_length1;
+#line 152 "../src/contacts-utils.vala"
+       if (result_length1) {
+#line 152 "../src/contacts-utils.vala"
+               *result_length1 = _tmp26__length1;
+#line 1604 "contacts-utils.c"
+       }
+#line 152 "../src/contacts-utils.vala"
+       result = _tmp26_;
+#line 152 "../src/contacts-utils.vala"
+       system_data_dirs = (_vala_array_free (system_data_dirs, system_data_dirs_length1, (GDestroyNotify) 
g_free), NULL);
+#line 152 "../src/contacts-utils.vala"
+       return result;
+#line 1612 "contacts-utils.c"
+}
+
+static void
+_vala_array_add3 (FolksPersonaStore** * array,
+                  gint* length,
+                  gint* size,
+                  FolksPersonaStore* value)
+{
+#line 160 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 160 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 160 "../src/contacts-utils.vala"
+               *array = g_renew (FolksPersonaStore*, *array, (*size) + 1);
+#line 1627 "contacts-utils.c"
+       }
+#line 160 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 160 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 1633 "contacts-utils.c"
+}
+
+FolksPersonaStore**
+contacts_utils_get_eds_address_books (ContactsStore* contacts_store,
+                                      gint* result_length1)
+{
+       FolksPersonaStore** stores = NULL;
+       FolksPersonaStore** _tmp0_;
+       gint stores_length1;
+       gint _stores_size_;
+       FolksPersonaStore** _tmp30_;
+       gint _tmp30__length1;
+       FolksPersonaStore** result = NULL;
+#line 155 "../src/contacts-utils.vala"
+       g_return_val_if_fail (contacts_store != NULL, NULL);
+#line 156 "../src/contacts-utils.vala"
+       _tmp0_ = g_new0 (FolksPersonaStore*, 0 + 1);
+#line 156 "../src/contacts-utils.vala"
+       stores = _tmp0_;
+#line 156 "../src/contacts-utils.vala"
+       stores_length1 = 0;
+#line 156 "../src/contacts-utils.vala"
+       _stores_size_ = stores_length1;
+#line 1657 "contacts-utils.c"
+       {
+               GeeIterator* _backend_it = NULL;
+               FolksBackendStore* _tmp1_;
+               FolksBackendStore* _tmp2_;
+               GeeMap* _tmp3_;
+               GeeMap* _tmp4_;
+               GeeCollection* _tmp5_;
+               GeeCollection* _tmp6_;
+               GeeCollection* _tmp7_;
+               GeeIterator* _tmp8_;
+               GeeIterator* _tmp9_;
+#line 157 "../src/contacts-utils.vala"
+               _tmp1_ = contacts_store_get_backend_store (contacts_store);
+#line 157 "../src/contacts-utils.vala"
+               _tmp2_ = _tmp1_;
+#line 157 "../src/contacts-utils.vala"
+               _tmp3_ = folks_backend_store_get_enabled_backends (_tmp2_);
+#line 157 "../src/contacts-utils.vala"
+               _tmp4_ = _tmp3_;
+#line 157 "../src/contacts-utils.vala"
+               _tmp5_ = gee_map_get_values (_tmp4_);
+#line 157 "../src/contacts-utils.vala"
+               _tmp6_ = _tmp5_;
+#line 157 "../src/contacts-utils.vala"
+               _tmp7_ = _tmp6_;
+#line 157 "../src/contacts-utils.vala"
+               _tmp8_ = gee_iterable_iterator ((GeeIterable*) _tmp7_);
+#line 157 "../src/contacts-utils.vala"
+               _tmp9_ = _tmp8_;
+#line 157 "../src/contacts-utils.vala"
+               _g_object_unref0 (_tmp7_);
+#line 157 "../src/contacts-utils.vala"
+               _backend_it = _tmp9_;
+#line 157 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 1693 "contacts-utils.c"
+                       GeeIterator* _tmp10_;
+                       FolksBackend* backend = NULL;
+                       GeeIterator* _tmp11_;
+                       gpointer _tmp12_;
+#line 157 "../src/contacts-utils.vala"
+                       _tmp10_ = _backend_it;
+#line 157 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp10_)) {
+#line 157 "../src/contacts-utils.vala"
+                               break;
+#line 1704 "contacts-utils.c"
+                       }
+#line 157 "../src/contacts-utils.vala"
+                       _tmp11_ = _backend_it;
+#line 157 "../src/contacts-utils.vala"
+                       _tmp12_ = gee_iterator_get (_tmp11_);
+#line 157 "../src/contacts-utils.vala"
+                       backend = (FolksBackend*) _tmp12_;
+#line 1712 "contacts-utils.c"
+                       {
+                               GeeIterator* _persona_store_it = NULL;
+                               FolksBackend* _tmp13_;
+                               GeeMap* _tmp14_;
+                               GeeMap* _tmp15_;
+                               GeeCollection* _tmp16_;
+                               GeeCollection* _tmp17_;
+                               GeeCollection* _tmp18_;
+                               GeeIterator* _tmp19_;
+                               GeeIterator* _tmp20_;
+#line 158 "../src/contacts-utils.vala"
+                               _tmp13_ = backend;
+#line 158 "../src/contacts-utils.vala"
+                               _tmp14_ = folks_backend_get_persona_stores (_tmp13_);
+#line 158 "../src/contacts-utils.vala"
+                               _tmp15_ = _tmp14_;
+#line 158 "../src/contacts-utils.vala"
+                               _tmp16_ = gee_map_get_values (_tmp15_);
+#line 158 "../src/contacts-utils.vala"
+                               _tmp17_ = _tmp16_;
+#line 158 "../src/contacts-utils.vala"
+                               _tmp18_ = _tmp17_;
+#line 158 "../src/contacts-utils.vala"
+                               _tmp19_ = gee_iterable_iterator ((GeeIterable*) _tmp18_);
+#line 158 "../src/contacts-utils.vala"
+                               _tmp20_ = _tmp19_;
+#line 158 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_tmp18_);
+#line 158 "../src/contacts-utils.vala"
+                               _persona_store_it = _tmp20_;
+#line 158 "../src/contacts-utils.vala"
+                               while (TRUE) {
+#line 1745 "contacts-utils.c"
+                                       GeeIterator* _tmp21_;
+                                       FolksPersonaStore* persona_store = NULL;
+                                       GeeIterator* _tmp22_;
+                                       gpointer _tmp23_;
+                                       FolksPersonaStore* _tmp24_;
+                                       const gchar* _tmp25_;
+                                       const gchar* _tmp26_;
+#line 158 "../src/contacts-utils.vala"
+                                       _tmp21_ = _persona_store_it;
+#line 158 "../src/contacts-utils.vala"
+                                       if (!gee_iterator_next (_tmp21_)) {
+#line 158 "../src/contacts-utils.vala"
+                                               break;
+#line 1759 "contacts-utils.c"
+                                       }
+#line 158 "../src/contacts-utils.vala"
+                                       _tmp22_ = _persona_store_it;
+#line 158 "../src/contacts-utils.vala"
+                                       _tmp23_ = gee_iterator_get (_tmp22_);
+#line 158 "../src/contacts-utils.vala"
+                                       persona_store = (FolksPersonaStore*) _tmp23_;
+#line 159 "../src/contacts-utils.vala"
+                                       _tmp24_ = persona_store;
+#line 159 "../src/contacts-utils.vala"
+                                       _tmp25_ = folks_persona_store_get_type_id (_tmp24_);
+#line 159 "../src/contacts-utils.vala"
+                                       _tmp26_ = _tmp25_;
+#line 159 "../src/contacts-utils.vala"
+                                       if (g_strcmp0 (_tmp26_, "eds") == 0) {
+#line 1775 "contacts-utils.c"
+                                               FolksPersonaStore** _tmp27_;
+                                               gint _tmp27__length1;
+                                               FolksPersonaStore* _tmp28_;
+                                               FolksPersonaStore* _tmp29_;
+#line 160 "../src/contacts-utils.vala"
+                                               _tmp27_ = stores;
+#line 160 "../src/contacts-utils.vala"
+                                               _tmp27__length1 = stores_length1;
+#line 160 "../src/contacts-utils.vala"
+                                               _tmp28_ = persona_store;
+#line 160 "../src/contacts-utils.vala"
+                                               _tmp29_ = _g_object_ref0 (_tmp28_);
+#line 160 "../src/contacts-utils.vala"
+                                               _vala_array_add3 (&stores, &stores_length1, &_stores_size_, 
_tmp29_);
+#line 1790 "contacts-utils.c"
+                                       }
+#line 158 "../src/contacts-utils.vala"
+                                       _g_object_unref0 (persona_store);
+#line 1794 "contacts-utils.c"
+                               }
+#line 158 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_persona_store_it);
+#line 1798 "contacts-utils.c"
+                       }
+#line 157 "../src/contacts-utils.vala"
+                       _g_object_unref0 (backend);
+#line 1802 "contacts-utils.c"
+               }
+#line 157 "../src/contacts-utils.vala"
+               _g_object_unref0 (_backend_it);
+#line 1806 "contacts-utils.c"
+       }
+#line 164 "../src/contacts-utils.vala"
+       _tmp30_ = stores;
+#line 164 "../src/contacts-utils.vala"
+       _tmp30__length1 = stores_length1;
+#line 164 "../src/contacts-utils.vala"
+       if (result_length1) {
+#line 164 "../src/contacts-utils.vala"
+               *result_length1 = _tmp30__length1;
+#line 1816 "contacts-utils.c"
+       }
+#line 164 "../src/contacts-utils.vala"
+       result = _tmp30_;
+#line 164 "../src/contacts-utils.vala"
+       return result;
+#line 1822 "contacts-utils.c"
+}
+
+void
+contacts_utils_show_error_dialog (const gchar* _error_,
+                                  GtkWindow* toplevel)
+{
+       GtkMessageDialog* dialog = NULL;
+       GtkMessageDialog* _tmp0_;
+#line 167 "../src/contacts-utils.vala"
+       g_return_if_fail (_error_ != NULL);
+#line 167 "../src/contacts-utils.vala"
+       g_return_if_fail (toplevel != NULL);
+#line 168 "../src/contacts-utils.vala"
+       _tmp0_ = (GtkMessageDialog*) gtk_message_dialog_new (toplevel, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, 
GTK_BUTTONS_OK, "%s", _error_);
+#line 168 "../src/contacts-utils.vala"
+       g_object_ref_sink (_tmp0_);
+#line 168 "../src/contacts-utils.vala"
+       dialog = _tmp0_;
+#line 173 "../src/contacts-utils.vala"
+       gtk_dialog_run ((GtkDialog*) dialog);
+#line 174 "../src/contacts-utils.vala"
+       gtk_widget_destroy ((GtkWidget*) dialog);
+#line 167 "../src/contacts-utils.vala"
+       _g_object_unref0 (dialog);
+#line 1847 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_has_main_persona (FolksIndividual* individual)
+{
+       gboolean _result_ = FALSE;
+       gboolean result = FALSE;
+#line 177 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, FALSE);
+#line 178 "../src/contacts-utils.vala"
+       _result_ = FALSE;
+#line 1859 "contacts-utils.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 179 "../src/contacts-utils.vala"
+               _tmp0_ = folks_individual_get_personas (individual);
+#line 179 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 179 "../src/contacts-utils.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 179 "../src/contacts-utils.vala"
+               _p_it = _tmp2_;
+#line 179 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 1875 "contacts-utils.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+                       gboolean _tmp6_ = FALSE;
+                       FolksPersona* _tmp7_;
+                       FolksPersonaStore* _tmp8_;
+                       FolksPersonaStore* _tmp9_;
+                       gboolean _tmp10_;
+                       gboolean _tmp11_;
+#line 179 "../src/contacts-utils.vala"
+                       _tmp3_ = _p_it;
+#line 179 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 179 "../src/contacts-utils.vala"
+                               break;
+#line 1892 "contacts-utils.c"
+                       }
+#line 179 "../src/contacts-utils.vala"
+                       _tmp4_ = _p_it;
+#line 179 "../src/contacts-utils.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 179 "../src/contacts-utils.vala"
+                       p = (FolksPersona*) _tmp5_;
+#line 180 "../src/contacts-utils.vala"
+                       _tmp7_ = p;
+#line 180 "../src/contacts-utils.vala"
+                       _tmp8_ = folks_persona_get_store (_tmp7_);
+#line 180 "../src/contacts-utils.vala"
+                       _tmp9_ = _tmp8_;
+#line 180 "../src/contacts-utils.vala"
+                       _tmp10_ = folks_persona_store_get_is_primary_store (_tmp9_);
+#line 180 "../src/contacts-utils.vala"
+                       _tmp11_ = _tmp10_;
+#line 180 "../src/contacts-utils.vala"
+                       if (_tmp11_) {
+#line 1912 "contacts-utils.c"
+                               FolksPersona* _tmp12_;
+#line 180 "../src/contacts-utils.vala"
+                               _tmp12_ = p;
+#line 180 "../src/contacts-utils.vala"
+                               _tmp6_ = !contacts_utils_persona_is_google_other (_tmp12_);
+#line 1918 "contacts-utils.c"
+                       } else {
+#line 180 "../src/contacts-utils.vala"
+                               _tmp6_ = FALSE;
+#line 1922 "contacts-utils.c"
+                       }
+#line 180 "../src/contacts-utils.vala"
+                       _result_ |= _tmp6_;
+#line 179 "../src/contacts-utils.vala"
+                       _g_object_unref0 (p);
+#line 1928 "contacts-utils.c"
+               }
+#line 179 "../src/contacts-utils.vala"
+               _g_object_unref0 (_p_it);
+#line 1932 "contacts-utils.c"
+       }
+#line 182 "../src/contacts-utils.vala"
+       result = _result_;
+#line 182 "../src/contacts-utils.vala"
+       return result;
+#line 1938 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_is_ignorable (FolksIndividual* individual)
+{
+       GeeIterator* i = NULL;
+       GeeSet* _tmp0_;
+       GeeSet* _tmp1_;
+       GeeIterator* _tmp2_;
+       gboolean _tmp3_ = FALSE;
+       GeeIterator* _tmp4_;
+       gboolean result = FALSE;
+#line 185 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, FALSE);
+#line 186 "../src/contacts-utils.vala"
+       _tmp0_ = folks_individual_get_personas (individual);
+#line 186 "../src/contacts-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 186 "../src/contacts-utils.vala"
+       _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 186 "../src/contacts-utils.vala"
+       i = _tmp2_;
+#line 189 "../src/contacts-utils.vala"
+       _tmp4_ = i;
+#line 189 "../src/contacts-utils.vala"
+       if (gee_iterator_next (_tmp4_)) {
+#line 1965 "contacts-utils.c"
+               GeeIterator* _tmp5_;
+#line 189 "../src/contacts-utils.vala"
+               _tmp5_ = i;
+#line 189 "../src/contacts-utils.vala"
+               _tmp3_ = !gee_iterator_has_next (_tmp5_);
+#line 1971 "contacts-utils.c"
+       } else {
+#line 189 "../src/contacts-utils.vala"
+               _tmp3_ = FALSE;
+#line 1975 "contacts-utils.c"
+       }
+#line 189 "../src/contacts-utils.vala"
+       if (_tmp3_) {
+#line 1979 "contacts-utils.c"
+               FolksPersonaStore* persona_store = NULL;
+               GeeIterator* _tmp6_;
+               gpointer _tmp7_;
+               FolksPersona* _tmp8_;
+               FolksPersonaStore* _tmp9_;
+               FolksPersonaStore* _tmp10_;
+               FolksPersonaStore* _tmp11_;
+               FolksPersonaStore* _tmp12_;
+               FolksPersonaStore* _tmp13_;
+               const gchar* _tmp14_;
+               const gchar* _tmp15_;
+               gboolean _tmp16_ = FALSE;
+               FolksPersonaStore* _tmp17_;
+               const gchar* _tmp18_;
+               const gchar* _tmp19_;
+#line 190 "../src/contacts-utils.vala"
+               _tmp6_ = i;
+#line 190 "../src/contacts-utils.vala"
+               _tmp7_ = gee_iterator_get (_tmp6_);
+#line 190 "../src/contacts-utils.vala"
+               _tmp8_ = (FolksPersona*) _tmp7_;
+#line 190 "../src/contacts-utils.vala"
+               _tmp9_ = folks_persona_get_store (_tmp8_);
+#line 190 "../src/contacts-utils.vala"
+               _tmp10_ = _tmp9_;
+#line 190 "../src/contacts-utils.vala"
+               _tmp11_ = _g_object_ref0 (_tmp10_);
+#line 190 "../src/contacts-utils.vala"
+               _tmp12_ = _tmp11_;
+#line 190 "../src/contacts-utils.vala"
+               _g_object_unref0 (_tmp8_);
+#line 190 "../src/contacts-utils.vala"
+               persona_store = _tmp12_;
+#line 193 "../src/contacts-utils.vala"
+               _tmp13_ = persona_store;
+#line 193 "../src/contacts-utils.vala"
+               _tmp14_ = folks_persona_store_get_type_id (_tmp13_);
+#line 193 "../src/contacts-utils.vala"
+               _tmp15_ = _tmp14_;
+#line 193 "../src/contacts-utils.vala"
+               if (g_strcmp0 (_tmp15_, "key-file") == 0) {
+#line 194 "../src/contacts-utils.vala"
+                       result = TRUE;
+#line 194 "../src/contacts-utils.vala"
+                       _g_object_unref0 (persona_store);
+#line 194 "../src/contacts-utils.vala"
+                       _g_object_unref0 (i);
+#line 194 "../src/contacts-utils.vala"
+                       return result;
+#line 2029 "contacts-utils.c"
+               }
+#line 197 "../src/contacts-utils.vala"
+               _tmp17_ = persona_store;
+#line 197 "../src/contacts-utils.vala"
+               _tmp18_ = folks_persona_store_get_type_id (_tmp17_);
+#line 197 "../src/contacts-utils.vala"
+               _tmp19_ = _tmp18_;
+#line 197 "../src/contacts-utils.vala"
+               if (g_strcmp0 (_tmp19_, "telepathy") == 0) {
+#line 2039 "contacts-utils.c"
+                       FolksPersonaStore* _tmp20_;
+                       FolksPersonaStoreTrust _tmp21_;
+                       FolksPersonaStoreTrust _tmp22_;
+#line 198 "../src/contacts-utils.vala"
+                       _tmp20_ = persona_store;
+#line 198 "../src/contacts-utils.vala"
+                       _tmp21_ = folks_persona_store_get_trust_level (_tmp20_);
+#line 198 "../src/contacts-utils.vala"
+                       _tmp22_ = _tmp21_;
+#line 198 "../src/contacts-utils.vala"
+                       _tmp16_ = _tmp22_ == FOLKS_PERSONA_STORE_TRUST_NONE;
+#line 2051 "contacts-utils.c"
+               } else {
+#line 197 "../src/contacts-utils.vala"
+                       _tmp16_ = FALSE;
+#line 2055 "contacts-utils.c"
+               }
+#line 197 "../src/contacts-utils.vala"
+               if (_tmp16_) {
+#line 199 "../src/contacts-utils.vala"
+                       result = TRUE;
+#line 199 "../src/contacts-utils.vala"
+                       _g_object_unref0 (persona_store);
+#line 199 "../src/contacts-utils.vala"
+                       _g_object_unref0 (i);
+#line 199 "../src/contacts-utils.vala"
+                       return result;
+#line 2067 "contacts-utils.c"
+               }
+#line 189 "../src/contacts-utils.vala"
+               _g_object_unref0 (persona_store);
+#line 2071 "contacts-utils.c"
+       }
+#line 202 "../src/contacts-utils.vala"
+       result = FALSE;
+#line 202 "../src/contacts-utils.vala"
+       _g_object_unref0 (i);
+#line 202 "../src/contacts-utils.vala"
+       return result;
+#line 2079 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_suggest_link_to (ContactsStore* store,
+                                FolksIndividual* _self_,
+                                FolksIndividual* other)
+{
+       gboolean _tmp0_ = FALSE;
+       gboolean _tmp1_ = FALSE;
+       gboolean result = FALSE;
+#line 205 "../src/contacts-utils.vala"
+       g_return_val_if_fail (store != NULL, FALSE);
+#line 205 "../src/contacts-utils.vala"
+       g_return_val_if_fail (_self_ != NULL, FALSE);
+#line 205 "../src/contacts-utils.vala"
+       g_return_val_if_fail (other != NULL, FALSE);
+#line 206 "../src/contacts-utils.vala"
+       if (contacts_utils_non_linkable (_self_)) {
+#line 206 "../src/contacts-utils.vala"
+               _tmp0_ = TRUE;
+#line 2100 "contacts-utils.c"
+       } else {
+#line 206 "../src/contacts-utils.vala"
+               _tmp0_ = contacts_utils_non_linkable (other);
+#line 2104 "contacts-utils.c"
+       }
+#line 206 "../src/contacts-utils.vala"
+       if (_tmp0_) {
+#line 207 "../src/contacts-utils.vala"
+               result = FALSE;
+#line 207 "../src/contacts-utils.vala"
+               return result;
+#line 2112 "contacts-utils.c"
+       }
+#line 209 "../src/contacts-utils.vala"
+       if (!contacts_store_may_suggest_link (store, _self_, other)) {
+#line 210 "../src/contacts-utils.vala"
+               result = FALSE;
+#line 210 "../src/contacts-utils.vala"
+               return result;
+#line 2120 "contacts-utils.c"
+       }
+#line 214 "../src/contacts-utils.vala"
+       if (!contacts_utils_has_main_persona (_self_)) {
+#line 214 "../src/contacts-utils.vala"
+               _tmp1_ = TRUE;
+#line 2126 "contacts-utils.c"
+       } else {
+#line 214 "../src/contacts-utils.vala"
+               _tmp1_ = !contacts_utils_has_mainable_persona (other);
+#line 2130 "contacts-utils.c"
+       }
+#line 214 "../src/contacts-utils.vala"
+       result = _tmp1_;
+#line 214 "../src/contacts-utils.vala"
+       return result;
+#line 2136 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_has_pref (FolksAbstractFieldDetails* details)
+{
+       GeeCollection* evolution_pref = NULL;
+       GeeCollection* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       GeeCollection* _tmp2_;
+       gboolean result = FALSE;
+#line 217 "../src/contacts-utils.vala"
+       g_return_val_if_fail (details != NULL, FALSE);
+#line 218 "../src/contacts-utils.vala"
+       _tmp0_ = folks_abstract_field_details_get_parameter_values (details, "x-evolution-ui-slot");
+#line 218 "../src/contacts-utils.vala"
+       evolution_pref = _tmp0_;
+#line 219 "../src/contacts-utils.vala"
+       _tmp2_ = evolution_pref;
+#line 219 "../src/contacts-utils.vala"
+       if (_tmp2_ != NULL) {
+#line 2157 "contacts-utils.c"
+               GeeCollection* _tmp3_;
+               gpointer _tmp4_;
+               gchar* _tmp5_;
+#line 219 "../src/contacts-utils.vala"
+               _tmp3_ = evolution_pref;
+#line 219 "../src/contacts-utils.vala"
+               _tmp4_ = contacts_utils_get_first (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, _tmp3_);
+#line 219 "../src/contacts-utils.vala"
+               _tmp5_ = (gchar*) _tmp4_;
+#line 219 "../src/contacts-utils.vala"
+               _tmp1_ = g_strcmp0 (_tmp5_, "1") == 0;
+#line 219 "../src/contacts-utils.vala"
+               _g_free0 (_tmp5_);
+#line 2171 "contacts-utils.c"
+       } else {
+#line 219 "../src/contacts-utils.vala"
+               _tmp1_ = FALSE;
+#line 2175 "contacts-utils.c"
+       }
+#line 219 "../src/contacts-utils.vala"
+       if (_tmp1_) {
+#line 220 "../src/contacts-utils.vala"
+               result = TRUE;
+#line 220 "../src/contacts-utils.vala"
+               _g_object_unref0 (evolution_pref);
+#line 220 "../src/contacts-utils.vala"
+               return result;
+#line 2185 "contacts-utils.c"
+       }
+       {
+               GeeIterator* _param_it = NULL;
+               GeeMultiMap* _tmp6_;
+               GeeMultiMap* _tmp7_;
+               GeeCollection* _tmp8_;
+               GeeCollection* _tmp9_;
+               GeeIterator* _tmp10_;
+               GeeIterator* _tmp11_;
+#line 222 "../src/contacts-utils.vala"
+               _tmp6_ = folks_abstract_field_details_get_parameters (details);
+#line 222 "../src/contacts-utils.vala"
+               _tmp7_ = _tmp6_;
+#line 222 "../src/contacts-utils.vala"
+               _tmp8_ = gee_multi_map_get (_tmp7_, "type");
+#line 222 "../src/contacts-utils.vala"
+               _tmp9_ = _tmp8_;
+#line 222 "../src/contacts-utils.vala"
+               _tmp10_ = gee_iterable_iterator ((GeeIterable*) _tmp9_);
+#line 222 "../src/contacts-utils.vala"
+               _tmp11_ = _tmp10_;
+#line 222 "../src/contacts-utils.vala"
+               _g_object_unref0 (_tmp9_);
+#line 222 "../src/contacts-utils.vala"
+               _param_it = _tmp11_;
+#line 222 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 2213 "contacts-utils.c"
+                       GeeIterator* _tmp12_;
+                       gchar* param = NULL;
+                       GeeIterator* _tmp13_;
+                       gpointer _tmp14_;
+                       const gchar* _tmp15_;
+#line 222 "../src/contacts-utils.vala"
+                       _tmp12_ = _param_it;
+#line 222 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp12_)) {
+#line 222 "../src/contacts-utils.vala"
+                               break;
+#line 2225 "contacts-utils.c"
+                       }
+#line 222 "../src/contacts-utils.vala"
+                       _tmp13_ = _param_it;
+#line 222 "../src/contacts-utils.vala"
+                       _tmp14_ = gee_iterator_get (_tmp13_);
+#line 222 "../src/contacts-utils.vala"
+                       param = (gchar*) _tmp14_;
+#line 223 "../src/contacts-utils.vala"
+                       _tmp15_ = param;
+#line 223 "../src/contacts-utils.vala"
+                       if (g_ascii_strcasecmp (_tmp15_, "PREF") == 0) {
+#line 224 "../src/contacts-utils.vala"
+                               result = TRUE;
+#line 224 "../src/contacts-utils.vala"
+                               _g_free0 (param);
+#line 224 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_param_it);
+#line 224 "../src/contacts-utils.vala"
+                               _g_object_unref0 (evolution_pref);
+#line 224 "../src/contacts-utils.vala"
+                               return result;
+#line 2247 "contacts-utils.c"
+                       }
+#line 222 "../src/contacts-utils.vala"
+                       _g_free0 (param);
+#line 2251 "contacts-utils.c"
+               }
+#line 222 "../src/contacts-utils.vala"
+               _g_object_unref0 (_param_it);
+#line 2255 "contacts-utils.c"
+       }
+#line 226 "../src/contacts-utils.vala"
+       result = FALSE;
+#line 226 "../src/contacts-utils.vala"
+       _g_object_unref0 (evolution_pref);
+#line 226 "../src/contacts-utils.vala"
+       return result;
+#line 2263 "contacts-utils.c"
+}
+
+ContactsTypeSet*
+contacts_utils_select_typeset_from_fielddetails (FolksAbstractFieldDetails* a)
+{
+       ContactsTypeSet* _tmp6_;
+       ContactsTypeSet* _tmp7_;
+       ContactsTypeSet* _tmp8_;
+       ContactsTypeSet* result = NULL;
+#line 229 "../src/contacts-utils.vala"
+       g_return_val_if_fail (a != NULL, NULL);
+#line 230 "../src/contacts-utils.vala"
+       if (G_TYPE_CHECK_INSTANCE_TYPE (a, FOLKS_TYPE_EMAIL_FIELD_DETAILS)) {
+#line 2277 "contacts-utils.c"
+               ContactsTypeSet* _tmp0_;
+               ContactsTypeSet* _tmp1_;
+               ContactsTypeSet* _tmp2_;
+#line 231 "../src/contacts-utils.vala"
+               _tmp0_ = contacts_typeset_get_email ();
+#line 231 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 231 "../src/contacts-utils.vala"
+               _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 231 "../src/contacts-utils.vala"
+               result = _tmp2_;
+#line 231 "../src/contacts-utils.vala"
+               return result;
+#line 2291 "contacts-utils.c"
+       }
+#line 232 "../src/contacts-utils.vala"
+       if (G_TYPE_CHECK_INSTANCE_TYPE (a, FOLKS_TYPE_PHONE_FIELD_DETAILS)) {
+#line 2295 "contacts-utils.c"
+               ContactsTypeSet* _tmp3_;
+               ContactsTypeSet* _tmp4_;
+               ContactsTypeSet* _tmp5_;
+#line 233 "../src/contacts-utils.vala"
+               _tmp3_ = contacts_typeset_get_phone ();
+#line 233 "../src/contacts-utils.vala"
+               _tmp4_ = _tmp3_;
+#line 233 "../src/contacts-utils.vala"
+               _tmp5_ = _g_object_ref0 (_tmp4_);
+#line 233 "../src/contacts-utils.vala"
+               result = _tmp5_;
+#line 233 "../src/contacts-utils.vala"
+               return result;
+#line 2309 "contacts-utils.c"
+       }
+#line 234 "../src/contacts-utils.vala"
+       _tmp6_ = contacts_typeset_get_general ();
+#line 234 "../src/contacts-utils.vala"
+       _tmp7_ = _tmp6_;
+#line 234 "../src/contacts-utils.vala"
+       _tmp8_ = _g_object_ref0 (_tmp7_);
+#line 234 "../src/contacts-utils.vala"
+       result = _tmp8_;
+#line 234 "../src/contacts-utils.vala"
+       return result;
+#line 2321 "contacts-utils.c"
+}
+
+gint
+contacts_utils_compare_fields (void* _a,
+                               void* _b)
+{
+       FolksAbstractFieldDetails* a = NULL;
+       FolksAbstractFieldDetails* _tmp0_;
+       FolksAbstractFieldDetails* b = NULL;
+       FolksAbstractFieldDetails* _tmp1_;
+       gboolean a_has_pref = FALSE;
+       FolksAbstractFieldDetails* _tmp2_;
+       FolksAbstractFieldDetails* _tmp3_;
+       ContactsTypeSet* type_set = NULL;
+       FolksAbstractFieldDetails* _tmp5_;
+       ContactsTypeSet* _tmp6_;
+       gint _result_ = 0;
+       ContactsTypeSet* _tmp7_;
+       FolksAbstractFieldDetails* _tmp8_;
+       gchar* _tmp9_;
+       gchar* _tmp10_;
+       ContactsTypeSet* _tmp11_;
+       FolksAbstractFieldDetails* _tmp12_;
+       gchar* _tmp13_;
+       gchar* _tmp14_;
+       gint _tmp15_;
+       FolksAbstractFieldDetails* aa = NULL;
+       FolksAbstractFieldDetails* _tmp16_;
+       FolksAbstractFieldDetails* _tmp17_;
+       FolksAbstractFieldDetails* bb = NULL;
+       FolksAbstractFieldDetails* _tmp18_;
+       FolksAbstractFieldDetails* _tmp19_;
+       gboolean _tmp20_ = FALSE;
+       FolksAbstractFieldDetails* _tmp21_;
+       gint result = 0;
+#line 238 "../src/contacts-utils.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_a, FOLKS_TYPE_ABSTRACT_FIELD_DETAILS, 
FolksAbstractFieldDetails));
+#line 238 "../src/contacts-utils.vala"
+       a = _tmp0_;
+#line 239 "../src/contacts-utils.vala"
+       _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_b, FOLKS_TYPE_ABSTRACT_FIELD_DETAILS, 
FolksAbstractFieldDetails));
+#line 239 "../src/contacts-utils.vala"
+       b = _tmp1_;
+#line 242 "../src/contacts-utils.vala"
+       _tmp2_ = a;
+#line 242 "../src/contacts-utils.vala"
+       a_has_pref = contacts_utils_has_pref (_tmp2_);
+#line 243 "../src/contacts-utils.vala"
+       _tmp3_ = b;
+#line 243 "../src/contacts-utils.vala"
+       if (a_has_pref != contacts_utils_has_pref (_tmp3_)) {
+#line 2373 "contacts-utils.c"
+               gint _tmp4_ = 0;
+#line 244 "../src/contacts-utils.vala"
+               if (a_has_pref) {
+#line 244 "../src/contacts-utils.vala"
+                       _tmp4_ = -1;
+#line 2379 "contacts-utils.c"
+               } else {
+#line 244 "../src/contacts-utils.vala"
+                       _tmp4_ = 1;
+#line 2383 "contacts-utils.c"
+               }
+#line 244 "../src/contacts-utils.vala"
+               result = _tmp4_;
+#line 244 "../src/contacts-utils.vala"
+               _g_object_unref0 (b);
+#line 244 "../src/contacts-utils.vala"
+               _g_object_unref0 (a);
+#line 244 "../src/contacts-utils.vala"
+               return result;
+#line 2393 "contacts-utils.c"
+       }
+#line 247 "../src/contacts-utils.vala"
+       _tmp5_ = a;
+#line 247 "../src/contacts-utils.vala"
+       _tmp6_ = contacts_utils_select_typeset_from_fielddetails (_tmp5_);
+#line 247 "../src/contacts-utils.vala"
+       type_set = _tmp6_;
+#line 248 "../src/contacts-utils.vala"
+       _tmp7_ = type_set;
+#line 248 "../src/contacts-utils.vala"
+       _tmp8_ = a;
+#line 248 "../src/contacts-utils.vala"
+       _tmp9_ = contacts_typeset_format_type (_tmp7_, _tmp8_);
+#line 248 "../src/contacts-utils.vala"
+       _tmp10_ = _tmp9_;
+#line 248 "../src/contacts-utils.vala"
+       _tmp11_ = type_set;
+#line 248 "../src/contacts-utils.vala"
+       _tmp12_ = b;
+#line 248 "../src/contacts-utils.vala"
+       _tmp13_ = contacts_typeset_format_type (_tmp11_, _tmp12_);
+#line 248 "../src/contacts-utils.vala"
+       _tmp14_ = _tmp13_;
+#line 248 "../src/contacts-utils.vala"
+       _tmp15_ = g_ascii_strcasecmp (_tmp10_, _tmp14_);
+#line 248 "../src/contacts-utils.vala"
+       _g_free0 (_tmp14_);
+#line 248 "../src/contacts-utils.vala"
+       _g_free0 (_tmp10_);
+#line 248 "../src/contacts-utils.vala"
+       _result_ = _tmp15_;
+#line 249 "../src/contacts-utils.vala"
+       if (_result_ != 0) {
+#line 250 "../src/contacts-utils.vala"
+               result = _result_;
+#line 250 "../src/contacts-utils.vala"
+               _g_object_unref0 (type_set);
+#line 250 "../src/contacts-utils.vala"
+               _g_object_unref0 (b);
+#line 250 "../src/contacts-utils.vala"
+               _g_object_unref0 (a);
+#line 250 "../src/contacts-utils.vala"
+               return result;
+#line 2437 "contacts-utils.c"
+       }
+#line 253 "../src/contacts-utils.vala"
+       _tmp16_ = a;
+#line 253 "../src/contacts-utils.vala"
+       _tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, FOLKS_TYPE_ABSTRACT_FIELD_DETAILS) ? 
((FolksAbstractFieldDetails*) _tmp16_) : NULL);
+#line 253 "../src/contacts-utils.vala"
+       aa = _tmp17_;
+#line 254 "../src/contacts-utils.vala"
+       _tmp18_ = b;
+#line 254 "../src/contacts-utils.vala"
+       _tmp19_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, FOLKS_TYPE_ABSTRACT_FIELD_DETAILS) ? 
((FolksAbstractFieldDetails*) _tmp18_) : NULL);
+#line 254 "../src/contacts-utils.vala"
+       bb = _tmp19_;
+#line 255 "../src/contacts-utils.vala"
+       _tmp21_ = aa;
+#line 255 "../src/contacts-utils.vala"
+       if (_tmp21_ != NULL) {
+#line 2455 "contacts-utils.c"
+               FolksAbstractFieldDetails* _tmp22_;
+#line 255 "../src/contacts-utils.vala"
+               _tmp22_ = bb;
+#line 255 "../src/contacts-utils.vala"
+               _tmp20_ = _tmp22_ != NULL;
+#line 2461 "contacts-utils.c"
+       } else {
+#line 255 "../src/contacts-utils.vala"
+               _tmp20_ = FALSE;
+#line 2465 "contacts-utils.c"
+       }
+#line 255 "../src/contacts-utils.vala"
+       if (_tmp20_) {
+#line 2469 "contacts-utils.c"
+               GCompareFunc _tmp23_;
+               FolksAbstractFieldDetails* _tmp24_;
+               gconstpointer _tmp25_;
+               const gchar* _tmp26_;
+               FolksAbstractFieldDetails* _tmp27_;
+               gconstpointer _tmp28_;
+               const gchar* _tmp29_;
+#line 256 "../src/contacts-utils.vala"
+               _tmp23_ = ((GCompareFunc) g_strcmp0);
+#line 256 "../src/contacts-utils.vala"
+               _tmp24_ = aa;
+#line 256 "../src/contacts-utils.vala"
+               _tmp25_ = folks_abstract_field_details_get_value (_tmp24_);
+#line 256 "../src/contacts-utils.vala"
+               _tmp26_ = _tmp25_;
+#line 256 "../src/contacts-utils.vala"
+               _tmp27_ = bb;
+#line 256 "../src/contacts-utils.vala"
+               _tmp28_ = folks_abstract_field_details_get_value (_tmp27_);
+#line 256 "../src/contacts-utils.vala"
+               _tmp29_ = _tmp28_;
+#line 256 "../src/contacts-utils.vala"
+               result = _tmp23_ ((const gchar*) _tmp26_, (const gchar*) _tmp29_);
+#line 256 "../src/contacts-utils.vala"
+               _g_object_unref0 (bb);
+#line 256 "../src/contacts-utils.vala"
+               _g_object_unref0 (aa);
+#line 256 "../src/contacts-utils.vala"
+               _g_object_unref0 (type_set);
+#line 256 "../src/contacts-utils.vala"
+               _g_object_unref0 (b);
+#line 256 "../src/contacts-utils.vala"
+               _g_object_unref0 (a);
+#line 256 "../src/contacts-utils.vala"
+               return result;
+#line 2505 "contacts-utils.c"
+       }
+#line 259 "../src/contacts-utils.vala"
+       g_warning ("contacts-utils.vala:259: Unsupported AbstractFieldDetails value type");
+#line 260 "../src/contacts-utils.vala"
+       result = 0;
+#line 260 "../src/contacts-utils.vala"
+       _g_object_unref0 (bb);
+#line 260 "../src/contacts-utils.vala"
+       _g_object_unref0 (aa);
+#line 260 "../src/contacts-utils.vala"
+       _g_object_unref0 (type_set);
+#line 260 "../src/contacts-utils.vala"
+       _g_object_unref0 (b);
+#line 260 "../src/contacts-utils.vala"
+       _g_object_unref0 (a);
+#line 260 "../src/contacts-utils.vala"
+       return result;
+#line 2523 "contacts-utils.c"
+}
+
+static gint
+_contacts_utils_compare_fields_gcompare_data_func (gconstpointer a,
+                                                   gconstpointer b,
+                                                   gpointer self)
+{
+       gint result;
+       result = contacts_utils_compare_fields (a, b);
+#line 266 "../src/contacts-utils.vala"
+       return result;
+#line 2535 "contacts-utils.c"
+}
+
+GeeList*
+contacts_utils_sort_fields (GType t_type,
+                            GBoxedCopyFunc t_dup_func,
+                            GDestroyNotify t_destroy_func,
+                            GeeCollection* fields)
+{
+       GeeArrayList* res = NULL;
+       GeeArrayList* _tmp0_;
+       GeeList* result = NULL;
+#line 263 "../src/contacts-utils.vala"
+       g_return_val_if_fail (fields != NULL, NULL);
+#line 264 "../src/contacts-utils.vala"
+       _tmp0_ = gee_array_list_new (t_type, (GBoxedCopyFunc) t_dup_func, (GDestroyNotify) t_destroy_func, 
NULL, NULL, NULL);
+#line 264 "../src/contacts-utils.vala"
+       res = _tmp0_;
+#line 265 "../src/contacts-utils.vala"
+       gee_array_list_add_all (res, fields);
+#line 266 "../src/contacts-utils.vala"
+       gee_list_sort ((GeeList*) res, _contacts_utils_compare_fields_gcompare_data_func, NULL, NULL);
+#line 267 "../src/contacts-utils.vala"
+       result = (GeeList*) res;
+#line 267 "../src/contacts-utils.vala"
+       return result;
+#line 2561 "contacts-utils.c"
+}
+
+static void
+_vala_array_add4 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 274 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 274 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 274 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2576 "contacts-utils.c"
+       }
+#line 274 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 274 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2582 "contacts-utils.c"
+}
+
+static void
+_vala_array_add5 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 277 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 277 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 277 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2597 "contacts-utils.c"
+       }
+#line 277 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 277 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2603 "contacts-utils.c"
+}
+
+static void
+_vala_array_add6 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 280 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 280 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 280 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2618 "contacts-utils.c"
+       }
+#line 280 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 280 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2624 "contacts-utils.c"
+}
+
+static void
+_vala_array_add7 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 283 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 283 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 283 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2639 "contacts-utils.c"
+       }
+#line 283 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 283 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2645 "contacts-utils.c"
+}
+
+static void
+_vala_array_add8 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 286 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 286 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 286 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2660 "contacts-utils.c"
+       }
+#line 286 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 286 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2666 "contacts-utils.c"
+}
+
+static void
+_vala_array_add9 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 289 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 289 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 289 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2681 "contacts-utils.c"
+       }
+#line 289 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 289 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2687 "contacts-utils.c"
+}
+
+static void
+_vala_array_add10 (gchar** * array,
+                   gint* length,
+                   gint* size,
+                   gchar* value)
+{
+#line 292 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 292 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 292 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2702 "contacts-utils.c"
+       }
+#line 292 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 292 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2708 "contacts-utils.c"
+}
+
+static void
+_vala_array_add11 (gchar** * array,
+                   gint* length,
+                   gint* size,
+                   gchar* value)
+{
+#line 295 "../src/contacts-utils.vala"
+       if ((*length) == (*size)) {
+#line 295 "../src/contacts-utils.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 295 "../src/contacts-utils.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2723 "contacts-utils.c"
+       }
+#line 295 "../src/contacts-utils.vala"
+       (*array)[(*length)++] = value;
+#line 295 "../src/contacts-utils.vala"
+       (*array)[*length] = NULL;
+#line 2729 "contacts-utils.c"
+}
+
+gchar**
+contacts_utils_format_address (FolksPostalAddress* addr,
+                               gint* result_length1)
+{
+       gchar** lines = NULL;
+       gchar** _tmp0_;
+       gint lines_length1;
+       gint _lines_size_;
+       const gchar* _tmp1_;
+       const gchar* _tmp2_;
+       const gchar* _tmp7_;
+       const gchar* _tmp8_;
+       const gchar* _tmp13_;
+       const gchar* _tmp14_;
+       const gchar* _tmp19_;
+       const gchar* _tmp20_;
+       const gchar* _tmp25_;
+       const gchar* _tmp26_;
+       const gchar* _tmp31_;
+       const gchar* _tmp32_;
+       const gchar* _tmp37_;
+       const gchar* _tmp38_;
+       const gchar* _tmp43_;
+       const gchar* _tmp44_;
+       gchar** _tmp49_;
+       gint _tmp49__length1;
+       gchar** result = NULL;
+#line 270 "../src/contacts-utils.vala"
+       g_return_val_if_fail (addr != NULL, NULL);
+#line 271 "../src/contacts-utils.vala"
+       _tmp0_ = g_new0 (gchar*, 0 + 1);
+#line 271 "../src/contacts-utils.vala"
+       lines = _tmp0_;
+#line 271 "../src/contacts-utils.vala"
+       lines_length1 = 0;
+#line 271 "../src/contacts-utils.vala"
+       _lines_size_ = lines_length1;
+#line 273 "../src/contacts-utils.vala"
+       _tmp1_ = folks_postal_address_get_street (addr);
+#line 273 "../src/contacts-utils.vala"
+       _tmp2_ = _tmp1_;
+#line 273 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp2_)) {
+#line 2775 "contacts-utils.c"
+               gchar** _tmp3_;
+               gint _tmp3__length1;
+               const gchar* _tmp4_;
+               const gchar* _tmp5_;
+               gchar* _tmp6_;
+#line 274 "../src/contacts-utils.vala"
+               _tmp3_ = lines;
+#line 274 "../src/contacts-utils.vala"
+               _tmp3__length1 = lines_length1;
+#line 274 "../src/contacts-utils.vala"
+               _tmp4_ = folks_postal_address_get_street (addr);
+#line 274 "../src/contacts-utils.vala"
+               _tmp5_ = _tmp4_;
+#line 274 "../src/contacts-utils.vala"
+               _tmp6_ = g_strdup (_tmp5_);
+#line 274 "../src/contacts-utils.vala"
+               _vala_array_add4 (&lines, &lines_length1, &_lines_size_, _tmp6_);
+#line 2793 "contacts-utils.c"
+       }
+#line 276 "../src/contacts-utils.vala"
+       _tmp7_ = folks_postal_address_get_extension (addr);
+#line 276 "../src/contacts-utils.vala"
+       _tmp8_ = _tmp7_;
+#line 276 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp8_)) {
+#line 2801 "contacts-utils.c"
+               gchar** _tmp9_;
+               gint _tmp9__length1;
+               const gchar* _tmp10_;
+               const gchar* _tmp11_;
+               gchar* _tmp12_;
+#line 277 "../src/contacts-utils.vala"
+               _tmp9_ = lines;
+#line 277 "../src/contacts-utils.vala"
+               _tmp9__length1 = lines_length1;
+#line 277 "../src/contacts-utils.vala"
+               _tmp10_ = folks_postal_address_get_extension (addr);
+#line 277 "../src/contacts-utils.vala"
+               _tmp11_ = _tmp10_;
+#line 277 "../src/contacts-utils.vala"
+               _tmp12_ = g_strdup (_tmp11_);
+#line 277 "../src/contacts-utils.vala"
+               _vala_array_add5 (&lines, &lines_length1, &_lines_size_, _tmp12_);
+#line 2819 "contacts-utils.c"
+       }
+#line 279 "../src/contacts-utils.vala"
+       _tmp13_ = folks_postal_address_get_locality (addr);
+#line 279 "../src/contacts-utils.vala"
+       _tmp14_ = _tmp13_;
+#line 279 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp14_)) {
+#line 2827 "contacts-utils.c"
+               gchar** _tmp15_;
+               gint _tmp15__length1;
+               const gchar* _tmp16_;
+               const gchar* _tmp17_;
+               gchar* _tmp18_;
+#line 280 "../src/contacts-utils.vala"
+               _tmp15_ = lines;
+#line 280 "../src/contacts-utils.vala"
+               _tmp15__length1 = lines_length1;
+#line 280 "../src/contacts-utils.vala"
+               _tmp16_ = folks_postal_address_get_locality (addr);
+#line 280 "../src/contacts-utils.vala"
+               _tmp17_ = _tmp16_;
+#line 280 "../src/contacts-utils.vala"
+               _tmp18_ = g_strdup (_tmp17_);
+#line 280 "../src/contacts-utils.vala"
+               _vala_array_add6 (&lines, &lines_length1, &_lines_size_, _tmp18_);
+#line 2845 "contacts-utils.c"
+       }
+#line 282 "../src/contacts-utils.vala"
+       _tmp19_ = folks_postal_address_get_region (addr);
+#line 282 "../src/contacts-utils.vala"
+       _tmp20_ = _tmp19_;
+#line 282 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp20_)) {
+#line 2853 "contacts-utils.c"
+               gchar** _tmp21_;
+               gint _tmp21__length1;
+               const gchar* _tmp22_;
+               const gchar* _tmp23_;
+               gchar* _tmp24_;
+#line 283 "../src/contacts-utils.vala"
+               _tmp21_ = lines;
+#line 283 "../src/contacts-utils.vala"
+               _tmp21__length1 = lines_length1;
+#line 283 "../src/contacts-utils.vala"
+               _tmp22_ = folks_postal_address_get_region (addr);
+#line 283 "../src/contacts-utils.vala"
+               _tmp23_ = _tmp22_;
+#line 283 "../src/contacts-utils.vala"
+               _tmp24_ = g_strdup (_tmp23_);
+#line 283 "../src/contacts-utils.vala"
+               _vala_array_add7 (&lines, &lines_length1, &_lines_size_, _tmp24_);
+#line 2871 "contacts-utils.c"
+       }
+#line 285 "../src/contacts-utils.vala"
+       _tmp25_ = folks_postal_address_get_postal_code (addr);
+#line 285 "../src/contacts-utils.vala"
+       _tmp26_ = _tmp25_;
+#line 285 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp26_)) {
+#line 2879 "contacts-utils.c"
+               gchar** _tmp27_;
+               gint _tmp27__length1;
+               const gchar* _tmp28_;
+               const gchar* _tmp29_;
+               gchar* _tmp30_;
+#line 286 "../src/contacts-utils.vala"
+               _tmp27_ = lines;
+#line 286 "../src/contacts-utils.vala"
+               _tmp27__length1 = lines_length1;
+#line 286 "../src/contacts-utils.vala"
+               _tmp28_ = folks_postal_address_get_postal_code (addr);
+#line 286 "../src/contacts-utils.vala"
+               _tmp29_ = _tmp28_;
+#line 286 "../src/contacts-utils.vala"
+               _tmp30_ = g_strdup (_tmp29_);
+#line 286 "../src/contacts-utils.vala"
+               _vala_array_add8 (&lines, &lines_length1, &_lines_size_, _tmp30_);
+#line 2897 "contacts-utils.c"
+       }
+#line 288 "../src/contacts-utils.vala"
+       _tmp31_ = folks_postal_address_get_po_box (addr);
+#line 288 "../src/contacts-utils.vala"
+       _tmp32_ = _tmp31_;
+#line 288 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp32_)) {
+#line 2905 "contacts-utils.c"
+               gchar** _tmp33_;
+               gint _tmp33__length1;
+               const gchar* _tmp34_;
+               const gchar* _tmp35_;
+               gchar* _tmp36_;
+#line 289 "../src/contacts-utils.vala"
+               _tmp33_ = lines;
+#line 289 "../src/contacts-utils.vala"
+               _tmp33__length1 = lines_length1;
+#line 289 "../src/contacts-utils.vala"
+               _tmp34_ = folks_postal_address_get_po_box (addr);
+#line 289 "../src/contacts-utils.vala"
+               _tmp35_ = _tmp34_;
+#line 289 "../src/contacts-utils.vala"
+               _tmp36_ = g_strdup (_tmp35_);
+#line 289 "../src/contacts-utils.vala"
+               _vala_array_add9 (&lines, &lines_length1, &_lines_size_, _tmp36_);
+#line 2923 "contacts-utils.c"
+       }
+#line 291 "../src/contacts-utils.vala"
+       _tmp37_ = folks_postal_address_get_country (addr);
+#line 291 "../src/contacts-utils.vala"
+       _tmp38_ = _tmp37_;
+#line 291 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp38_)) {
+#line 2931 "contacts-utils.c"
+               gchar** _tmp39_;
+               gint _tmp39__length1;
+               const gchar* _tmp40_;
+               const gchar* _tmp41_;
+               gchar* _tmp42_;
+#line 292 "../src/contacts-utils.vala"
+               _tmp39_ = lines;
+#line 292 "../src/contacts-utils.vala"
+               _tmp39__length1 = lines_length1;
+#line 292 "../src/contacts-utils.vala"
+               _tmp40_ = folks_postal_address_get_country (addr);
+#line 292 "../src/contacts-utils.vala"
+               _tmp41_ = _tmp40_;
+#line 292 "../src/contacts-utils.vala"
+               _tmp42_ = g_strdup (_tmp41_);
+#line 292 "../src/contacts-utils.vala"
+               _vala_array_add10 (&lines, &lines_length1, &_lines_size_, _tmp42_);
+#line 2949 "contacts-utils.c"
+       }
+#line 294 "../src/contacts-utils.vala"
+       _tmp43_ = folks_postal_address_get_address_format (addr);
+#line 294 "../src/contacts-utils.vala"
+       _tmp44_ = _tmp43_;
+#line 294 "../src/contacts-utils.vala"
+       if (contacts_is_set (_tmp44_)) {
+#line 2957 "contacts-utils.c"
+               gchar** _tmp45_;
+               gint _tmp45__length1;
+               const gchar* _tmp46_;
+               const gchar* _tmp47_;
+               gchar* _tmp48_;
+#line 295 "../src/contacts-utils.vala"
+               _tmp45_ = lines;
+#line 295 "../src/contacts-utils.vala"
+               _tmp45__length1 = lines_length1;
+#line 295 "../src/contacts-utils.vala"
+               _tmp46_ = folks_postal_address_get_address_format (addr);
+#line 295 "../src/contacts-utils.vala"
+               _tmp47_ = _tmp46_;
+#line 295 "../src/contacts-utils.vala"
+               _tmp48_ = g_strdup (_tmp47_);
+#line 295 "../src/contacts-utils.vala"
+               _vala_array_add11 (&lines, &lines_length1, &_lines_size_, _tmp48_);
+#line 2975 "contacts-utils.c"
+       }
+#line 297 "../src/contacts-utils.vala"
+       _tmp49_ = lines;
+#line 297 "../src/contacts-utils.vala"
+       _tmp49__length1 = lines_length1;
+#line 297 "../src/contacts-utils.vala"
+       if (result_length1) {
+#line 297 "../src/contacts-utils.vala"
+               *result_length1 = _tmp49__length1;
+#line 2985 "contacts-utils.c"
+       }
+#line 297 "../src/contacts-utils.vala"
+       result = _tmp49_;
+#line 297 "../src/contacts-utils.vala"
+       return result;
+#line 2991 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_can_remove_personas (FolksIndividual* individual)
+{
+       gboolean result = FALSE;
+#line 315 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, FALSE);
+#line 3000 "contacts-utils.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 316 "../src/contacts-utils.vala"
+               _tmp0_ = folks_individual_get_personas (individual);
+#line 316 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 316 "../src/contacts-utils.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 316 "../src/contacts-utils.vala"
+               _p_it = _tmp2_;
+#line 316 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 3016 "contacts-utils.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+                       FolksPersona* _tmp6_;
+                       FolksPersonaStore* _tmp7_;
+                       FolksPersonaStore* _tmp8_;
+                       FolksMaybeBool _tmp9_;
+                       FolksMaybeBool _tmp10_;
+#line 316 "../src/contacts-utils.vala"
+                       _tmp3_ = _p_it;
+#line 316 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 316 "../src/contacts-utils.vala"
+                               break;
+#line 3032 "contacts-utils.c"
+                       }
+#line 316 "../src/contacts-utils.vala"
+                       _tmp4_ = _p_it;
+#line 316 "../src/contacts-utils.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 316 "../src/contacts-utils.vala"
+                       p = (FolksPersona*) _tmp5_;
+#line 317 "../src/contacts-utils.vala"
+                       _tmp6_ = p;
+#line 317 "../src/contacts-utils.vala"
+                       _tmp7_ = folks_persona_get_store (_tmp6_);
+#line 317 "../src/contacts-utils.vala"
+                       _tmp8_ = _tmp7_;
+#line 317 "../src/contacts-utils.vala"
+                       _tmp9_ = folks_persona_store_get_can_remove_personas (_tmp8_);
+#line 317 "../src/contacts-utils.vala"
+                       _tmp10_ = _tmp9_;
+#line 317 "../src/contacts-utils.vala"
+                       if (_tmp10_ == FOLKS_MAYBE_BOOL_TRUE) {
+#line 318 "../src/contacts-utils.vala"
+                               result = TRUE;
+#line 318 "../src/contacts-utils.vala"
+                               _g_object_unref0 (p);
+#line 318 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_p_it);
+#line 318 "../src/contacts-utils.vala"
+                               return result;
+#line 3060 "contacts-utils.c"
+                       }
+#line 316 "../src/contacts-utils.vala"
+                       _g_object_unref0 (p);
+#line 3064 "contacts-utils.c"
+               }
+#line 316 "../src/contacts-utils.vala"
+               _g_object_unref0 (_p_it);
+#line 3068 "contacts-utils.c"
+       }
+#line 320 "../src/contacts-utils.vala"
+       result = FALSE;
+#line 320 "../src/contacts-utils.vala"
+       return result;
+#line 3074 "contacts-utils.c"
+}
+
+static gint
+__lambda6_ (FolksPersona* a,
+            FolksPersona* b)
+{
+       FolksPersonaStore* store_a = NULL;
+       FolksPersonaStore* _tmp0_;
+       FolksPersonaStore* _tmp1_;
+       FolksPersonaStore* _tmp2_;
+       FolksPersonaStore* store_b = NULL;
+       FolksPersonaStore* _tmp3_;
+       FolksPersonaStore* _tmp4_;
+       FolksPersonaStore* _tmp5_;
+       FolksPersonaStore* _tmp6_;
+       FolksPersonaStore* _tmp7_;
+       FolksPersonaStore* _tmp9_;
+       gboolean _tmp10_;
+       gboolean _tmp11_;
+       FolksPersonaStore* _tmp12_;
+       gboolean _tmp13_;
+       gboolean _tmp14_;
+       FolksPersonaStore* _tmp19_;
+       const gchar* _tmp20_;
+       const gchar* _tmp21_;
+       FolksPersonaStore* _tmp22_;
+       const gchar* _tmp23_;
+       const gchar* _tmp24_;
+       GCompareFunc _tmp29_;
+       FolksPersonaStore* _tmp30_;
+       const gchar* _tmp31_;
+       const gchar* _tmp32_;
+       FolksPersonaStore* _tmp33_;
+       const gchar* _tmp34_;
+       const gchar* _tmp35_;
+       gint result = 0;
+#line 324 "../src/contacts-utils.vala"
+       g_return_val_if_fail (a != NULL, 0);
+#line 324 "../src/contacts-utils.vala"
+       g_return_val_if_fail (b != NULL, 0);
+#line 325 "../src/contacts-utils.vala"
+       _tmp0_ = folks_persona_get_store (a);
+#line 325 "../src/contacts-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 325 "../src/contacts-utils.vala"
+       _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 325 "../src/contacts-utils.vala"
+       store_a = _tmp2_;
+#line 326 "../src/contacts-utils.vala"
+       _tmp3_ = folks_persona_get_store (b);
+#line 326 "../src/contacts-utils.vala"
+       _tmp4_ = _tmp3_;
+#line 326 "../src/contacts-utils.vala"
+       _tmp5_ = _g_object_ref0 (_tmp4_);
+#line 326 "../src/contacts-utils.vala"
+       store_b = _tmp5_;
+#line 329 "../src/contacts-utils.vala"
+       _tmp6_ = store_a;
+#line 329 "../src/contacts-utils.vala"
+       _tmp7_ = store_b;
+#line 329 "../src/contacts-utils.vala"
+       if (_tmp6_ == _tmp7_) {
+#line 3137 "contacts-utils.c"
+               gboolean a_is_other = FALSE;
+#line 330 "../src/contacts-utils.vala"
+               if (!contacts_utils_persona_is_google (a)) {
+#line 331 "../src/contacts-utils.vala"
+                       result = 0;
+#line 331 "../src/contacts-utils.vala"
+                       _g_object_unref0 (store_b);
+#line 331 "../src/contacts-utils.vala"
+                       _g_object_unref0 (store_a);
+#line 331 "../src/contacts-utils.vala"
+                       return result;
+#line 3149 "contacts-utils.c"
+               }
+#line 333 "../src/contacts-utils.vala"
+               a_is_other = contacts_utils_persona_is_google_other (a);
+#line 334 "../src/contacts-utils.vala"
+               if (a_is_other != contacts_utils_persona_is_google_other (b)) {
+#line 3155 "contacts-utils.c"
+                       gint _tmp8_ = 0;
+#line 335 "../src/contacts-utils.vala"
+                       if (a_is_other) {
+#line 335 "../src/contacts-utils.vala"
+                               _tmp8_ = 1;
+#line 3161 "contacts-utils.c"
+                       } else {
+#line 335 "../src/contacts-utils.vala"
+                               _tmp8_ = -1;
+#line 3165 "contacts-utils.c"
+                       }
+#line 335 "../src/contacts-utils.vala"
+                       result = _tmp8_;
+#line 335 "../src/contacts-utils.vala"
+                       _g_object_unref0 (store_b);
+#line 335 "../src/contacts-utils.vala"
+                       _g_object_unref0 (store_a);
+#line 335 "../src/contacts-utils.vala"
+                       return result;
+#line 3175 "contacts-utils.c"
+               }
+       }
+#line 339 "../src/contacts-utils.vala"
+       _tmp9_ = store_a;
+#line 339 "../src/contacts-utils.vala"
+       _tmp10_ = folks_persona_store_get_is_primary_store (_tmp9_);
+#line 339 "../src/contacts-utils.vala"
+       _tmp11_ = _tmp10_;
+#line 339 "../src/contacts-utils.vala"
+       _tmp12_ = store_b;
+#line 339 "../src/contacts-utils.vala"
+       _tmp13_ = folks_persona_store_get_is_primary_store (_tmp12_);
+#line 339 "../src/contacts-utils.vala"
+       _tmp14_ = _tmp13_;
+#line 339 "../src/contacts-utils.vala"
+       if (_tmp11_ != _tmp14_) {
+#line 3192 "contacts-utils.c"
+               gint _tmp15_ = 0;
+               FolksPersonaStore* _tmp16_;
+               gboolean _tmp17_;
+               gboolean _tmp18_;
+#line 340 "../src/contacts-utils.vala"
+               _tmp16_ = store_a;
+#line 340 "../src/contacts-utils.vala"
+               _tmp17_ = folks_persona_store_get_is_primary_store (_tmp16_);
+#line 340 "../src/contacts-utils.vala"
+               _tmp18_ = _tmp17_;
+#line 340 "../src/contacts-utils.vala"
+               if (_tmp18_) {
+#line 340 "../src/contacts-utils.vala"
+                       _tmp15_ = -1;
+#line 3207 "contacts-utils.c"
+               } else {
+#line 340 "../src/contacts-utils.vala"
+                       _tmp15_ = 1;
+#line 3211 "contacts-utils.c"
+               }
+#line 340 "../src/contacts-utils.vala"
+               result = _tmp15_;
+#line 340 "../src/contacts-utils.vala"
+               _g_object_unref0 (store_b);
+#line 340 "../src/contacts-utils.vala"
+               _g_object_unref0 (store_a);
+#line 340 "../src/contacts-utils.vala"
+               return result;
+#line 3221 "contacts-utils.c"
+       }
+#line 343 "../src/contacts-utils.vala"
+       _tmp19_ = store_a;
+#line 343 "../src/contacts-utils.vala"
+       _tmp20_ = folks_persona_store_get_type_id (_tmp19_);
+#line 343 "../src/contacts-utils.vala"
+       _tmp21_ = _tmp20_;
+#line 343 "../src/contacts-utils.vala"
+       _tmp22_ = store_b;
+#line 343 "../src/contacts-utils.vala"
+       _tmp23_ = folks_persona_store_get_type_id (_tmp22_);
+#line 343 "../src/contacts-utils.vala"
+       _tmp24_ = _tmp23_;
+#line 343 "../src/contacts-utils.vala"
+       if ((g_strcmp0 (_tmp21_, "eds") == 0) != (g_strcmp0 (_tmp24_, "eds") == 0)) {
+#line 3237 "contacts-utils.c"
+               gint _tmp25_ = 0;
+               FolksPersonaStore* _tmp26_;
+               const gchar* _tmp27_;
+               const gchar* _tmp28_;
+#line 344 "../src/contacts-utils.vala"
+               _tmp26_ = store_a;
+#line 344 "../src/contacts-utils.vala"
+               _tmp27_ = folks_persona_store_get_type_id (_tmp26_);
+#line 344 "../src/contacts-utils.vala"
+               _tmp28_ = _tmp27_;
+#line 344 "../src/contacts-utils.vala"
+               if (g_strcmp0 (_tmp28_, "eds") == 0) {
+#line 344 "../src/contacts-utils.vala"
+                       _tmp25_ = -1;
+#line 3252 "contacts-utils.c"
+               } else {
+#line 344 "../src/contacts-utils.vala"
+                       _tmp25_ = 1;
+#line 3256 "contacts-utils.c"
+               }
+#line 344 "../src/contacts-utils.vala"
+               result = _tmp25_;
+#line 344 "../src/contacts-utils.vala"
+               _g_object_unref0 (store_b);
+#line 344 "../src/contacts-utils.vala"
+               _g_object_unref0 (store_a);
+#line 344 "../src/contacts-utils.vala"
+               return result;
+#line 3266 "contacts-utils.c"
+       }
+#line 347 "../src/contacts-utils.vala"
+       _tmp29_ = ((GCompareFunc) g_strcmp0);
+#line 347 "../src/contacts-utils.vala"
+       _tmp30_ = store_a;
+#line 347 "../src/contacts-utils.vala"
+       _tmp31_ = folks_persona_store_get_id (_tmp30_);
+#line 347 "../src/contacts-utils.vala"
+       _tmp32_ = _tmp31_;
+#line 347 "../src/contacts-utils.vala"
+       _tmp33_ = store_b;
+#line 347 "../src/contacts-utils.vala"
+       _tmp34_ = folks_persona_store_get_id (_tmp33_);
+#line 347 "../src/contacts-utils.vala"
+       _tmp35_ = _tmp34_;
+#line 347 "../src/contacts-utils.vala"
+       result = _tmp29_ (_tmp32_, _tmp35_);
+#line 347 "../src/contacts-utils.vala"
+       _g_object_unref0 (store_b);
+#line 347 "../src/contacts-utils.vala"
+       _g_object_unref0 (store_a);
+#line 347 "../src/contacts-utils.vala"
+       return result;
+#line 3290 "contacts-utils.c"
+}
+
+static gint
+___lambda6__gcompare_data_func (gconstpointer a,
+                                gconstpointer b,
+                                gpointer self)
+{
+       gint result;
+       result = __lambda6_ ((FolksPersona*) a, (FolksPersona*) b);
+#line 324 "../src/contacts-utils.vala"
+       return result;
+#line 3302 "contacts-utils.c"
+}
+
+GeeList*
+contacts_utils_get_personas_for_display (FolksIndividual* individual)
+{
+       GCompareDataFunc compare_persona_by_store = NULL;
+       gpointer compare_persona_by_store_target;
+       GDestroyNotify compare_persona_by_store_target_destroy_notify;
+       GeeArrayList* persona_list = NULL;
+       GeeArrayList* _tmp0_;
+       GeeArrayList* _tmp14_;
+       GCompareDataFunc _tmp15_;
+       gpointer _tmp15__target;
+       GDestroyNotify _tmp15__target_destroy_notify;
+       GeeList* result = NULL;
+#line 323 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 324 "../src/contacts-utils.vala"
+       compare_persona_by_store = ___lambda6__gcompare_data_func;
+#line 324 "../src/contacts-utils.vala"
+       compare_persona_by_store_target = NULL;
+#line 324 "../src/contacts-utils.vala"
+       compare_persona_by_store_target_destroy_notify = NULL;
+#line 350 "../src/contacts-utils.vala"
+       _tmp0_ = gee_array_list_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 
g_object_unref, NULL, NULL, NULL);
+#line 350 "../src/contacts-utils.vala"
+       persona_list = _tmp0_;
+#line 3330 "contacts-utils.c"
+       {
+               GeeIterator* _persona_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeIterator* _tmp3_;
+#line 351 "../src/contacts-utils.vala"
+               _tmp1_ = folks_individual_get_personas (individual);
+#line 351 "../src/contacts-utils.vala"
+               _tmp2_ = _tmp1_;
+#line 351 "../src/contacts-utils.vala"
+               _tmp3_ = gee_iterable_iterator ((GeeIterable*) _tmp2_);
+#line 351 "../src/contacts-utils.vala"
+               _persona_it = _tmp3_;
+#line 351 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 3346 "contacts-utils.c"
+                       GeeIterator* _tmp4_;
+                       FolksPersona* persona = NULL;
+                       GeeIterator* _tmp5_;
+                       gpointer _tmp6_;
+                       FolksPersona* _tmp7_;
+                       FolksPersonaStore* _tmp8_;
+                       FolksPersonaStore* _tmp9_;
+                       const gchar* _tmp10_;
+                       const gchar* _tmp11_;
+#line 351 "../src/contacts-utils.vala"
+                       _tmp4_ = _persona_it;
+#line 351 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp4_)) {
+#line 351 "../src/contacts-utils.vala"
+                               break;
+#line 3362 "contacts-utils.c"
+                       }
+#line 351 "../src/contacts-utils.vala"
+                       _tmp5_ = _persona_it;
+#line 351 "../src/contacts-utils.vala"
+                       _tmp6_ = gee_iterator_get (_tmp5_);
+#line 351 "../src/contacts-utils.vala"
+                       persona = (FolksPersona*) _tmp6_;
+#line 352 "../src/contacts-utils.vala"
+                       _tmp7_ = persona;
+#line 352 "../src/contacts-utils.vala"
+                       _tmp8_ = folks_persona_get_store (_tmp7_);
+#line 352 "../src/contacts-utils.vala"
+                       _tmp9_ = _tmp8_;
+#line 352 "../src/contacts-utils.vala"
+                       _tmp10_ = folks_persona_store_get_type_id (_tmp9_);
+#line 352 "../src/contacts-utils.vala"
+                       _tmp11_ = _tmp10_;
+#line 352 "../src/contacts-utils.vala"
+                       if (g_strcmp0 (_tmp11_, "key-file") != 0) {
+#line 3382 "contacts-utils.c"
+                               GeeArrayList* _tmp12_;
+                               FolksPersona* _tmp13_;
+#line 353 "../src/contacts-utils.vala"
+                               _tmp12_ = persona_list;
+#line 353 "../src/contacts-utils.vala"
+                               _tmp13_ = persona;
+#line 353 "../src/contacts-utils.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _tmp12_, _tmp13_);
+#line 3391 "contacts-utils.c"
+                       }
+#line 351 "../src/contacts-utils.vala"
+                       _g_object_unref0 (persona);
+#line 3395 "contacts-utils.c"
+               }
+#line 351 "../src/contacts-utils.vala"
+               _g_object_unref0 (_persona_it);
+#line 3399 "contacts-utils.c"
+       }
+#line 355 "../src/contacts-utils.vala"
+       _tmp14_ = persona_list;
+#line 355 "../src/contacts-utils.vala"
+       _tmp15_ = compare_persona_by_store;
+#line 355 "../src/contacts-utils.vala"
+       _tmp15__target = compare_persona_by_store_target;
+#line 355 "../src/contacts-utils.vala"
+       _tmp15__target_destroy_notify = compare_persona_by_store_target_destroy_notify;
+#line 355 "../src/contacts-utils.vala"
+       compare_persona_by_store = NULL;
+#line 355 "../src/contacts-utils.vala"
+       compare_persona_by_store_target = NULL;
+#line 355 "../src/contacts-utils.vala"
+       compare_persona_by_store_target_destroy_notify = NULL;
+#line 355 "../src/contacts-utils.vala"
+       gee_list_sort ((GeeList*) _tmp14_, _tmp15_, _tmp15__target, _tmp15__target_destroy_notify);
+#line 356 "../src/contacts-utils.vala"
+       result = (GeeList*) persona_list;
+#line 356 "../src/contacts-utils.vala"
+       (compare_persona_by_store_target_destroy_notify == NULL) ? NULL : 
(compare_persona_by_store_target_destroy_notify (compare_persona_by_store_target), NULL);
+#line 356 "../src/contacts-utils.vala"
+       compare_persona_by_store = NULL;
+#line 356 "../src/contacts-utils.vala"
+       compare_persona_by_store_target = NULL;
+#line 356 "../src/contacts-utils.vala"
+       compare_persona_by_store_target_destroy_notify = NULL;
+#line 356 "../src/contacts-utils.vala"
+       return result;
+#line 3429 "contacts-utils.c"
+}
+
+FolksPersona*
+contacts_utils_find_primary_persona (FolksIndividual* individual)
+{
+       FolksPersona* result = NULL;
+#line 359 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 3438 "contacts-utils.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 360 "../src/contacts-utils.vala"
+               _tmp0_ = folks_individual_get_personas (individual);
+#line 360 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 360 "../src/contacts-utils.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 360 "../src/contacts-utils.vala"
+               _p_it = _tmp2_;
+#line 360 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 3454 "contacts-utils.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+                       FolksPersona* _tmp6_;
+                       FolksPersonaStore* _tmp7_;
+                       FolksPersonaStore* _tmp8_;
+                       gboolean _tmp9_;
+                       gboolean _tmp10_;
+#line 360 "../src/contacts-utils.vala"
+                       _tmp3_ = _p_it;
+#line 360 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 360 "../src/contacts-utils.vala"
+                               break;
+#line 3470 "contacts-utils.c"
+                       }
+#line 360 "../src/contacts-utils.vala"
+                       _tmp4_ = _p_it;
+#line 360 "../src/contacts-utils.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 360 "../src/contacts-utils.vala"
+                       p = (FolksPersona*) _tmp5_;
+#line 361 "../src/contacts-utils.vala"
+                       _tmp6_ = p;
+#line 361 "../src/contacts-utils.vala"
+                       _tmp7_ = folks_persona_get_store (_tmp6_);
+#line 361 "../src/contacts-utils.vala"
+                       _tmp8_ = _tmp7_;
+#line 361 "../src/contacts-utils.vala"
+                       _tmp9_ = folks_persona_store_get_is_primary_store (_tmp8_);
+#line 361 "../src/contacts-utils.vala"
+                       _tmp10_ = _tmp9_;
+#line 361 "../src/contacts-utils.vala"
+                       if (_tmp10_) {
+#line 362 "../src/contacts-utils.vala"
+                               result = p;
+#line 362 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_p_it);
+#line 362 "../src/contacts-utils.vala"
+                               return result;
+#line 3496 "contacts-utils.c"
+                       }
+#line 360 "../src/contacts-utils.vala"
+                       _g_object_unref0 (p);
+#line 3500 "contacts-utils.c"
+               }
+#line 360 "../src/contacts-utils.vala"
+               _g_object_unref0 (_p_it);
+#line 3504 "contacts-utils.c"
+       }
+#line 364 "../src/contacts-utils.vala"
+       result = NULL;
+#line 364 "../src/contacts-utils.vala"
+       return result;
+#line 3510 "contacts-utils.c"
+}
+
+FolksPersona*
+contacts_utils_find_persona_from_uid (FolksIndividual* individual,
+                                      const gchar* uid)
+{
+       FolksPersona* result = NULL;
+#line 367 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 367 "../src/contacts-utils.vala"
+       g_return_val_if_fail (uid != NULL, NULL);
+#line 3522 "contacts-utils.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 368 "../src/contacts-utils.vala"
+               _tmp0_ = folks_individual_get_personas (individual);
+#line 368 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 368 "../src/contacts-utils.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 368 "../src/contacts-utils.vala"
+               _p_it = _tmp2_;
+#line 368 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 3538 "contacts-utils.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+                       FolksPersona* _tmp6_;
+                       const gchar* _tmp7_;
+                       const gchar* _tmp8_;
+#line 368 "../src/contacts-utils.vala"
+                       _tmp3_ = _p_it;
+#line 368 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 368 "../src/contacts-utils.vala"
+                               break;
+#line 3552 "contacts-utils.c"
+                       }
+#line 368 "../src/contacts-utils.vala"
+                       _tmp4_ = _p_it;
+#line 368 "../src/contacts-utils.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 368 "../src/contacts-utils.vala"
+                       p = (FolksPersona*) _tmp5_;
+#line 369 "../src/contacts-utils.vala"
+                       _tmp6_ = p;
+#line 369 "../src/contacts-utils.vala"
+                       _tmp7_ = folks_persona_get_uid (_tmp6_);
+#line 369 "../src/contacts-utils.vala"
+                       _tmp8_ = _tmp7_;
+#line 369 "../src/contacts-utils.vala"
+                       if (g_strcmp0 (_tmp8_, uid) == 0) {
+#line 370 "../src/contacts-utils.vala"
+                               result = p;
+#line 370 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_p_it);
+#line 370 "../src/contacts-utils.vala"
+                               return result;
+#line 3574 "contacts-utils.c"
+                       }
+#line 368 "../src/contacts-utils.vala"
+                       _g_object_unref0 (p);
+#line 3578 "contacts-utils.c"
+               }
+#line 368 "../src/contacts-utils.vala"
+               _g_object_unref0 (_p_it);
+#line 3582 "contacts-utils.c"
+       }
+#line 372 "../src/contacts-utils.vala"
+       result = NULL;
+#line 372 "../src/contacts-utils.vala"
+       return result;
+#line 3588 "contacts-utils.c"
+}
+
+gchar*
+contacts_utils_format_persona_stores (FolksIndividual* individual)
+{
+       gchar* stores = NULL;
+       gchar* _tmp0_;
+       gboolean first = FALSE;
+       gchar* result = NULL;
+#line 375 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 376 "../src/contacts-utils.vala"
+       _tmp0_ = g_strdup ("");
+#line 376 "../src/contacts-utils.vala"
+       stores = _tmp0_;
+#line 377 "../src/contacts-utils.vala"
+       first = TRUE;
+#line 3606 "contacts-utils.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeIterator* _tmp3_;
+#line 378 "../src/contacts-utils.vala"
+               _tmp1_ = folks_individual_get_personas (individual);
+#line 378 "../src/contacts-utils.vala"
+               _tmp2_ = _tmp1_;
+#line 378 "../src/contacts-utils.vala"
+               _tmp3_ = gee_iterable_iterator ((GeeIterable*) _tmp2_);
+#line 378 "../src/contacts-utils.vala"
+               _p_it = _tmp3_;
+#line 378 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 3622 "contacts-utils.c"
+                       GeeIterator* _tmp4_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp5_;
+                       gpointer _tmp6_;
+                       const gchar* _tmp9_;
+                       FolksPersona* _tmp10_;
+                       gchar* _tmp11_;
+                       gchar* _tmp12_;
+                       gchar* _tmp13_;
+#line 378 "../src/contacts-utils.vala"
+                       _tmp4_ = _p_it;
+#line 378 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp4_)) {
+#line 378 "../src/contacts-utils.vala"
+                               break;
+#line 3638 "contacts-utils.c"
+                       }
+#line 378 "../src/contacts-utils.vala"
+                       _tmp5_ = _p_it;
+#line 378 "../src/contacts-utils.vala"
+                       _tmp6_ = gee_iterator_get (_tmp5_);
+#line 378 "../src/contacts-utils.vala"
+                       p = (FolksPersona*) _tmp6_;
+#line 379 "../src/contacts-utils.vala"
+                       if (!first) {
+#line 3648 "contacts-utils.c"
+                               const gchar* _tmp7_;
+                               gchar* _tmp8_;
+#line 380 "../src/contacts-utils.vala"
+                               _tmp7_ = stores;
+#line 380 "../src/contacts-utils.vala"
+                               _tmp8_ = g_strconcat (_tmp7_, ", ", NULL);
+#line 380 "../src/contacts-utils.vala"
+                               _g_free0 (stores);
+#line 380 "../src/contacts-utils.vala"
+                               stores = _tmp8_;
+#line 3659 "contacts-utils.c"
+                       }
+#line 381 "../src/contacts-utils.vala"
+                       _tmp9_ = stores;
+#line 381 "../src/contacts-utils.vala"
+                       _tmp10_ = p;
+#line 381 "../src/contacts-utils.vala"
+                       _tmp11_ = contacts_utils_format_persona_store_name_for_contact (_tmp10_);
+#line 381 "../src/contacts-utils.vala"
+                       _tmp12_ = _tmp11_;
+#line 381 "../src/contacts-utils.vala"
+                       _tmp13_ = g_strconcat (_tmp9_, _tmp12_, NULL);
+#line 381 "../src/contacts-utils.vala"
+                       _g_free0 (stores);
+#line 381 "../src/contacts-utils.vala"
+                       stores = _tmp13_;
+#line 381 "../src/contacts-utils.vala"
+                       _g_free0 (_tmp12_);
+#line 382 "../src/contacts-utils.vala"
+                       first = FALSE;
+#line 378 "../src/contacts-utils.vala"
+                       _g_object_unref0 (p);
+#line 3681 "contacts-utils.c"
+               }
+#line 378 "../src/contacts-utils.vala"
+               _g_object_unref0 (_p_it);
+#line 3685 "contacts-utils.c"
+       }
+#line 384 "../src/contacts-utils.vala"
+       result = stores;
+#line 384 "../src/contacts-utils.vala"
+       return result;
+#line 3691 "contacts-utils.c"
+}
+
+gchar*
+contacts_utils_format_persona_store_name (FolksPersonaStore* store)
+{
+       const gchar* _tmp0_;
+       const gchar* _tmp1_;
+       const gchar* _tmp6_;
+       const gchar* _tmp7_;
+       gchar* _tmp8_;
+       gchar* result = NULL;
+#line 387 "../src/contacts-utils.vala"
+       g_return_val_if_fail (store != NULL, NULL);
+#line 388 "../src/contacts-utils.vala"
+       _tmp0_ = folks_persona_store_get_type_id (store);
+#line 388 "../src/contacts-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 388 "../src/contacts-utils.vala"
+       if (g_strcmp0 (_tmp1_, "eds") == 0) {
+#line 3711 "contacts-utils.c"
+               gchar* eds_name = NULL;
+               const gchar* _tmp2_;
+               const gchar* _tmp3_;
+               gchar* _tmp4_;
+               const gchar* _tmp5_;
+#line 389 "../src/contacts-utils.vala"
+               _tmp2_ = folks_persona_store_get_id (store);
+#line 389 "../src/contacts-utils.vala"
+               _tmp3_ = _tmp2_;
+#line 389 "../src/contacts-utils.vala"
+               _tmp4_ = contacts_lookup_esource_name_by_uid (_tmp3_);
+#line 389 "../src/contacts-utils.vala"
+               eds_name = _tmp4_;
+#line 390 "../src/contacts-utils.vala"
+               _tmp5_ = eds_name;
+#line 390 "../src/contacts-utils.vala"
+               if (_tmp5_ != NULL) {
+#line 391 "../src/contacts-utils.vala"
+                       result = eds_name;
+#line 391 "../src/contacts-utils.vala"
+                       return result;
+#line 3733 "contacts-utils.c"
+               }
+#line 388 "../src/contacts-utils.vala"
+               _g_free0 (eds_name);
+#line 3737 "contacts-utils.c"
+       }
+#line 400 "../src/contacts-utils.vala"
+       _tmp6_ = folks_persona_store_get_display_name (store);
+#line 400 "../src/contacts-utils.vala"
+       _tmp7_ = _tmp6_;
+#line 400 "../src/contacts-utils.vala"
+       _tmp8_ = g_strdup (_tmp7_);
+#line 400 "../src/contacts-utils.vala"
+       result = _tmp8_;
+#line 400 "../src/contacts-utils.vala"
+       return result;
+#line 3749 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_has_mainable_persona (FolksIndividual* individual)
+{
+       gboolean result = FALSE;
+#line 405 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, FALSE);
+#line 3758 "contacts-utils.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 406 "../src/contacts-utils.vala"
+               _tmp0_ = folks_individual_get_personas (individual);
+#line 406 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 406 "../src/contacts-utils.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 406 "../src/contacts-utils.vala"
+               _p_it = _tmp2_;
+#line 406 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 3774 "contacts-utils.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+                       gboolean _tmp6_ = FALSE;
+                       FolksPersona* _tmp7_;
+                       FolksPersonaStore* _tmp8_;
+                       FolksPersonaStore* _tmp9_;
+                       const gchar* _tmp10_;
+                       const gchar* _tmp11_;
+#line 406 "../src/contacts-utils.vala"
+                       _tmp3_ = _p_it;
+#line 406 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 406 "../src/contacts-utils.vala"
+                               break;
+#line 3791 "contacts-utils.c"
+                       }
+#line 406 "../src/contacts-utils.vala"
+                       _tmp4_ = _p_it;
+#line 406 "../src/contacts-utils.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 406 "../src/contacts-utils.vala"
+                       p = (FolksPersona*) _tmp5_;
+#line 407 "../src/contacts-utils.vala"
+                       _tmp7_ = p;
+#line 407 "../src/contacts-utils.vala"
+                       _tmp8_ = folks_persona_get_store (_tmp7_);
+#line 407 "../src/contacts-utils.vala"
+                       _tmp9_ = _tmp8_;
+#line 407 "../src/contacts-utils.vala"
+                       _tmp10_ = folks_persona_store_get_type_id (_tmp9_);
+#line 407 "../src/contacts-utils.vala"
+                       _tmp11_ = _tmp10_;
+#line 407 "../src/contacts-utils.vala"
+                       if (g_strcmp0 (_tmp11_, "eds") == 0) {
+#line 3811 "contacts-utils.c"
+                               FolksPersona* _tmp12_;
+#line 408 "../src/contacts-utils.vala"
+                               _tmp12_ = p;
+#line 408 "../src/contacts-utils.vala"
+                               _tmp6_ = !contacts_utils_persona_is_google_other (_tmp12_);
+#line 3817 "contacts-utils.c"
+                       } else {
+#line 407 "../src/contacts-utils.vala"
+                               _tmp6_ = FALSE;
+#line 3821 "contacts-utils.c"
+                       }
+#line 407 "../src/contacts-utils.vala"
+                       if (_tmp6_) {
+#line 409 "../src/contacts-utils.vala"
+                               result = TRUE;
+#line 409 "../src/contacts-utils.vala"
+                               _g_object_unref0 (p);
+#line 409 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_p_it);
+#line 409 "../src/contacts-utils.vala"
+                               return result;
+#line 3833 "contacts-utils.c"
+                       }
+#line 406 "../src/contacts-utils.vala"
+                       _g_object_unref0 (p);
+#line 3837 "contacts-utils.c"
+               }
+#line 406 "../src/contacts-utils.vala"
+               _g_object_unref0 (_p_it);
+#line 3841 "contacts-utils.c"
+       }
+#line 411 "../src/contacts-utils.vala"
+       result = FALSE;
+#line 411 "../src/contacts-utils.vala"
+       return result;
+#line 3847 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_non_linkable (FolksIndividual* individual)
+{
+       gboolean all_unlinkable = FALSE;
+       gboolean result = FALSE;
+#line 416 "../src/contacts-utils.vala"
+       g_return_val_if_fail (individual != NULL, FALSE);
+#line 417 "../src/contacts-utils.vala"
+       all_unlinkable = TRUE;
+#line 3859 "contacts-utils.c"
+       {
+               GeeIterator* _p_it = NULL;
+               GeeSet* _tmp0_;
+               GeeSet* _tmp1_;
+               GeeIterator* _tmp2_;
+#line 419 "../src/contacts-utils.vala"
+               _tmp0_ = folks_individual_get_personas (individual);
+#line 419 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp0_;
+#line 419 "../src/contacts-utils.vala"
+               _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 419 "../src/contacts-utils.vala"
+               _p_it = _tmp2_;
+#line 419 "../src/contacts-utils.vala"
+               while (TRUE) {
+#line 3875 "contacts-utils.c"
+                       GeeIterator* _tmp3_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp4_;
+                       gpointer _tmp5_;
+                       gboolean _tmp6_ = FALSE;
+                       FolksPersona* _tmp7_;
+#line 419 "../src/contacts-utils.vala"
+                       _tmp3_ = _p_it;
+#line 419 "../src/contacts-utils.vala"
+                       if (!gee_iterator_next (_tmp3_)) {
+#line 419 "../src/contacts-utils.vala"
+                               break;
+#line 3888 "contacts-utils.c"
+                       }
+#line 419 "../src/contacts-utils.vala"
+                       _tmp4_ = _p_it;
+#line 419 "../src/contacts-utils.vala"
+                       _tmp5_ = gee_iterator_get (_tmp4_);
+#line 419 "../src/contacts-utils.vala"
+                       p = (FolksPersona*) _tmp5_;
+#line 420 "../src/contacts-utils.vala"
+                       _tmp7_ = p;
+#line 420 "../src/contacts-utils.vala"
+                       if (!contacts_utils_persona_is_google_other (_tmp7_)) {
+#line 420 "../src/contacts-utils.vala"
+                               _tmp6_ = TRUE;
+#line 3902 "contacts-utils.c"
+                       } else {
+                               FolksPersona* _tmp8_;
+#line 421 "../src/contacts-utils.vala"
+                               _tmp8_ = p;
+#line 421 "../src/contacts-utils.vala"
+                               _tmp6_ = contacts_utils_persona_is_google_profile (_tmp8_);
+#line 3909 "contacts-utils.c"
+                       }
+#line 420 "../src/contacts-utils.vala"
+                       if (_tmp6_) {
+#line 422 "../src/contacts-utils.vala"
+                               all_unlinkable = FALSE;
+#line 3915 "contacts-utils.c"
+                       }
+#line 419 "../src/contacts-utils.vala"
+                       _g_object_unref0 (p);
+#line 3919 "contacts-utils.c"
+               }
+#line 419 "../src/contacts-utils.vala"
+               _g_object_unref0 (_p_it);
+#line 3923 "contacts-utils.c"
+       }
+#line 425 "../src/contacts-utils.vala"
+       result = all_unlinkable;
+#line 425 "../src/contacts-utils.vala"
+       return result;
+#line 3929 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_persona_is_google (FolksPersona* persona)
+{
+       gboolean _tmp0_ = FALSE;
+       FolksPersonaStore* _tmp1_;
+       FolksPersonaStore* _tmp2_;
+       const gchar* _tmp3_;
+       const gchar* _tmp4_;
+       gboolean result = FALSE;
+#line 428 "../src/contacts-utils.vala"
+       g_return_val_if_fail (persona != NULL, FALSE);
+#line 429 "../src/contacts-utils.vala"
+       _tmp1_ = folks_persona_get_store (persona);
+#line 429 "../src/contacts-utils.vala"
+       _tmp2_ = _tmp1_;
+#line 429 "../src/contacts-utils.vala"
+       _tmp3_ = folks_persona_store_get_type_id (_tmp2_);
+#line 429 "../src/contacts-utils.vala"
+       _tmp4_ = _tmp3_;
+#line 429 "../src/contacts-utils.vala"
+       if (g_strcmp0 (_tmp4_, "eds") == 0) {
+#line 3953 "contacts-utils.c"
+               FolksPersonaStore* _tmp5_;
+               FolksPersonaStore* _tmp6_;
+               const gchar* _tmp7_;
+               const gchar* _tmp8_;
+#line 429 "../src/contacts-utils.vala"
+               _tmp5_ = folks_persona_get_store (persona);
+#line 429 "../src/contacts-utils.vala"
+               _tmp6_ = _tmp5_;
+#line 429 "../src/contacts-utils.vala"
+               _tmp7_ = folks_persona_store_get_id (_tmp6_);
+#line 429 "../src/contacts-utils.vala"
+               _tmp8_ = _tmp7_;
+#line 429 "../src/contacts-utils.vala"
+               _tmp0_ = contacts_esource_uid_is_google (_tmp8_);
+#line 3968 "contacts-utils.c"
+       } else {
+#line 429 "../src/contacts-utils.vala"
+               _tmp0_ = FALSE;
+#line 3972 "contacts-utils.c"
+       }
+#line 429 "../src/contacts-utils.vala"
+       result = _tmp0_;
+#line 429 "../src/contacts-utils.vala"
+       return result;
+#line 3978 "contacts-utils.c"
+}
+
+/**
+   * Return true only for personas which are in a Google address book, but which
+   * are not in the user's "My Contacts" group in the address book.
+   */
+gboolean
+contacts_utils_persona_is_google_other (FolksPersona* persona)
+{
+       EdsfPersona* p = NULL;
+       EdsfPersona* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       EdsfPersona* _tmp2_;
+       gboolean result = FALSE;
+#line 436 "../src/contacts-utils.vala"
+       g_return_val_if_fail (persona != NULL, FALSE);
+#line 437 "../src/contacts-utils.vala"
+       if (!contacts_utils_persona_is_google (persona)) {
+#line 438 "../src/contacts-utils.vala"
+               result = FALSE;
+#line 438 "../src/contacts-utils.vala"
+               return result;
+#line 4001 "contacts-utils.c"
+       }
+#line 440 "../src/contacts-utils.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, EDSF_TYPE_PERSONA) ? ((EdsfPersona*) 
persona) : NULL);
+#line 440 "../src/contacts-utils.vala"
+       p = _tmp0_;
+#line 441 "../src/contacts-utils.vala"
+       _tmp2_ = p;
+#line 441 "../src/contacts-utils.vala"
+       if (_tmp2_ != NULL) {
+#line 4011 "contacts-utils.c"
+               EdsfPersona* _tmp3_;
+               gboolean _tmp4_;
+               gboolean _tmp5_;
+#line 441 "../src/contacts-utils.vala"
+               _tmp3_ = p;
+#line 441 "../src/contacts-utils.vala"
+               _tmp4_ = edsf_persona_get_in_google_personal_group (_tmp3_);
+#line 441 "../src/contacts-utils.vala"
+               _tmp5_ = _tmp4_;
+#line 441 "../src/contacts-utils.vala"
+               _tmp1_ = !_tmp5_;
+#line 4023 "contacts-utils.c"
+       } else {
+#line 441 "../src/contacts-utils.vala"
+               _tmp1_ = FALSE;
+#line 4027 "contacts-utils.c"
+       }
+#line 441 "../src/contacts-utils.vala"
+       result = _tmp1_;
+#line 441 "../src/contacts-utils.vala"
+       _g_object_unref0 (p);
+#line 441 "../src/contacts-utils.vala"
+       return result;
+#line 4035 "contacts-utils.c"
+}
+
+static inline GRegex*
+_thread_safe_regex_init (GRegex** re,
+                         const gchar * pattern,
+                         GRegexCompileFlags compile_flags)
+{
+#line 451 "../src/contacts-utils.vala"
+       if (g_once_init_enter ((volatile gsize*) re)) {
+#line 451 "../src/contacts-utils.vala"
+               GRegex* val = g_regex_new (pattern, compile_flags, 0, NULL);
+#line 451 "../src/contacts-utils.vala"
+               g_once_init_leave ((volatile gsize*) re, (gsize) val);
+#line 4049 "contacts-utils.c"
+       }
+#line 451 "../src/contacts-utils.vala"
+       return *re;
+#line 4053 "contacts-utils.c"
+}
+
+gboolean
+contacts_utils_persona_is_google_profile (FolksPersona* persona)
+{
+       FolksUrlDetails* u = NULL;
+       FolksUrlDetails* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       FolksUrlDetails* _tmp2_;
+       gboolean result = FALSE;
+#line 444 "../src/contacts-utils.vala"
+       g_return_val_if_fail (persona != NULL, FALSE);
+#line 445 "../src/contacts-utils.vala"
+       if (!contacts_utils_persona_is_google_other (persona)) {
+#line 446 "../src/contacts-utils.vala"
+               result = FALSE;
+#line 446 "../src/contacts-utils.vala"
+               return result;
+#line 4072 "contacts-utils.c"
+       }
+#line 448 "../src/contacts-utils.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_URL_DETAILS) ? 
((FolksUrlDetails*) persona) : NULL);
+#line 448 "../src/contacts-utils.vala"
+       u = _tmp0_;
+#line 449 "../src/contacts-utils.vala"
+       _tmp2_ = u;
+#line 449 "../src/contacts-utils.vala"
+       if (_tmp2_ != NULL) {
+#line 4082 "contacts-utils.c"
+               FolksUrlDetails* _tmp3_;
+               GeeSet* _tmp4_;
+               GeeSet* _tmp5_;
+               gint _tmp6_;
+               gint _tmp7_;
+#line 449 "../src/contacts-utils.vala"
+               _tmp3_ = u;
+#line 449 "../src/contacts-utils.vala"
+               _tmp4_ = folks_url_details_get_urls (_tmp3_);
+#line 449 "../src/contacts-utils.vala"
+               _tmp5_ = _tmp4_;
+#line 449 "../src/contacts-utils.vala"
+               _tmp6_ = gee_collection_get_size ((GeeCollection*) _tmp5_);
+#line 449 "../src/contacts-utils.vala"
+               _tmp7_ = _tmp6_;
+#line 449 "../src/contacts-utils.vala"
+               _tmp1_ = _tmp7_ == 1;
+#line 4100 "contacts-utils.c"
+       } else {
+#line 449 "../src/contacts-utils.vala"
+               _tmp1_ = FALSE;
+#line 4104 "contacts-utils.c"
+       }
+#line 449 "../src/contacts-utils.vala"
+       if (_tmp1_) {
+#line 4108 "contacts-utils.c"
+               {
+                       GeeIterator* _url_it = NULL;
+                       FolksUrlDetails* _tmp8_;
+                       GeeSet* _tmp9_;
+                       GeeSet* _tmp10_;
+                       GeeIterator* _tmp11_;
+#line 450 "../src/contacts-utils.vala"
+                       _tmp8_ = u;
+#line 450 "../src/contacts-utils.vala"
+                       _tmp9_ = folks_url_details_get_urls (_tmp8_);
+#line 450 "../src/contacts-utils.vala"
+                       _tmp10_ = _tmp9_;
+#line 450 "../src/contacts-utils.vala"
+                       _tmp11_ = gee_iterable_iterator ((GeeIterable*) _tmp10_);
+#line 450 "../src/contacts-utils.vala"
+                       _url_it = _tmp11_;
+#line 450 "../src/contacts-utils.vala"
+                       while (TRUE) {
+#line 4127 "contacts-utils.c"
+                               GeeIterator* _tmp12_;
+                               FolksUrlFieldDetails* url = NULL;
+                               GeeIterator* _tmp13_;
+                               gpointer _tmp14_;
+                               FolksUrlFieldDetails* _tmp15_;
+                               gconstpointer _tmp16_;
+                               const gchar* _tmp17_;
+#line 450 "../src/contacts-utils.vala"
+                               _tmp12_ = _url_it;
+#line 450 "../src/contacts-utils.vala"
+                               if (!gee_iterator_next (_tmp12_)) {
+#line 450 "../src/contacts-utils.vala"
+                                       break;
+#line 4141 "contacts-utils.c"
+                               }
+#line 450 "../src/contacts-utils.vala"
+                               _tmp13_ = _url_it;
+#line 450 "../src/contacts-utils.vala"
+                               _tmp14_ = gee_iterator_get (_tmp13_);
+#line 450 "../src/contacts-utils.vala"
+                               url = (FolksUrlFieldDetails*) _tmp14_;
+#line 451 "../src/contacts-utils.vala"
+                               _tmp15_ = url;
+#line 451 "../src/contacts-utils.vala"
+                               _tmp16_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _tmp15_);
+#line 451 "../src/contacts-utils.vala"
+                               _tmp17_ = _tmp16_;
+#line 451 "../src/contacts-utils.vala"
+                               if (g_regex_match (_thread_safe_regex_init (&_tmp_regex_0, 
"https?:\\/\\/www.google.com\\/profiles\\/[0-9]+$", 0), (const gchar*) _tmp17_, 0, NULL)) {
+#line 452 "../src/contacts-utils.vala"
+                                       result = TRUE;
+#line 452 "../src/contacts-utils.vala"
+                                       _g_object_unref0 (url);
+#line 452 "../src/contacts-utils.vala"
+                                       _g_object_unref0 (_url_it);
+#line 452 "../src/contacts-utils.vala"
+                                       _g_object_unref0 (u);
+#line 452 "../src/contacts-utils.vala"
+                                       return result;
+#line 4167 "contacts-utils.c"
+                               }
+#line 450 "../src/contacts-utils.vala"
+                               _g_object_unref0 (url);
+#line 4171 "contacts-utils.c"
+                       }
+#line 450 "../src/contacts-utils.vala"
+                       _g_object_unref0 (_url_it);
+#line 4175 "contacts-utils.c"
+               }
+       }
+#line 455 "../src/contacts-utils.vala"
+       result = FALSE;
+#line 455 "../src/contacts-utils.vala"
+       _g_object_unref0 (u);
+#line 455 "../src/contacts-utils.vala"
+       return result;
+#line 4184 "contacts-utils.c"
+}
+
+gchar*
+contacts_utils_format_persona_store_name_for_contact (FolksPersona* persona)
+{
+       FolksPersonaStore* store = NULL;
+       FolksPersonaStore* _tmp0_;
+       FolksPersonaStore* _tmp1_;
+       FolksPersonaStore* _tmp2_;
+       FolksPersonaStore* _tmp3_;
+       const gchar* _tmp4_;
+       const gchar* _tmp5_;
+       FolksPersonaStore* _tmp13_;
+       const gchar* _tmp14_;
+       const gchar* _tmp15_;
+       gchar* _tmp16_;
+       gchar* result = NULL;
+#line 458 "../src/contacts-utils.vala"
+       g_return_val_if_fail (persona != NULL, NULL);
+#line 459 "../src/contacts-utils.vala"
+       _tmp0_ = folks_persona_get_store (persona);
+#line 459 "../src/contacts-utils.vala"
+       _tmp1_ = _tmp0_;
+#line 459 "../src/contacts-utils.vala"
+       _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 459 "../src/contacts-utils.vala"
+       store = _tmp2_;
+#line 460 "../src/contacts-utils.vala"
+       _tmp3_ = store;
+#line 460 "../src/contacts-utils.vala"
+       _tmp4_ = folks_persona_store_get_type_id (_tmp3_);
+#line 460 "../src/contacts-utils.vala"
+       _tmp5_ = _tmp4_;
+#line 460 "../src/contacts-utils.vala"
+       if (g_strcmp0 (_tmp5_, "eds") == 0) {
+#line 4220 "contacts-utils.c"
+               gchar* eds_name = NULL;
+               FolksPersonaStore* _tmp8_;
+               const gchar* _tmp9_;
+               const gchar* _tmp10_;
+               gchar* _tmp11_;
+               const gchar* _tmp12_;
+#line 461 "../src/contacts-utils.vala"
+               if (contacts_utils_persona_is_google_profile (persona)) {
+#line 4229 "contacts-utils.c"
+                       gchar* _tmp6_;
+#line 462 "../src/contacts-utils.vala"
+                       _tmp6_ = g_strdup (_ ("Google Circles"));
+#line 462 "../src/contacts-utils.vala"
+                       result = _tmp6_;
+#line 462 "../src/contacts-utils.vala"
+                       _g_object_unref0 (store);
+#line 462 "../src/contacts-utils.vala"
+                       return result;
+#line 4239 "contacts-utils.c"
+               } else {
+#line 463 "../src/contacts-utils.vala"
+                       if (contacts_utils_persona_is_google_other (persona)) {
+#line 4243 "contacts-utils.c"
+                               gchar* _tmp7_;
+#line 464 "../src/contacts-utils.vala"
+                               _tmp7_ = g_strdup (_ ("Google"));
+#line 464 "../src/contacts-utils.vala"
+                               result = _tmp7_;
+#line 464 "../src/contacts-utils.vala"
+                               _g_object_unref0 (store);
+#line 464 "../src/contacts-utils.vala"
+                               return result;
+#line 4253 "contacts-utils.c"
+                       }
+               }
+#line 466 "../src/contacts-utils.vala"
+               _tmp8_ = store;
+#line 466 "../src/contacts-utils.vala"
+               _tmp9_ = folks_persona_store_get_id (_tmp8_);
+#line 466 "../src/contacts-utils.vala"
+               _tmp10_ = _tmp9_;
+#line 466 "../src/contacts-utils.vala"
+               _tmp11_ = contacts_lookup_esource_name_by_uid_for_contact (_tmp10_);
+#line 466 "../src/contacts-utils.vala"
+               eds_name = _tmp11_;
+#line 467 "../src/contacts-utils.vala"
+               _tmp12_ = eds_name;
+#line 467 "../src/contacts-utils.vala"
+               if (_tmp12_ != NULL) {
+#line 468 "../src/contacts-utils.vala"
+                       result = eds_name;
+#line 468 "../src/contacts-utils.vala"
+                       _g_object_unref0 (store);
+#line 468 "../src/contacts-utils.vala"
+                       return result;
+#line 4276 "contacts-utils.c"
+               }
+#line 460 "../src/contacts-utils.vala"
+               _g_free0 (eds_name);
+#line 4280 "contacts-utils.c"
+       }
+#line 477 "../src/contacts-utils.vala"
+       _tmp13_ = store;
+#line 477 "../src/contacts-utils.vala"
+       _tmp14_ = folks_persona_store_get_display_name (_tmp13_);
+#line 477 "../src/contacts-utils.vala"
+       _tmp15_ = _tmp14_;
+#line 477 "../src/contacts-utils.vala"
+       _tmp16_ = g_strdup (_tmp15_);
+#line 477 "../src/contacts-utils.vala"
+       result = _tmp16_;
+#line 477 "../src/contacts-utils.vala"
+       _g_object_unref0 (store);
+#line 477 "../src/contacts-utils.vala"
+       return result;
+#line 4296 "contacts-utils.c"
+}
+
+static void
+contacts_utils_set_individual_property_data_free (gpointer _data)
+{
+       ContactsUtilsSetIndividualPropertyData* _data_;
+       _data_ = _data;
+       _g_object_unref0 (_data_->individual);
+       _g_free0 (_data_->property_name);
+       G_IS_VALUE (&_data_->value) ? (g_value_unset (&_data_->value), NULL) : NULL;
+       g_slice_free (ContactsUtilsSetIndividualPropertyData, _data_);
+}
+
+void
+contacts_utils_set_individual_property (FolksIndividual* individual,
+                                        const gchar* property_name,
+                                        GValue* value,
+                                        GAsyncReadyCallback _callback_,
+                                        gpointer _user_data_)
+{
+       ContactsUtilsSetIndividualPropertyData* _data_;
+       FolksIndividual* _tmp0_;
+       gchar* _tmp1_;
+       GValue _tmp2_;
+       GValue _tmp3_;
+       GValue _tmp4_ = {0};
+       _data_ = g_slice_new0 (ContactsUtilsSetIndividualPropertyData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_utils_set_individual_property_data_free);
+       _tmp0_ = _g_object_ref0 (individual);
+       _g_object_unref0 (_data_->individual);
+       _data_->individual = _tmp0_;
+       _tmp1_ = g_strdup (property_name);
+       _g_free0 (_data_->property_name);
+       _data_->property_name = _tmp1_;
+       _tmp2_ = *value;
+       _tmp3_ = _tmp2_;
+       if (G_IS_VALUE (&_tmp3_)) {
+               g_value_init (&_tmp4_, G_VALUE_TYPE (&_tmp3_));
+               g_value_copy (&_tmp3_, &_tmp4_);
+       } else {
+               _tmp4_ = _tmp3_;
+       }
+       G_IS_VALUE (&_data_->value) ? (g_value_unset (&_data_->value), NULL) : NULL;
+       _data_->value = _tmp4_;
+       contacts_utils_set_individual_property_co (_data_);
+}
+
+void
+contacts_utils_set_individual_property_finish (GAsyncResult* _res_,
+                                               GError** error)
+{
+       ContactsUtilsSetIndividualPropertyData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+       if (NULL == _data_) {
+               return;
+       }
+}
+
+static gboolean
+_vala_string_array_contains (gchar* * stack,
+                             gint stack_length,
+                             const gchar* needle)
+{
+       gint i;
+#line 486 "../src/contacts-utils.vala"
+       for (i = 0; i < stack_length; i++) {
+#line 486 "../src/contacts-utils.vala"
+               if (g_strcmp0 (stack[i], needle) == 0) {
+#line 486 "../src/contacts-utils.vala"
+                       return TRUE;
+#line 4368 "contacts-utils.c"
+               }
+       }
+#line 486 "../src/contacts-utils.vala"
+       return FALSE;
+#line 4373 "contacts-utils.c"
+}
+
+static void
+contacts_utils_set_individual_property_ready (GObject* source_object,
+                                              GAsyncResult* _res_,
+                                              gpointer _user_data_)
+{
+       ContactsUtilsSetIndividualPropertyData* _data_;
+#line 487 "../src/contacts-utils.vala"
+       _data_ = _user_data_;
+#line 487 "../src/contacts-utils.vala"
+       _data_->_source_object_ = source_object;
+#line 487 "../src/contacts-utils.vala"
+       _data_->_res_ = _res_;
+#line 487 "../src/contacts-utils.vala"
+       contacts_utils_set_individual_property_co (_data_);
+#line 4390 "contacts-utils.c"
+}
+
+static gboolean
+contacts_utils_set_individual_property_co (ContactsUtilsSetIndividualPropertyData* _data_)
+{
+#line 481 "../src/contacts-utils.vala"
+       switch (_data_->_state_) {
+#line 481 "../src/contacts-utils.vala"
+               case 0:
+#line 4400 "contacts-utils.c"
+               goto _state_0;
+#line 481 "../src/contacts-utils.vala"
+               case 1:
+#line 4404 "contacts-utils.c"
+               goto _state_1;
+               default:
+#line 481 "../src/contacts-utils.vala"
+               g_assert_not_reached ();
+#line 4409 "contacts-utils.c"
+       }
+       _state_0:
+#line 484 "../src/contacts-utils.vala"
+       _data_->_tmp0_ = folks_individual_get_personas (_data_->individual);
+#line 484 "../src/contacts-utils.vala"
+       _data_->_tmp1_ = _data_->_tmp0_;
+#line 484 "../src/contacts-utils.vala"
+       _data_->_tmp2_ = 0;
+#line 484 "../src/contacts-utils.vala"
+       _data_->_tmp3_ = gee_collection_to_array ((GeeCollection*) _data_->_tmp1_, &_data_->_tmp2_);
+#line 484 "../src/contacts-utils.vala"
+       _data_->personas_copy = _data_->_tmp3_;
+#line 484 "../src/contacts-utils.vala"
+       _data_->personas_copy_length1 = _data_->_tmp2_;
+#line 484 "../src/contacts-utils.vala"
+       _data_->_personas_copy_size_ = _data_->personas_copy_length1;
+#line 485 "../src/contacts-utils.vala"
+       _data_->_tmp4_ = _data_->personas_copy;
+#line 485 "../src/contacts-utils.vala"
+       _data_->_tmp4__length1 = _data_->personas_copy_length1;
+#line 4430 "contacts-utils.c"
+       {
+#line 485 "../src/contacts-utils.vala"
+               _data_->p_collection_length1 = 0;
+#line 485 "../src/contacts-utils.vala"
+               _data_->_p_collection_size_ = 0;
+#line 485 "../src/contacts-utils.vala"
+               _data_->p_collection = _data_->_tmp4_;
+#line 485 "../src/contacts-utils.vala"
+               _data_->p_collection_length1 = _data_->_tmp4__length1;
+#line 485 "../src/contacts-utils.vala"
+               for (_data_->p_it = 0; _data_->p_it < _data_->p_collection_length1; _data_->p_it = 
_data_->p_it + 1) {
+#line 485 "../src/contacts-utils.vala"
+                       _data_->_tmp5_ = _g_object_ref0 (_data_->p_collection[_data_->p_it]);
+#line 485 "../src/contacts-utils.vala"
+                       _data_->p = _data_->_tmp5_;
+#line 4446 "contacts-utils.c"
+                       {
+#line 486 "../src/contacts-utils.vala"
+                               _data_->_tmp6_ = _data_->p;
+#line 486 "../src/contacts-utils.vala"
+                               _data_->_tmp7_ = folks_persona_get_writeable_properties (_data_->_tmp6_, 
&_data_->_tmp7__length1);
+#line 486 "../src/contacts-utils.vala"
+                               _data_->_tmp8_ = _data_->_tmp7_;
+#line 486 "../src/contacts-utils.vala"
+                               _data_->_tmp8__length1 = _data_->_tmp7__length1;
+#line 486 "../src/contacts-utils.vala"
+                               if (_vala_string_array_contains (_data_->_tmp8_, _data_->_tmp8__length1, 
_data_->property_name)) {
+#line 487 "../src/contacts-utils.vala"
+                                       _data_->_tmp9_ = _data_->p;
+#line 487 "../src/contacts-utils.vala"
+                                       _data_->_tmp10_ = _data_->value;
+#line 487 "../src/contacts-utils.vala"
+                                       _data_->_state_ = 1;
+#line 487 "../src/contacts-utils.vala"
+                                       contacts_utils_set_persona_property (_data_->_tmp9_, 
_data_->property_name, &_data_->_tmp10_, contacts_utils_set_individual_property_ready, _data_);
+#line 487 "../src/contacts-utils.vala"
+                                       return FALSE;
+#line 4468 "contacts-utils.c"
+                                       _state_1:
+#line 487 "../src/contacts-utils.vala"
+                                       contacts_utils_set_persona_property_finish (_data_->_res_, 
&_data_->_inner_error0_);
+#line 487 "../src/contacts-utils.vala"
+                                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 487 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 487 "../src/contacts-utils.vala"
+                                               _g_object_unref0 (_data_->p);
+#line 487 "../src/contacts-utils.vala"
+                                               _data_->personas_copy = (_vala_array_free 
(_data_->personas_copy, _data_->personas_copy_length1, (GDestroyNotify) g_object_unref), NULL);
+#line 487 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 487 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4484 "contacts-utils.c"
+                                       }
+                               }
+#line 485 "../src/contacts-utils.vala"
+                               _g_object_unref0 (_data_->p);
+#line 4489 "contacts-utils.c"
+                       }
+               }
+       }
+#line 481 "../src/contacts-utils.vala"
+       _data_->personas_copy = (_vala_array_free (_data_->personas_copy, _data_->personas_copy_length1, 
(GDestroyNotify) g_object_unref), NULL);
+#line 481 "../src/contacts-utils.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 481 "../src/contacts-utils.vala"
+       if (_data_->_state_ != 0) {
+#line 481 "../src/contacts-utils.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 481 "../src/contacts-utils.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 4503 "contacts-utils.c"
+               }
+       }
+#line 481 "../src/contacts-utils.vala"
+       g_object_unref (_data_->_async_result);
+#line 481 "../src/contacts-utils.vala"
+       return FALSE;
+#line 4510 "contacts-utils.c"
+}
+
+static void
+contacts_utils_set_persona_property_data_free (gpointer _data)
+{
+       ContactsUtilsSetPersonaPropertyData* _data_;
+       _data_ = _data;
+       _g_object_unref0 (_data_->persona);
+       _g_free0 (_data_->property_name);
+       G_IS_VALUE (&_data_->new_value) ? (g_value_unset (&_data_->new_value), NULL) : NULL;
+       g_slice_free (ContactsUtilsSetPersonaPropertyData, _data_);
+}
+
+void
+contacts_utils_set_persona_property (FolksPersona* persona,
+                                     const gchar* property_name,
+                                     GValue* new_value,
+                                     GAsyncReadyCallback _callback_,
+                                     gpointer _user_data_)
+{
+       ContactsUtilsSetPersonaPropertyData* _data_;
+       FolksPersona* _tmp0_;
+       gchar* _tmp1_;
+       GValue _tmp2_;
+       GValue _tmp3_;
+       GValue _tmp4_ = {0};
+       _data_ = g_slice_new0 (ContactsUtilsSetPersonaPropertyData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_utils_set_persona_property_data_free);
+       _tmp0_ = _g_object_ref0 (persona);
+       _g_object_unref0 (_data_->persona);
+       _data_->persona = _tmp0_;
+       _tmp1_ = g_strdup (property_name);
+       _g_free0 (_data_->property_name);
+       _data_->property_name = _tmp1_;
+       _tmp2_ = *new_value;
+       _tmp3_ = _tmp2_;
+       if (G_IS_VALUE (&_tmp3_)) {
+               g_value_init (&_tmp4_, G_VALUE_TYPE (&_tmp3_));
+               g_value_copy (&_tmp3_, &_tmp4_);
+       } else {
+               _tmp4_ = _tmp3_;
+       }
+       G_IS_VALUE (&_data_->new_value) ? (g_value_unset (&_data_->new_value), NULL) : NULL;
+       _data_->new_value = _tmp4_;
+       contacts_utils_set_persona_property_co (_data_);
+}
+
+void
+contacts_utils_set_persona_property_finish (GAsyncResult* _res_,
+                                            GError** error)
+{
+       ContactsUtilsSetPersonaPropertyData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+       if (NULL == _data_) {
+               return;
+       }
+}
+
+static void
+contacts_utils_set_persona_property_ready (GObject* source_object,
+                                           GAsyncResult* _res_,
+                                           gpointer _user_data_)
+{
+       ContactsUtilsSetPersonaPropertyData* _data_;
+#line 499 "../src/contacts-utils.vala"
+       _data_ = _user_data_;
+#line 499 "../src/contacts-utils.vala"
+       _data_->_source_object_ = source_object;
+#line 499 "../src/contacts-utils.vala"
+       _data_->_res_ = _res_;
+#line 499 "../src/contacts-utils.vala"
+       contacts_utils_set_persona_property_co (_data_);
+#line 4584 "contacts-utils.c"
+}
+
+static gboolean
+contacts_utils_set_persona_property_co (ContactsUtilsSetPersonaPropertyData* _data_)
+{
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label0 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label1 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label2 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label3 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label4 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label5 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label6 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label7 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label8 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label9 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label10 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label11 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label12 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label13 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label14 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label15 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label16 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label17 = 0;
+#line 497 "../src/contacts-utils.vala"
+       static GQuark _tmp1_label18 = 0;
+#line 493 "../src/contacts-utils.vala"
+       switch (_data_->_state_) {
+#line 493 "../src/contacts-utils.vala"
+               case 0:
+#line 4632 "contacts-utils.c"
+               goto _state_0;
+#line 493 "../src/contacts-utils.vala"
+               case 1:
+#line 4636 "contacts-utils.c"
+               goto _state_1;
+#line 493 "../src/contacts-utils.vala"
+               case 2:
+#line 4640 "contacts-utils.c"
+               goto _state_2;
+#line 493 "../src/contacts-utils.vala"
+               case 3:
+#line 4644 "contacts-utils.c"
+               goto _state_3;
+#line 493 "../src/contacts-utils.vala"
+               case 4:
+#line 4648 "contacts-utils.c"
+               goto _state_4;
+#line 493 "../src/contacts-utils.vala"
+               case 5:
+#line 4652 "contacts-utils.c"
+               goto _state_5;
+#line 493 "../src/contacts-utils.vala"
+               case 6:
+#line 4656 "contacts-utils.c"
+               goto _state_6;
+#line 493 "../src/contacts-utils.vala"
+               case 7:
+#line 4660 "contacts-utils.c"
+               goto _state_7;
+#line 493 "../src/contacts-utils.vala"
+               case 8:
+#line 4664 "contacts-utils.c"
+               goto _state_8;
+#line 493 "../src/contacts-utils.vala"
+               case 9:
+#line 4668 "contacts-utils.c"
+               goto _state_9;
+#line 493 "../src/contacts-utils.vala"
+               case 10:
+#line 4672 "contacts-utils.c"
+               goto _state_10;
+#line 493 "../src/contacts-utils.vala"
+               case 11:
+#line 4676 "contacts-utils.c"
+               goto _state_11;
+#line 493 "../src/contacts-utils.vala"
+               case 12:
+#line 4680 "contacts-utils.c"
+               goto _state_12;
+#line 493 "../src/contacts-utils.vala"
+               case 13:
+#line 4684 "contacts-utils.c"
+               goto _state_13;
+#line 493 "../src/contacts-utils.vala"
+               case 14:
+#line 4688 "contacts-utils.c"
+               goto _state_14;
+#line 493 "../src/contacts-utils.vala"
+               case 15:
+#line 4692 "contacts-utils.c"
+               goto _state_15;
+#line 493 "../src/contacts-utils.vala"
+               case 16:
+#line 4696 "contacts-utils.c"
+               goto _state_16;
+#line 493 "../src/contacts-utils.vala"
+               case 17:
+#line 4700 "contacts-utils.c"
+               goto _state_17;
+#line 493 "../src/contacts-utils.vala"
+               case 18:
+#line 4704 "contacts-utils.c"
+               goto _state_18;
+#line 493 "../src/contacts-utils.vala"
+               case 19:
+#line 4708 "contacts-utils.c"
+               goto _state_19;
+               default:
+#line 493 "../src/contacts-utils.vala"
+               g_assert_not_reached ();
+#line 4713 "contacts-utils.c"
+       }
+       _state_0:
+#line 497 "../src/contacts-utils.vala"
+       _data_->_tmp2_ = 0U;
+#line 497 "../src/contacts-utils.vala"
+       _data_->_tmp0_ = _data_->property_name;
+#line 497 "../src/contacts-utils.vala"
+       _data_->_tmp2_ = (NULL == _data_->_tmp0_) ? 0 : g_quark_from_string (_data_->_tmp0_);
+#line 497 "../src/contacts-utils.vala"
+       if (_data_->_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = 
g_quark_from_static_string ("alias")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 4726 "contacts-utils.c"
+                       default:
+                       {
+#line 499 "../src/contacts-utils.vala"
+                               _data_->_tmp3_ = _data_->new_value;
+#line 499 "../src/contacts-utils.vala"
+                               _data_->_state_ = 1;
+#line 499 "../src/contacts-utils.vala"
+                               folks_alias_details_change_alias (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_ALIAS_DETAILS) ? ((FolksAliasDetails*) _data_->persona) : NULL, 
g_value_get_string (&_data_->_tmp3_), contacts_utils_set_persona_property_ready, _data_);
+#line 499 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 4737 "contacts-utils.c"
+                               _state_1:
+#line 499 "../src/contacts-utils.vala"
+                               folks_alias_details_change_alias_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_ALIAS_DETAILS) ? ((FolksAliasDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 499 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 499 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 499 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 499 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 499 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4751 "contacts-utils.c"
+                                       } else {
+#line 499 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 499 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 499 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 499 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4761 "contacts-utils.c"
+                                       }
+                               }
+#line 500 "../src/contacts-utils.vala"
+                               break;
+#line 4766 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = 
g_quark_from_static_string ("avatar")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 4772 "contacts-utils.c"
+                       default:
+                       {
+#line 502 "../src/contacts-utils.vala"
+                               _data_->_tmp4_ = _data_->new_value;
+#line 502 "../src/contacts-utils.vala"
+                               _data_->_state_ = 2;
+#line 502 "../src/contacts-utils.vala"
+                               folks_avatar_details_change_avatar (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_AVATAR_DETAILS) ? ((FolksAvatarDetails*) _data_->persona) : NULL, 
g_value_get_object (&_data_->_tmp4_), contacts_utils_set_persona_property_ready, _data_);
+#line 502 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 4783 "contacts-utils.c"
+                               _state_2:
+#line 502 "../src/contacts-utils.vala"
+                               folks_avatar_details_change_avatar_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_AVATAR_DETAILS) ? ((FolksAvatarDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 502 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 502 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 502 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 502 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 502 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4797 "contacts-utils.c"
+                                       } else {
+#line 502 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 502 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 502 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 502 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4807 "contacts-utils.c"
+                                       }
+                               }
+#line 503 "../src/contacts-utils.vala"
+                               break;
+#line 4812 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = 
g_quark_from_static_string ("birthday")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 4818 "contacts-utils.c"
+                       default:
+                       {
+#line 505 "../src/contacts-utils.vala"
+                               _data_->_tmp5_ = _data_->new_value;
+#line 505 "../src/contacts-utils.vala"
+                               _data_->_state_ = 3;
+#line 505 "../src/contacts-utils.vala"
+                               folks_birthday_details_change_birthday (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS) ? ((FolksBirthdayDetails*) _data_->persona) : NULL, 
g_value_get_boxed (&_data_->_tmp5_), contacts_utils_set_persona_property_ready, _data_);
+#line 505 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 4829 "contacts-utils.c"
+                               _state_3:
+#line 505 "../src/contacts-utils.vala"
+                               folks_birthday_details_change_birthday_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS) ? ((FolksBirthdayDetails*) _data_->persona) : NULL, 
_data_->_res_, &_data_->_inner_error0_);
+#line 505 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 505 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 505 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 505 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 505 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4843 "contacts-utils.c"
+                                       } else {
+#line 505 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 505 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 505 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 505 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4853 "contacts-utils.c"
+                                       }
+                               }
+#line 506 "../src/contacts-utils.vala"
+                               break;
+#line 4858 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = 
g_quark_from_static_string ("calendar-event-id")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 4864 "contacts-utils.c"
+                       default:
+                       {
+#line 508 "../src/contacts-utils.vala"
+                               _data_->_tmp6_ = _data_->new_value;
+#line 508 "../src/contacts-utils.vala"
+                               _data_->_state_ = 4;
+#line 508 "../src/contacts-utils.vala"
+                               folks_birthday_details_change_calendar_event_id (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS) ? ((FolksBirthdayDetails*) _data_->persona) : NULL, 
g_value_get_string (&_data_->_tmp6_), contacts_utils_set_persona_property_ready, _data_);
+#line 508 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 4875 "contacts-utils.c"
+                               _state_4:
+#line 508 "../src/contacts-utils.vala"
+                               folks_birthday_details_change_calendar_event_id_finish 
(G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_BIRTHDAY_DETAILS) ? ((FolksBirthdayDetails*) 
_data_->persona) : NULL, _data_->_res_, &_data_->_inner_error0_);
+#line 508 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 508 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 508 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 508 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 508 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4889 "contacts-utils.c"
+                                       } else {
+#line 508 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 508 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 508 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 508 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4899 "contacts-utils.c"
+                                       }
+                               }
+#line 509 "../src/contacts-utils.vala"
+                               break;
+#line 4904 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label4) ? _tmp1_label4 : (_tmp1_label4 = 
g_quark_from_static_string ("email-addresses")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 4910 "contacts-utils.c"
+                       default:
+                       {
+#line 511 "../src/contacts-utils.vala"
+                               _data_->_tmp7_ = _data_->new_value;
+#line 511 "../src/contacts-utils.vala"
+                               _data_->_state_ = 5;
+#line 511 "../src/contacts-utils.vala"
+                               folks_email_details_change_email_addresses (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_EMAIL_DETAILS) ? ((FolksEmailDetails*) _data_->persona) : NULL, 
g_value_get_object (&_data_->_tmp7_), contacts_utils_set_persona_property_ready, _data_);
+#line 511 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 4921 "contacts-utils.c"
+                               _state_5:
+#line 511 "../src/contacts-utils.vala"
+                               folks_email_details_change_email_addresses_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_EMAIL_DETAILS) ? ((FolksEmailDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 511 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 511 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 511 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 511 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 511 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4935 "contacts-utils.c"
+                                       } else {
+#line 511 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 511 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 511 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 511 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4945 "contacts-utils.c"
+                                       }
+                               }
+#line 512 "../src/contacts-utils.vala"
+                               break;
+#line 4950 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label5) ? _tmp1_label5 : (_tmp1_label5 = 
g_quark_from_static_string ("is-favourite")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 4956 "contacts-utils.c"
+                       default:
+                       {
+#line 514 "../src/contacts-utils.vala"
+                               _data_->_tmp8_ = _data_->new_value;
+#line 514 "../src/contacts-utils.vala"
+                               _data_->_state_ = 6;
+#line 514 "../src/contacts-utils.vala"
+                               folks_favourite_details_change_is_favourite (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_FAVOURITE_DETAILS) ? ((FolksFavouriteDetails*) _data_->persona) : NULL, 
g_value_get_boolean (&_data_->_tmp8_), contacts_utils_set_persona_property_ready, _data_);
+#line 514 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 4967 "contacts-utils.c"
+                               _state_6:
+#line 514 "../src/contacts-utils.vala"
+                               folks_favourite_details_change_is_favourite_finish 
(G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_FAVOURITE_DETAILS) ? ((FolksFavouriteDetails*) 
_data_->persona) : NULL, _data_->_res_, &_data_->_inner_error0_);
+#line 514 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 514 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 514 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 514 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 514 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4981 "contacts-utils.c"
+                                       } else {
+#line 514 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 514 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 514 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 514 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 4991 "contacts-utils.c"
+                                       }
+                               }
+#line 515 "../src/contacts-utils.vala"
+                               break;
+#line 4996 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label6) ? _tmp1_label6 : (_tmp1_label6 = 
g_quark_from_static_string ("gender")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5002 "contacts-utils.c"
+                       default:
+                       {
+#line 517 "../src/contacts-utils.vala"
+                               _data_->_tmp9_ = _data_->new_value;
+#line 517 "../src/contacts-utils.vala"
+                               _data_->_state_ = 7;
+#line 517 "../src/contacts-utils.vala"
+                               folks_gender_details_change_gender (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_GENDER_DETAILS) ? ((FolksGenderDetails*) _data_->persona) : NULL, 
g_value_get_enum (&_data_->_tmp9_), contacts_utils_set_persona_property_ready, _data_);
+#line 517 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5013 "contacts-utils.c"
+                               _state_7:
+#line 517 "../src/contacts-utils.vala"
+                               folks_gender_details_change_gender_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_GENDER_DETAILS) ? ((FolksGenderDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 517 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 517 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 517 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 517 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 517 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5027 "contacts-utils.c"
+                                       } else {
+#line 517 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 517 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 517 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 517 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5037 "contacts-utils.c"
+                                       }
+                               }
+#line 518 "../src/contacts-utils.vala"
+                               break;
+#line 5042 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label7) ? _tmp1_label7 : (_tmp1_label7 = 
g_quark_from_static_string ("groups")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5048 "contacts-utils.c"
+                       default:
+                       {
+#line 520 "../src/contacts-utils.vala"
+                               _data_->_tmp10_ = _data_->new_value;
+#line 520 "../src/contacts-utils.vala"
+                               _data_->_state_ = 8;
+#line 520 "../src/contacts-utils.vala"
+                               folks_group_details_change_groups (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_GROUP_DETAILS) ? ((FolksGroupDetails*) _data_->persona) : NULL, 
g_value_get_object (&_data_->_tmp10_), contacts_utils_set_persona_property_ready, _data_);
+#line 520 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5059 "contacts-utils.c"
+                               _state_8:
+#line 520 "../src/contacts-utils.vala"
+                               folks_group_details_change_groups_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_GROUP_DETAILS) ? ((FolksGroupDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 520 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 520 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 520 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 520 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 520 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5073 "contacts-utils.c"
+                                       } else {
+#line 520 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 520 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 520 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 520 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5083 "contacts-utils.c"
+                                       }
+                               }
+#line 521 "../src/contacts-utils.vala"
+                               break;
+#line 5088 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label8) ? _tmp1_label8 : (_tmp1_label8 = 
g_quark_from_static_string ("im-addresses")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5094 "contacts-utils.c"
+                       default:
+                       {
+#line 523 "../src/contacts-utils.vala"
+                               _data_->_tmp11_ = _data_->new_value;
+#line 523 "../src/contacts-utils.vala"
+                               _data_->_state_ = 9;
+#line 523 "../src/contacts-utils.vala"
+                               folks_im_details_change_im_addresses (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_IM_DETAILS) ? ((FolksImDetails*) _data_->persona) : NULL, g_value_get_object 
(&_data_->_tmp11_), contacts_utils_set_persona_property_ready, _data_);
+#line 523 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5105 "contacts-utils.c"
+                               _state_9:
+#line 523 "../src/contacts-utils.vala"
+                               folks_im_details_change_im_addresses_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_IM_DETAILS) ? ((FolksImDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 523 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 523 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 523 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 523 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 523 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5119 "contacts-utils.c"
+                                       } else {
+#line 523 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 523 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 523 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 523 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5129 "contacts-utils.c"
+                                       }
+                               }
+#line 524 "../src/contacts-utils.vala"
+                               break;
+#line 5134 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label9) ? _tmp1_label9 : (_tmp1_label9 = 
g_quark_from_static_string ("local-ids")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5140 "contacts-utils.c"
+                       default:
+                       {
+#line 526 "../src/contacts-utils.vala"
+                               _data_->_tmp12_ = _data_->new_value;
+#line 526 "../src/contacts-utils.vala"
+                               _data_->_state_ = 10;
+#line 526 "../src/contacts-utils.vala"
+                               folks_local_id_details_change_local_ids (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_LOCAL_ID_DETAILS) ? ((FolksLocalIdDetails*) _data_->persona) : NULL, 
g_value_get_object (&_data_->_tmp12_), contacts_utils_set_persona_property_ready, _data_);
+#line 526 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5151 "contacts-utils.c"
+                               _state_10:
+#line 526 "../src/contacts-utils.vala"
+                               folks_local_id_details_change_local_ids_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_LOCAL_ID_DETAILS) ? ((FolksLocalIdDetails*) _data_->persona) : NULL, 
_data_->_res_, &_data_->_inner_error0_);
+#line 526 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 526 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 526 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 526 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 526 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5165 "contacts-utils.c"
+                                       } else {
+#line 526 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 526 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 526 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 526 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5175 "contacts-utils.c"
+                                       }
+                               }
+#line 527 "../src/contacts-utils.vala"
+                               break;
+#line 5180 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label10) ? _tmp1_label10 : (_tmp1_label10 = 
g_quark_from_static_string ("structured-name")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5186 "contacts-utils.c"
+                       default:
+                       {
+#line 529 "../src/contacts-utils.vala"
+                               _data_->_tmp13_ = _data_->new_value;
+#line 529 "../src/contacts-utils.vala"
+                               _data_->_state_ = 11;
+#line 529 "../src/contacts-utils.vala"
+                               folks_name_details_change_structured_name (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->persona) : NULL, g_value_get_object 
(&_data_->_tmp13_), contacts_utils_set_persona_property_ready, _data_);
+#line 529 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5197 "contacts-utils.c"
+                               _state_11:
+#line 529 "../src/contacts-utils.vala"
+                               folks_name_details_change_structured_name_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 529 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 529 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 529 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 529 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 529 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5211 "contacts-utils.c"
+                                       } else {
+#line 529 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 529 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 529 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 529 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5221 "contacts-utils.c"
+                                       }
+                               }
+#line 530 "../src/contacts-utils.vala"
+                               break;
+#line 5226 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label11) ? _tmp1_label11 : (_tmp1_label11 = 
g_quark_from_static_string ("full-name")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5232 "contacts-utils.c"
+                       default:
+                       {
+#line 532 "../src/contacts-utils.vala"
+                               _data_->_tmp14_ = _data_->new_value;
+#line 532 "../src/contacts-utils.vala"
+                               _data_->_state_ = 12;
+#line 532 "../src/contacts-utils.vala"
+                               folks_name_details_change_full_name (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->persona) : NULL, g_value_get_string 
(&_data_->_tmp14_), contacts_utils_set_persona_property_ready, _data_);
+#line 532 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5243 "contacts-utils.c"
+                               _state_12:
+#line 532 "../src/contacts-utils.vala"
+                               folks_name_details_change_full_name_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 532 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 532 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 532 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 532 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 532 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5257 "contacts-utils.c"
+                                       } else {
+#line 532 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 532 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 532 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 532 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5267 "contacts-utils.c"
+                                       }
+                               }
+#line 533 "../src/contacts-utils.vala"
+                               break;
+#line 5272 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label12) ? _tmp1_label12 : (_tmp1_label12 = 
g_quark_from_static_string ("nickname")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5278 "contacts-utils.c"
+                       default:
+                       {
+#line 535 "../src/contacts-utils.vala"
+                               _data_->_tmp15_ = _data_->new_value;
+#line 535 "../src/contacts-utils.vala"
+                               _data_->_state_ = 13;
+#line 535 "../src/contacts-utils.vala"
+                               folks_name_details_change_nickname (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->persona) : NULL, g_value_get_string 
(&_data_->_tmp15_), contacts_utils_set_persona_property_ready, _data_);
+#line 535 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5289 "contacts-utils.c"
+                               _state_13:
+#line 535 "../src/contacts-utils.vala"
+                               folks_name_details_change_nickname_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 535 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 535 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 535 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 535 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 535 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5303 "contacts-utils.c"
+                                       } else {
+#line 535 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 535 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 535 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 535 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5313 "contacts-utils.c"
+                                       }
+                               }
+#line 536 "../src/contacts-utils.vala"
+                               break;
+#line 5318 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label13) ? _tmp1_label13 : (_tmp1_label13 = 
g_quark_from_static_string ("notes")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5324 "contacts-utils.c"
+                       default:
+                       {
+#line 538 "../src/contacts-utils.vala"
+                               _data_->_tmp16_ = _data_->new_value;
+#line 538 "../src/contacts-utils.vala"
+                               _data_->_state_ = 14;
+#line 538 "../src/contacts-utils.vala"
+                               folks_note_details_change_notes (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, 
FOLKS_TYPE_NOTE_DETAILS) ? ((FolksNoteDetails*) _data_->persona) : NULL, g_value_get_object 
(&_data_->_tmp16_), contacts_utils_set_persona_property_ready, _data_);
+#line 538 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5335 "contacts-utils.c"
+                               _state_14:
+#line 538 "../src/contacts-utils.vala"
+                               folks_note_details_change_notes_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_NOTE_DETAILS) ? ((FolksNoteDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 538 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 538 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 538 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 538 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 538 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5349 "contacts-utils.c"
+                                       } else {
+#line 538 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 538 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 538 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 538 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5359 "contacts-utils.c"
+                                       }
+                               }
+#line 539 "../src/contacts-utils.vala"
+                               break;
+#line 5364 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label14) ? _tmp1_label14 : (_tmp1_label14 = 
g_quark_from_static_string ("phone-numbers")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5370 "contacts-utils.c"
+                       default:
+                       {
+#line 541 "../src/contacts-utils.vala"
+                               _data_->_tmp17_ = _data_->new_value;
+#line 541 "../src/contacts-utils.vala"
+                               _data_->_state_ = 15;
+#line 541 "../src/contacts-utils.vala"
+                               folks_phone_details_change_phone_numbers (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_PHONE_DETAILS) ? ((FolksPhoneDetails*) _data_->persona) : NULL, 
g_value_get_object (&_data_->_tmp17_), contacts_utils_set_persona_property_ready, _data_);
+#line 541 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5381 "contacts-utils.c"
+                               _state_15:
+#line 541 "../src/contacts-utils.vala"
+                               folks_phone_details_change_phone_numbers_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_PHONE_DETAILS) ? ((FolksPhoneDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 541 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 541 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 541 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 541 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 541 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5395 "contacts-utils.c"
+                                       } else {
+#line 541 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 541 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 541 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 541 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5405 "contacts-utils.c"
+                                       }
+                               }
+#line 542 "../src/contacts-utils.vala"
+                               break;
+#line 5410 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label15) ? _tmp1_label15 : (_tmp1_label15 = 
g_quark_from_static_string ("postal-addresses")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5416 "contacts-utils.c"
+                       default:
+                       {
+#line 544 "../src/contacts-utils.vala"
+                               _data_->_tmp18_ = _data_->new_value;
+#line 544 "../src/contacts-utils.vala"
+                               _data_->_state_ = 16;
+#line 544 "../src/contacts-utils.vala"
+                               folks_postal_address_details_change_postal_addresses 
(G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS) ? 
((FolksPostalAddressDetails*) _data_->persona) : NULL, g_value_get_object (&_data_->_tmp18_), 
contacts_utils_set_persona_property_ready, _data_);
+#line 544 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5427 "contacts-utils.c"
+                               _state_16:
+#line 544 "../src/contacts-utils.vala"
+                               folks_postal_address_details_change_postal_addresses_finish 
(G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS) ? 
((FolksPostalAddressDetails*) _data_->persona) : NULL, _data_->_res_, &_data_->_inner_error0_);
+#line 544 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 544 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 544 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 544 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 544 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5441 "contacts-utils.c"
+                                       } else {
+#line 544 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 544 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 544 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 544 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5451 "contacts-utils.c"
+                                       }
+                               }
+#line 545 "../src/contacts-utils.vala"
+                               break;
+#line 5456 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label16) ? _tmp1_label16 : (_tmp1_label16 = 
g_quark_from_static_string ("roles")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5462 "contacts-utils.c"
+                       default:
+                       {
+#line 547 "../src/contacts-utils.vala"
+                               _data_->_tmp19_ = _data_->new_value;
+#line 547 "../src/contacts-utils.vala"
+                               _data_->_state_ = 17;
+#line 547 "../src/contacts-utils.vala"
+                               folks_role_details_change_roles (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, 
FOLKS_TYPE_ROLE_DETAILS) ? ((FolksRoleDetails*) _data_->persona) : NULL, g_value_get_object 
(&_data_->_tmp19_), contacts_utils_set_persona_property_ready, _data_);
+#line 547 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5473 "contacts-utils.c"
+                               _state_17:
+#line 547 "../src/contacts-utils.vala"
+                               folks_role_details_change_roles_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_ROLE_DETAILS) ? ((FolksRoleDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 547 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 547 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 547 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 547 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 547 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5487 "contacts-utils.c"
+                                       } else {
+#line 547 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 547 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 547 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 547 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5497 "contacts-utils.c"
+                                       }
+                               }
+#line 548 "../src/contacts-utils.vala"
+                               break;
+#line 5502 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label17) ? _tmp1_label17 : (_tmp1_label17 = 
g_quark_from_static_string ("urls")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5508 "contacts-utils.c"
+                       default:
+                       {
+#line 550 "../src/contacts-utils.vala"
+                               _data_->_tmp20_ = _data_->new_value;
+#line 550 "../src/contacts-utils.vala"
+                               _data_->_state_ = 18;
+#line 550 "../src/contacts-utils.vala"
+                               folks_url_details_change_urls (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, 
FOLKS_TYPE_URL_DETAILS) ? ((FolksUrlDetails*) _data_->persona) : NULL, g_value_get_object (&_data_->_tmp20_), 
contacts_utils_set_persona_property_ready, _data_);
+#line 550 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5519 "contacts-utils.c"
+                               _state_18:
+#line 550 "../src/contacts-utils.vala"
+                               folks_url_details_change_urls_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->persona, FOLKS_TYPE_URL_DETAILS) ? ((FolksUrlDetails*) _data_->persona) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 550 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 550 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 550 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 550 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 550 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5533 "contacts-utils.c"
+                                       } else {
+#line 550 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 550 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 550 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 550 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5543 "contacts-utils.c"
+                                       }
+                               }
+#line 551 "../src/contacts-utils.vala"
+                               break;
+#line 5548 "contacts-utils.c"
+                       }
+               }
+       } else if (_data_->_tmp2_ == ((0 != _tmp1_label18) ? _tmp1_label18 : (_tmp1_label18 = 
g_quark_from_static_string ("web-service-addresses")))) {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5554 "contacts-utils.c"
+                       default:
+                       {
+#line 553 "../src/contacts-utils.vala"
+                               _data_->_tmp21_ = _data_->new_value;
+#line 553 "../src/contacts-utils.vala"
+                               _data_->_state_ = 19;
+#line 553 "../src/contacts-utils.vala"
+                               folks_web_service_details_change_web_service_addresses 
(G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_WEB_SERVICE_DETAILS) ? ((FolksWebServiceDetails*) 
_data_->persona) : NULL, g_value_get_object (&_data_->_tmp21_), contacts_utils_set_persona_property_ready, 
_data_);
+#line 553 "../src/contacts-utils.vala"
+                               return FALSE;
+#line 5565 "contacts-utils.c"
+                               _state_19:
+#line 553 "../src/contacts-utils.vala"
+                               folks_web_service_details_change_web_service_addresses_finish 
(G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_WEB_SERVICE_DETAILS) ? ((FolksWebServiceDetails*) 
_data_->persona) : NULL, _data_->_res_, &_data_->_inner_error0_);
+#line 553 "../src/contacts-utils.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 553 "../src/contacts-utils.vala"
+                                       if ((_data_->_inner_error0_->domain == FOLKS_PROPERTY_ERROR) || 
(_data_->_inner_error0_->domain == FOLKS_INDIVIDUAL_AGGREGATOR_ERROR)) {
+#line 553 "../src/contacts-utils.vala"
+                                               g_task_return_error (_data_->_async_result, 
_data_->_inner_error0_);
+#line 553 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 553 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5579 "contacts-utils.c"
+                                       } else {
+#line 553 "../src/contacts-utils.vala"
+                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", 
__FILE__, __LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 553 "../src/contacts-utils.vala"
+                                               g_clear_error (&_data_->_inner_error0_);
+#line 553 "../src/contacts-utils.vala"
+                                               g_object_unref (_data_->_async_result);
+#line 553 "../src/contacts-utils.vala"
+                                               return FALSE;
+#line 5589 "contacts-utils.c"
+                                       }
+                               }
+#line 554 "../src/contacts-utils.vala"
+                               break;
+#line 5594 "contacts-utils.c"
+                       }
+               }
+       } else {
+#line 497 "../src/contacts-utils.vala"
+               switch (0) {
+#line 5600 "contacts-utils.c"
+                       default:
+                       {
+#line 556 "../src/contacts-utils.vala"
+                               g_critical ("contacts-utils.vala:556: Unknown property '%s' in 
Contact.set_persona_" \
+"property().", _data_->property_name);
+#line 557 "../src/contacts-utils.vala"
+                               break;
+#line 5607 "contacts-utils.c"
+                       }
+               }
+       }
+#line 493 "../src/contacts-utils.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 493 "../src/contacts-utils.vala"
+       if (_data_->_state_ != 0) {
+#line 493 "../src/contacts-utils.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 493 "../src/contacts-utils.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 5619 "contacts-utils.c"
+               }
+       }
+#line 493 "../src/contacts-utils.vala"
+       g_object_unref (_data_->_async_result);
+#line 493 "../src/contacts-utils.vala"
+       return FALSE;
+#line 5626 "contacts-utils.c"
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
+static gint
+_vala_array_length (gpointer array)
+{
+       gint length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c 
b/_build/src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c
new file mode 100644
index 0000000..3cce199
--- /dev/null
+++ b/_build/src/25a6634@@contacts@sta/contacts-vcard-type-mapping.c
@@ -0,0 +1,313 @@
+/* contacts-vcard-type-mapping.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-vcard-type-mapping.vala, do not modify */
+
+/*
+ * Copyright (C) 2018 Niels De Graef <nielsdegraef gmail com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gee.h>
+
+#define CONTACTS_TYPE_VCARD_TYPE_MAPPING (contacts_vcard_type_mapping_get_type ())
+typedef struct _ContactsVcardTypeMapping ContactsVcardTypeMapping;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+struct _ContactsVcardTypeMapping {
+       const gchar* name;
+       const gchar* types[3];
+};
+
+GType contacts_vcard_type_mapping_get_type (void) G_GNUC_CONST;
+ContactsVcardTypeMapping* contacts_vcard_type_mapping_dup (const ContactsVcardTypeMapping* self);
+void contacts_vcard_type_mapping_free (ContactsVcardTypeMapping* self);
+#define CONTACTS_VCARD_TYPE_MAPPING_MAX_TYPES 3
+gboolean contacts_vcard_type_mapping_contains (ContactsVcardTypeMapping *self,
+                                               const gchar* type);
+static gboolean contacts_vcard_type_mapping_types_are_equal (const gchar* a,
+                                                      const gchar* b);
+gboolean contacts_vcard_type_mapping_matches (ContactsVcardTypeMapping *self,
+                                              GeeCollection* types);
+
+/** Returns whether the mapping contains the given vcard type. */
+gboolean
+contacts_vcard_type_mapping_contains (ContactsVcardTypeMapping *self,
+                                      const gchar* type)
+{
+       gboolean result = FALSE;
+#line 33 "../src/contacts-vcard-type-mapping.vala"
+       g_return_val_if_fail (type != NULL, FALSE);
+#line 57 "contacts-vcard-type-mapping.c"
+       {
+               gint i = 0;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+               i = 0;
+#line 62 "contacts-vcard-type-mapping.c"
+               {
+                       gboolean _tmp0_ = FALSE;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                       _tmp0_ = TRUE;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                       while (TRUE) {
+#line 69 "contacts-vcard-type-mapping.c"
+                               gboolean _tmp2_ = FALSE;
+                               const gchar* _tmp4_;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                               if (!_tmp0_) {
+#line 74 "contacts-vcard-type-mapping.c"
+                                       gint _tmp1_;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp1_ = i;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                                       i = _tmp1_ + 1;
+#line 80 "contacts-vcard-type-mapping.c"
+                               }
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                               _tmp0_ = FALSE;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                               if (i < CONTACTS_VCARD_TYPE_MAPPING_MAX_TYPES) {
+#line 86 "contacts-vcard-type-mapping.c"
+                                       const gchar* _tmp3_;
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp3_ = (*self).types[i];
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp2_ = _tmp3_ != NULL;
+#line 92 "contacts-vcard-type-mapping.c"
+                               } else {
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp2_ = FALSE;
+#line 96 "contacts-vcard-type-mapping.c"
+                               }
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                               if (!_tmp2_) {
+#line 34 "../src/contacts-vcard-type-mapping.vala"
+                                       break;
+#line 102 "contacts-vcard-type-mapping.c"
+                               }
+#line 35 "../src/contacts-vcard-type-mapping.vala"
+                               _tmp4_ = (*self).types[i];
+#line 35 "../src/contacts-vcard-type-mapping.vala"
+                               if (contacts_vcard_type_mapping_types_are_equal (_tmp4_, type)) {
+#line 36 "../src/contacts-vcard-type-mapping.vala"
+                                       result = TRUE;
+#line 36 "../src/contacts-vcard-type-mapping.vala"
+                                       return result;
+#line 112 "contacts-vcard-type-mapping.c"
+                               }
+                       }
+               }
+       }
+#line 37 "../src/contacts-vcard-type-mapping.vala"
+       result = FALSE;
+#line 37 "../src/contacts-vcard-type-mapping.vala"
+       return result;
+#line 121 "contacts-vcard-type-mapping.c"
+}
+
+/**
+   * Checks whether all items in the VcardTypeMapping are in the specified @types.
+   * Even though there might be other values in @types, we ignore them.
+   *
+   * For example: [ HOME, FOO, PREF, BLAH ] should match the [ HOME ] VCard
+   * type, but not [ HOME, FAX ]
+   */
+gboolean
+contacts_vcard_type_mapping_matches (ContactsVcardTypeMapping *self,
+                                     GeeCollection* types)
+{
+       gboolean result = FALSE;
+#line 47 "../src/contacts-vcard-type-mapping.vala"
+       g_return_val_if_fail (types != NULL, FALSE);
+#line 138 "contacts-vcard-type-mapping.c"
+       {
+               gint i = 0;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+               i = 0;
+#line 143 "contacts-vcard-type-mapping.c"
+               {
+                       gboolean _tmp0_ = FALSE;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                       _tmp0_ = TRUE;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                       while (TRUE) {
+#line 150 "contacts-vcard-type-mapping.c"
+                               gboolean _tmp2_ = FALSE;
+                               gboolean occurs_in_list = FALSE;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                               if (!_tmp0_) {
+#line 155 "contacts-vcard-type-mapping.c"
+                                       gint _tmp1_;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp1_ = i;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                                       i = _tmp1_ + 1;
+#line 161 "contacts-vcard-type-mapping.c"
+                               }
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                               _tmp0_ = FALSE;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                               if (i < CONTACTS_VCARD_TYPE_MAPPING_MAX_TYPES) {
+#line 167 "contacts-vcard-type-mapping.c"
+                                       const gchar* _tmp3_;
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp3_ = (*self).types[i];
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp2_ = _tmp3_ != NULL;
+#line 173 "contacts-vcard-type-mapping.c"
+                               } else {
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp2_ = FALSE;
+#line 177 "contacts-vcard-type-mapping.c"
+                               }
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                               if (!_tmp2_) {
+#line 48 "../src/contacts-vcard-type-mapping.vala"
+                                       break;
+#line 183 "contacts-vcard-type-mapping.c"
+                               }
+#line 49 "../src/contacts-vcard-type-mapping.vala"
+                               occurs_in_list = FALSE;
+#line 187 "contacts-vcard-type-mapping.c"
+                               {
+                                       GeeIterator* _type_it = NULL;
+                                       GeeIterator* _tmp4_;
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                       _tmp4_ = gee_iterable_iterator ((GeeIterable*) types);
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                       _type_it = _tmp4_;
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                       while (TRUE) {
+#line 197 "contacts-vcard-type-mapping.c"
+                                               GeeIterator* _tmp5_;
+                                               gchar* type = NULL;
+                                               GeeIterator* _tmp6_;
+                                               gpointer _tmp7_;
+                                               const gchar* _tmp8_;
+                                               const gchar* _tmp9_;
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                               _tmp5_ = _type_it;
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                               if (!gee_iterator_next (_tmp5_)) {
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                                       break;
+#line 210 "contacts-vcard-type-mapping.c"
+                                               }
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                               _tmp6_ = _type_it;
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                               _tmp7_ = gee_iterator_get (_tmp6_);
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                               type = (gchar*) _tmp7_;
+#line 51 "../src/contacts-vcard-type-mapping.vala"
+                                               _tmp8_ = type;
+#line 51 "../src/contacts-vcard-type-mapping.vala"
+                                               _tmp9_ = (*self).types[i];
+#line 51 "../src/contacts-vcard-type-mapping.vala"
+                                               if (contacts_vcard_type_mapping_types_are_equal (_tmp8_, 
_tmp9_)) {
+#line 52 "../src/contacts-vcard-type-mapping.vala"
+                                                       occurs_in_list = TRUE;
+#line 53 "../src/contacts-vcard-type-mapping.vala"
+                                                       _g_free0 (type);
+#line 53 "../src/contacts-vcard-type-mapping.vala"
+                                                       break;
+#line 230 "contacts-vcard-type-mapping.c"
+                                               }
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                               _g_free0 (type);
+#line 234 "contacts-vcard-type-mapping.c"
+                                       }
+#line 50 "../src/contacts-vcard-type-mapping.vala"
+                                       _g_object_unref0 (_type_it);
+#line 238 "contacts-vcard-type-mapping.c"
+                               }
+#line 57 "../src/contacts-vcard-type-mapping.vala"
+                               if (!occurs_in_list) {
+#line 58 "../src/contacts-vcard-type-mapping.vala"
+                                       result = FALSE;
+#line 58 "../src/contacts-vcard-type-mapping.vala"
+                                       return result;
+#line 246 "contacts-vcard-type-mapping.c"
+                               }
+                       }
+               }
+       }
+#line 60 "../src/contacts-vcard-type-mapping.vala"
+       result = TRUE;
+#line 60 "../src/contacts-vcard-type-mapping.vala"
+       return result;
+#line 255 "contacts-vcard-type-mapping.c"
+}
+
+static gboolean
+contacts_vcard_type_mapping_types_are_equal (const gchar* a,
+                                             const gchar* b)
+{
+       gboolean result = FALSE;
+#line 63 "../src/contacts-vcard-type-mapping.vala"
+       g_return_val_if_fail (a != NULL, FALSE);
+#line 63 "../src/contacts-vcard-type-mapping.vala"
+       g_return_val_if_fail (b != NULL, FALSE);
+#line 64 "../src/contacts-vcard-type-mapping.vala"
+       result = g_ascii_strcasecmp (a, b) == 0;
+#line 64 "../src/contacts-vcard-type-mapping.vala"
+       return result;
+#line 271 "contacts-vcard-type-mapping.c"
+}
+
+ContactsVcardTypeMapping*
+contacts_vcard_type_mapping_dup (const ContactsVcardTypeMapping* self)
+{
+       ContactsVcardTypeMapping* dup;
+#line 27 "../src/contacts-vcard-type-mapping.vala"
+       dup = g_new0 (ContactsVcardTypeMapping, 1);
+#line 27 "../src/contacts-vcard-type-mapping.vala"
+       memcpy (dup, self, sizeof (ContactsVcardTypeMapping));
+#line 27 "../src/contacts-vcard-type-mapping.vala"
+       return dup;
+#line 284 "contacts-vcard-type-mapping.c"
+}
+
+void
+contacts_vcard_type_mapping_free (ContactsVcardTypeMapping* self)
+{
+#line 27 "../src/contacts-vcard-type-mapping.vala"
+       g_free (self);
+#line 292 "contacts-vcard-type-mapping.c"
+}
+
+static GType
+contacts_vcard_type_mapping_get_type_once (void)
+{
+       GType contacts_vcard_type_mapping_type_id;
+       contacts_vcard_type_mapping_type_id = g_boxed_type_register_static ("ContactsVcardTypeMapping", 
(GBoxedCopyFunc) contacts_vcard_type_mapping_dup, (GBoxedFreeFunc) contacts_vcard_type_mapping_free);
+       return contacts_vcard_type_mapping_type_id;
+}
+
+GType
+contacts_vcard_type_mapping_get_type (void)
+{
+       static volatile gsize contacts_vcard_type_mapping_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_vcard_type_mapping_type_id__volatile)) {
+               GType contacts_vcard_type_mapping_type_id;
+               contacts_vcard_type_mapping_type_id = contacts_vcard_type_mapping_get_type_once ();
+               g_once_init_leave (&contacts_vcard_type_mapping_type_id__volatile, 
contacts_vcard_type_mapping_type_id);
+       }
+       return contacts_vcard_type_mapping_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o
new file mode 100644
index 0000000..7fe2ad3
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-avatar-utils.c.o differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o
new file mode 100644
index 0000000..dfde8f8
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-esd-setup.c.o differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o
new file mode 100644
index 0000000..ef9f6a8
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-fake-persona-store.c.o 
differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o
new file mode 100644
index 0000000..589348b
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-im-service.c.o differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o
new file mode 100644
index 0000000..cea9135
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-store.c.o differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o
new file mode 100644
index 0000000..b726a40
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-type-descriptor.c.o 
differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o
new file mode 100644
index 0000000..34356a5
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-typeset.c.o differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o
new file mode 100644
index 0000000..1c2c5b1
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-utils.c.o differ
diff --git a/_build/src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o 
b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o
new file mode 100644
index 0000000..17e6656
Binary files /dev/null and b/_build/src/25a6634@@contacts@sta/meson-generated_contacts-vcard-type-mapping.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c 
b/_build/src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c
new file mode 100644
index 0000000..2aceef9
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts-search-provider@exe/contacts-shell-search-provider.c
@@ -0,0 +1,3728 @@
+/* contacts-shell-search-provider.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-shell-search-provider.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <gio/gio.h>
+#include <folks/folks.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include "contacts.h"
+#include <gee.h>
+#include <stdio.h>
+#include <config.h>
+
+#define CONTACTS_TYPE_SEARCH_PROVIDER (contacts_search_provider_get_type ())
+#define CONTACTS_SEARCH_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SEARCH_PROVIDER, 
ContactsSearchProvider))
+#define CONTACTS_SEARCH_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_SEARCH_PROVIDER, ContactsSearchProviderClass))
+#define CONTACTS_IS_SEARCH_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SEARCH_PROVIDER))
+#define CONTACTS_IS_SEARCH_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_SEARCH_PROVIDER))
+#define CONTACTS_SEARCH_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_SEARCH_PROVIDER, ContactsSearchProviderClass))
+
+typedef struct _ContactsSearchProvider ContactsSearchProvider;
+typedef struct _ContactsSearchProviderClass ContactsSearchProviderClass;
+typedef struct _ContactsSearchProviderPrivate ContactsSearchProviderPrivate;
+
+#define CONTACTS_TYPE_SEARCH_PROVIDER_APP (contacts_search_provider_app_get_type ())
+#define CONTACTS_SEARCH_PROVIDER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_SEARCH_PROVIDER_APP, ContactsSearchProviderApp))
+#define CONTACTS_SEARCH_PROVIDER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_SEARCH_PROVIDER_APP, ContactsSearchProviderAppClass))
+#define CONTACTS_IS_SEARCH_PROVIDER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_SEARCH_PROVIDER_APP))
+#define CONTACTS_IS_SEARCH_PROVIDER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_SEARCH_PROVIDER_APP))
+#define CONTACTS_SEARCH_PROVIDER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_SEARCH_PROVIDER_APP, ContactsSearchProviderAppClass))
+
+typedef struct _ContactsSearchProviderApp ContactsSearchProviderApp;
+typedef struct _ContactsSearchProviderAppClass ContactsSearchProviderAppClass;
+enum  {
+       CONTACTS_SEARCH_PROVIDER_0_PROPERTY,
+       CONTACTS_SEARCH_PROVIDER_NUM_PROPERTIES
+};
+static GParamSpec* contacts_search_provider_properties[CONTACTS_SEARCH_PROVIDER_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL)))
+typedef struct _Block1Data Block1Data;
+typedef struct _contacts_search_provider_GetInitialResultSetData 
contacts_search_provider_GetInitialResultSetData;
+typedef struct _contacts_search_provider_GetSubsearchResultSetData 
contacts_search_provider_GetSubsearchResultSetData;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _ContactsSearchProviderDoSearchData ContactsSearchProviderDoSearchData;
+typedef struct _contacts_search_provider_GetResultMetasData contacts_search_provider_GetResultMetasData;
+#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
+#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
+typedef struct _ContactsSearchProviderGetMetasData ContactsSearchProviderGetMetasData;
+typedef struct _contacts_search_provider_GetInitialResultSetReadyData 
contacts_search_provider_GetInitialResultSetReadyData;
+typedef struct _contacts_search_provider_GetSubsearchResultSetReadyData 
contacts_search_provider_GetSubsearchResultSetReadyData;
+typedef struct _contacts_search_provider_GetResultMetasReadyData 
contacts_search_provider_GetResultMetasReadyData;
+typedef struct _ContactsSearchProviderAppPrivate ContactsSearchProviderAppPrivate;
+enum  {
+       CONTACTS_SEARCH_PROVIDER_APP_0_PROPERTY,
+       CONTACTS_SEARCH_PROVIDER_APP_NUM_PROPERTIES
+};
+static GParamSpec* contacts_search_provider_app_properties[CONTACTS_SEARCH_PROVIDER_APP_NUM_PROPERTIES];
+
+struct _ContactsSearchProvider {
+       GObject parent_instance;
+       ContactsSearchProviderPrivate * priv;
+};
+
+struct _ContactsSearchProviderClass {
+       GObjectClass parent_class;
+};
+
+struct _ContactsSearchProviderPrivate {
+       ContactsSearchProviderApp* app;
+       FolksIndividualAggregator* aggregator;
+       FolksSimpleQuery* query;
+       GVariant* serialized_fallback_icon;
+};
+
+struct _Block1Data {
+       int _ref_count_;
+       ContactsSearchProvider* self;
+       gpointer _async_data_;
+};
+
+struct _contacts_search_provider_GetInitialResultSetData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsSearchProvider* self;
+       gchar** terms;
+       gint terms_length1;
+       gchar** result;
+       gint result_length1;
+       Block1Data* _data1_;
+       FolksIndividualAggregator* _tmp0_;
+       gboolean _tmp1_;
+       gboolean _tmp2_;
+       gulong id;
+       FolksIndividualAggregator* _tmp3_;
+       gulong _tmp4_;
+       guint timeout;
+       FolksIndividualAggregator* _tmp5_;
+       gchar** results;
+       gint _tmp6_;
+       gchar** _tmp7_;
+       gint results_length1;
+       gint _results_size_;
+       gchar** _tmp8_;
+       gint _tmp8__length1;
+       gchar** _tmp9_;
+       gint _tmp10_;
+       gchar** _tmp11_;
+       gint _tmp9__length1;
+       gint __tmp9__size_;
+       gchar** _tmp12_;
+       gint _tmp12__length1;
+       gchar** _tmp13_;
+       gint _tmp13__length1;
+       gchar** _tmp14_;
+       gint _tmp14__length1;
+       gchar** _tmp15_;
+       gint _tmp16_;
+       gchar** _tmp17_;
+       gint _tmp15__length1;
+       gint __tmp15__size_;
+       gchar** _tmp18_;
+       gint _tmp18__length1;
+       gchar** _tmp19_;
+       gint _tmp19__length1;
+       GError* _inner_error0_;
+};
+
+struct _contacts_search_provider_GetSubsearchResultSetData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsSearchProvider* self;
+       gchar** previous_results;
+       gint previous_results_length1;
+       gchar** new_terms;
+       gint new_terms_length1;
+       gchar** result;
+       gint result_length1;
+       gchar** _tmp0_;
+       gint _tmp1_;
+       gchar** _tmp2_;
+       gint _tmp0__length1;
+       gint __tmp0__size_;
+       gchar** _tmp3_;
+       gint _tmp3__length1;
+       gchar** _tmp4_;
+       gint _tmp4__length1;
+       GError* _inner_error0_;
+};
+
+struct _ContactsSearchProviderDoSearchData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsSearchProvider* self;
+       gchar** terms;
+       gint terms_length1;
+       gchar** result;
+       gint result_length1;
+       ContactsSearchProviderApp* _tmp0_;
+       FolksSimpleQuery* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       FolksSearchView* search_view;
+       FolksIndividualAggregator* _tmp4_;
+       FolksSimpleQuery* _tmp5_;
+       FolksSearchView* _tmp6_;
+       GError* e;
+       const gchar* _tmp7_;
+       gchar** results;
+       GeeSortedSet* _tmp8_;
+       GeeSortedSet* _tmp9_;
+       gint _tmp10_;
+       gint _tmp11_;
+       gchar** _tmp12_;
+       gint results_length1;
+       gint _results_size_;
+       gint i;
+       GeeIterator* _individual_it;
+       GeeSortedSet* _tmp13_;
+       GeeSortedSet* _tmp14_;
+       GeeIterator* _tmp15_;
+       GeeIterator* _tmp16_;
+       FolksIndividual* individual;
+       GeeIterator* _tmp17_;
+       gpointer _tmp18_;
+       gchar** _tmp19_;
+       gint _tmp19__length1;
+       FolksIndividual* _tmp20_;
+       const gchar* _tmp21_;
+       const gchar* _tmp22_;
+       gchar* _tmp23_;
+       gint _tmp24_;
+       ContactsSearchProviderApp* _tmp25_;
+       gchar** _tmp26_;
+       gint _tmp26__length1;
+       GError* _inner_error0_;
+};
+
+struct _contacts_search_provider_GetResultMetasData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsSearchProvider* self;
+       gchar** ids;
+       gint ids_length1;
+       GHashTable** result;
+       gint result_length1;
+       GHashTable** _tmp0_;
+       gchar** _tmp1_;
+       gint _tmp1__length1;
+       gint _tmp2_;
+       GHashTable** _tmp3_;
+       gint _tmp0__length1;
+       gint __tmp0__size_;
+       GHashTable** _tmp4_;
+       gint _tmp4__length1;
+       GHashTable** _tmp5_;
+       gint _tmp5__length1;
+       GError* _inner_error0_;
+};
+
+struct _ContactsSearchProviderGetMetasData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsSearchProvider* self;
+       gchar** ids;
+       gint ids_length1;
+       GHashTable** result;
+       gint result_length1;
+       ContactsSearchProviderApp* _tmp0_;
+       GeeArrayList* results;
+       GeeArrayList* _tmp1_;
+       gchar** id_collection;
+       gint id_collection_length1;
+       gint _id_collection_size_;
+       gint id_it;
+       gchar* _tmp2_;
+       gchar* id;
+       FolksIndividual* indiv;
+       FolksIndividual* _tmp3_;
+       FolksIndividualAggregator* _tmp4_;
+       const gchar* _tmp5_;
+       FolksIndividual* _tmp6_;
+       FolksIndividual* _tmp7_;
+       GError* e;
+       FolksIndividual* _tmp8_;
+       GHashTable* meta;
+       GHashFunc _tmp9_;
+       GEqualFunc _tmp10_;
+       GHashTable* _tmp11_;
+       GHashTable* _tmp12_;
+       gchar* _tmp13_;
+       const gchar* _tmp14_;
+       GVariant* _tmp15_;
+       GHashTable* _tmp16_;
+       gchar* _tmp17_;
+       FolksIndividual* _tmp18_;
+       const gchar* _tmp19_;
+       const gchar* _tmp20_;
+       GVariant* _tmp21_;
+       GVariant* _tmp22_;
+       FolksIndividual* _tmp23_;
+       GLoadableIcon* _tmp24_;
+       GLoadableIcon* _tmp25_;
+       FolksIndividual* _tmp26_;
+       GLoadableIcon* _tmp27_;
+       GLoadableIcon* _tmp28_;
+       GVariant* _tmp29_;
+       GVariant* _tmp30_;
+       GVariant* _tmp31_;
+       GHashTable* _tmp32_;
+       gchar* _tmp33_;
+       GVariant* _tmp34_;
+       GString* description;
+       GString* _tmp35_;
+       FolksEmailFieldDetails* email;
+       FolksIndividual* _tmp36_;
+       GeeSet* _tmp37_;
+       GeeSet* _tmp38_;
+       gpointer _tmp39_;
+       gboolean _tmp40_;
+       gboolean _tmp41_;
+       FolksEmailFieldDetails* _tmp42_;
+       FolksEmailFieldDetails* _tmp43_;
+       gconstpointer _tmp44_;
+       const gchar* _tmp45_;
+       FolksEmailFieldDetails* _tmp46_;
+       gconstpointer _tmp47_;
+       const gchar* _tmp48_;
+       GString* _tmp49_;
+       FolksEmailFieldDetails* _tmp50_;
+       gconstpointer _tmp51_;
+       const gchar* _tmp52_;
+       FolksPhoneFieldDetails* phone;
+       FolksIndividual* _tmp53_;
+       GeeSet* _tmp54_;
+       GeeSet* _tmp55_;
+       gpointer _tmp56_;
+       gboolean _tmp57_;
+       gboolean _tmp58_;
+       FolksPhoneFieldDetails* _tmp59_;
+       FolksPhoneFieldDetails* _tmp60_;
+       gconstpointer _tmp61_;
+       const gchar* _tmp62_;
+       FolksPhoneFieldDetails* _tmp63_;
+       gconstpointer _tmp64_;
+       const gchar* _tmp65_;
+       GString* _tmp66_;
+       GString* _tmp67_;
+       GString* _tmp68_;
+       FolksPhoneFieldDetails* _tmp69_;
+       gconstpointer _tmp70_;
+       const gchar* _tmp71_;
+       GHashTable* _tmp72_;
+       gchar* _tmp73_;
+       GString* _tmp74_;
+       const gchar* _tmp75_;
+       GVariant* _tmp76_;
+       GeeArrayList* _tmp77_;
+       GHashTable* _tmp78_;
+       ContactsSearchProviderApp* _tmp79_;
+       GeeArrayList* _tmp80_;
+       gint _tmp81_;
+       gpointer* _tmp82_;
+       GHashTable** _tmp83_;
+       gint _tmp83__length1;
+       GError* _inner_error0_;
+};
+
+struct _contacts_search_provider_GetInitialResultSetReadyData {
+       GDBusMethodInvocation* _invocation_;
+       gchar** terms;
+       gint terms_length1;
+};
+
+struct _contacts_search_provider_GetSubsearchResultSetReadyData {
+       GDBusMethodInvocation* _invocation_;
+       gchar** previous_results;
+       gint previous_results_length1;
+       gchar** new_terms;
+       gint new_terms_length1;
+};
+
+struct _contacts_search_provider_GetResultMetasReadyData {
+       GDBusMethodInvocation* _invocation_;
+       gchar** ids;
+       gint ids_length1;
+};
+
+struct _ContactsSearchProviderApp {
+       GApplication parent_instance;
+       ContactsSearchProviderAppPrivate * priv;
+};
+
+struct _ContactsSearchProviderAppClass {
+       GApplicationClass parent_class;
+};
+
+static gint ContactsSearchProvider_private_offset;
+static gpointer contacts_search_provider_parent_class = NULL;
+static gpointer contacts_search_provider_app_parent_class = NULL;
+
+GType contacts_search_provider_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSearchProvider, g_object_unref)
+guint contacts_search_provider_register_object (void* object,
+                                                GDBusConnection* connection,
+                                                const gchar* path,
+                                                GError** error);
+GType contacts_search_provider_app_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSearchProviderApp, g_object_unref)
+ContactsSearchProvider* contacts_search_provider_new (ContactsSearchProviderApp* app);
+ContactsSearchProvider* contacts_search_provider_construct (GType object_type,
+                                                            ContactsSearchProviderApp* app);
+static const gchar** _vala_array_dup1 (const gchar** self,
+                                gint length);
+static void _vala_array_add1 (const gchar** * array,
+                       gint* length,
+                       gint* size,
+                       const gchar* value);
+static void contacts_search_provider_GetInitialResultSet_data_free (gpointer _data);
+void contacts_search_provider_GetInitialResultSet (ContactsSearchProvider* self,
+                                                   gchar** terms,
+                                                   gint terms_length1,
+                                                   GAsyncReadyCallback _callback_,
+                                                   gpointer _user_data_);
+gchar** contacts_search_provider_GetInitialResultSet_finish (ContactsSearchProvider* self,
+                                                             GAsyncResult* _res_,
+                                                             gint* result_length1,
+                                                             GError** error);
+static gboolean contacts_search_provider_GetInitialResultSet_co 
(contacts_search_provider_GetInitialResultSetData* _data_);
+static Block1Data* block1_data_ref (Block1Data* _data1_);
+static void block1_data_unref (void * _userdata_);
+static void ___lambda4_ (Block1Data* _data1_);
+static void ____lambda4__g_object_notify (GObject* _sender,
+                                   GParamSpec* pspec,
+                                   gpointer self);
+static gboolean ___lambda5_ (Block1Data* _data1_);
+static gboolean ____lambda5__gsource_func (gpointer self);
+static void contacts_search_provider_do_search (ContactsSearchProvider* self,
+                                         gchar** terms,
+                                         gint terms_length1,
+                                         GAsyncReadyCallback _callback_,
+                                         gpointer _user_data_);
+static gchar** contacts_search_provider_do_search_finish (ContactsSearchProvider* self,
+                                                   GAsyncResult* _res_,
+                                                   gint* result_length1,
+                                                   GError** error);
+static void contacts_search_provider_GetInitialResultSet_ready (GObject* source_object,
+                                                         GAsyncResult* _res_,
+                                                         gpointer _user_data_);
+static void contacts_search_provider_GetSubsearchResultSet_data_free (gpointer _data);
+void contacts_search_provider_GetSubsearchResultSet (ContactsSearchProvider* self,
+                                                     gchar** previous_results,
+                                                     gint previous_results_length1,
+                                                     gchar** new_terms,
+                                                     gint new_terms_length1,
+                                                     GAsyncReadyCallback _callback_,
+                                                     gpointer _user_data_);
+gchar** contacts_search_provider_GetSubsearchResultSet_finish (ContactsSearchProvider* self,
+                                                               GAsyncResult* _res_,
+                                                               gint* result_length1,
+                                                               GError** error);
+static gboolean contacts_search_provider_GetSubsearchResultSet_co 
(contacts_search_provider_GetSubsearchResultSetData* _data_);
+static void contacts_search_provider_GetSubsearchResultSet_ready (GObject* source_object,
+                                                           GAsyncResult* _res_,
+                                                           gpointer _user_data_);
+static void contacts_search_provider_do_search_data_free (gpointer _data);
+static gboolean contacts_search_provider_do_search_co (ContactsSearchProviderDoSearchData* _data_);
+static void contacts_search_provider_do_search_ready (GObject* source_object,
+                                               GAsyncResult* _res_,
+                                               gpointer _user_data_);
+static void contacts_search_provider_GetResultMetas_data_free (gpointer _data);
+void contacts_search_provider_GetResultMetas (ContactsSearchProvider* self,
+                                              gchar** ids,
+                                              gint ids_length1,
+                                              GAsyncReadyCallback _callback_,
+                                              gpointer _user_data_);
+GHashTable** contacts_search_provider_GetResultMetas_finish (ContactsSearchProvider* self,
+                                                             GAsyncResult* _res_,
+                                                             gint* result_length1,
+                                                             GError** error);
+static gboolean contacts_search_provider_GetResultMetas_co (contacts_search_provider_GetResultMetasData* 
_data_);
+static void contacts_search_provider_get_metas (ContactsSearchProvider* self,
+                                         gchar** ids,
+                                         gint ids_length1,
+                                         GAsyncReadyCallback _callback_,
+                                         gpointer _user_data_);
+static GHashTable** contacts_search_provider_get_metas_finish (ContactsSearchProvider* self,
+                                                        GAsyncResult* _res_,
+                                                        gint* result_length1,
+                                                        GError** error);
+static gchar** _vala_array_dup2 (gchar** self,
+                          gint length);
+static void contacts_search_provider_GetResultMetas_ready (GObject* source_object,
+                                                    GAsyncResult* _res_,
+                                                    gpointer _user_data_);
+static void contacts_search_provider_get_metas_data_free (gpointer _data);
+static gboolean contacts_search_provider_get_metas_co (ContactsSearchProviderGetMetasData* _data_);
+static void contacts_search_provider_get_metas_ready (GObject* source_object,
+                                               GAsyncResult* _res_,
+                                               gpointer _user_data_);
+static void _g_free0_ (gpointer var);
+static void _g_variant_unref0_ (gpointer var);
+static GVariant* _variant_new1 (const gchar* value);
+void contacts_search_provider_ActivateResult (ContactsSearchProvider* self,
+                                              const gchar* id,
+                                              gchar** terms,
+                                              gint terms_length1,
+                                              guint32 timestamp,
+                                              GError** error);
+void contacts_search_provider_LaunchSearch (ContactsSearchProvider* self,
+                                            gchar** terms,
+                                            gint terms_length1,
+                                            guint32 timestamp,
+                                            GError** error);
+static void _vala_array_add2 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+static void contacts_search_provider_finalize (GObject * obj);
+static GType contacts_search_provider_get_type_once (void);
+static void _dbus_contacts_search_provider_GetInitialResultSet (ContactsSearchProvider* self,
+                                                         GVariant* _parameters_,
+                                                         GDBusMethodInvocation* invocation);
+static void _dbus_contacts_search_provider_GetInitialResultSet_ready (GObject * source_object,
+                                                               GAsyncResult * _res_,
+                                                               gpointer _user_data_);
+static void _dbus_contacts_search_provider_GetSubsearchResultSet (ContactsSearchProvider* self,
+                                                           GVariant* _parameters_,
+                                                           GDBusMethodInvocation* invocation);
+static void _dbus_contacts_search_provider_GetSubsearchResultSet_ready (GObject * source_object,
+                                                                 GAsyncResult * _res_,
+                                                                 gpointer _user_data_);
+static void _dbus_contacts_search_provider_GetResultMetas (ContactsSearchProvider* self,
+                                                    GVariant* _parameters_,
+                                                    GDBusMethodInvocation* invocation);
+static void _dbus_contacts_search_provider_GetResultMetas_ready (GObject * source_object,
+                                                          GAsyncResult * _res_,
+                                                          gpointer _user_data_);
+static void _dbus_contacts_search_provider_ActivateResult (ContactsSearchProvider* self,
+                                                    GVariant* _parameters_,
+                                                    GDBusMethodInvocation* invocation);
+static void _dbus_contacts_search_provider_LaunchSearch (ContactsSearchProvider* self,
+                                                  GVariant* _parameters_,
+                                                  GDBusMethodInvocation* invocation);
+static void contacts_search_provider_dbus_interface_method_call (GDBusConnection* connection,
+                                                          const gchar* sender,
+                                                          const gchar* object_path,
+                                                          const gchar* interface_name,
+                                                          const gchar* method_name,
+                                                          GVariant* parameters,
+                                                          GDBusMethodInvocation* invocation,
+                                                          gpointer user_data);
+static GVariant* contacts_search_provider_dbus_interface_get_property (GDBusConnection* connection,
+                                                                const gchar* sender,
+                                                                const gchar* object_path,
+                                                                const gchar* interface_name,
+                                                                const gchar* property_name,
+                                                                GError** error,
+                                                                gpointer user_data);
+static gboolean contacts_search_provider_dbus_interface_set_property (GDBusConnection* connection,
+                                                               const gchar* sender,
+                                                               const gchar* object_path,
+                                                               const gchar* interface_name,
+                                                               const gchar* property_name,
+                                                               GVariant* value,
+                                                               GError** error,
+                                                               gpointer user_data);
+static void _contacts_search_provider_unregister_object (gpointer user_data);
+ContactsSearchProviderApp* contacts_search_provider_app_new (void);
+ContactsSearchProviderApp* contacts_search_provider_app_construct (GType object_type);
+static gboolean contacts_search_provider_app_real_dbus_register (GApplication* base,
+                                                          GDBusConnection* connection,
+                                                          const gchar* object_path,
+                                                          GError** error);
+static void contacts_search_provider_app_real_startup (GApplication* base);
+static GType contacts_search_provider_app_get_type_once (void);
+gint _vala_main (void);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_GetInitialResultSet_terms = {-1, "terms", 
"as", NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_GetInitialResultSet_result = {-1, 
"result", "as", NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_GetInitialResultSet_in[] = 
{&_contacts_search_provider_dbus_arg_info_GetInitialResultSet_terms, NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_GetInitialResultSet_out[] = 
{&_contacts_search_provider_dbus_arg_info_GetInitialResultSet_result, NULL};
+static const GDBusMethodInfo _contacts_search_provider_dbus_method_info_GetInitialResultSet = {-1, 
"GetInitialResultSet", (GDBusArgInfo **) (&_contacts_search_provider_dbus_arg_info_GetInitialResultSet_in), 
(GDBusArgInfo **) (&_contacts_search_provider_dbus_arg_info_GetInitialResultSet_out), NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_previous_results = 
{-1, "previous_results", "as", NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_new_terms = {-1, 
"new_terms", "as", NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_result = {-1, 
"result", "as", NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_in[] = 
{&_contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_previous_results, 
&_contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_new_terms, NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_out[] = 
{&_contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_result, NULL};
+static const GDBusMethodInfo _contacts_search_provider_dbus_method_info_GetSubsearchResultSet = {-1, 
"GetSubsearchResultSet", (GDBusArgInfo **) 
(&_contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_in), (GDBusArgInfo **) 
(&_contacts_search_provider_dbus_arg_info_GetSubsearchResultSet_out), NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_GetResultMetas_ids = {-1, "ids", "as", 
NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_GetResultMetas_result = {-1, "result", 
"aa{sv}", NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_GetResultMetas_in[] = 
{&_contacts_search_provider_dbus_arg_info_GetResultMetas_ids, NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_GetResultMetas_out[] = 
{&_contacts_search_provider_dbus_arg_info_GetResultMetas_result, NULL};
+static const GDBusMethodInfo _contacts_search_provider_dbus_method_info_GetResultMetas = {-1, 
"GetResultMetas", (GDBusArgInfo **) (&_contacts_search_provider_dbus_arg_info_GetResultMetas_in), 
(GDBusArgInfo **) (&_contacts_search_provider_dbus_arg_info_GetResultMetas_out), NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_ActivateResult_id = {-1, "id", "s", NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_ActivateResult_terms = {-1, "terms", "as", 
NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_ActivateResult_timestamp = {-1, 
"timestamp", "u", NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_ActivateResult_in[] = 
{&_contacts_search_provider_dbus_arg_info_ActivateResult_id, 
&_contacts_search_provider_dbus_arg_info_ActivateResult_terms, 
&_contacts_search_provider_dbus_arg_info_ActivateResult_timestamp, NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_ActivateResult_out[] = {NULL};
+static const GDBusMethodInfo _contacts_search_provider_dbus_method_info_ActivateResult = {-1, 
"ActivateResult", (GDBusArgInfo **) (&_contacts_search_provider_dbus_arg_info_ActivateResult_in), 
(GDBusArgInfo **) (&_contacts_search_provider_dbus_arg_info_ActivateResult_out), NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_LaunchSearch_terms = {-1, "terms", "as", 
NULL};
+static const GDBusArgInfo _contacts_search_provider_dbus_arg_info_LaunchSearch_timestamp = {-1, "timestamp", 
"u", NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_LaunchSearch_in[] = 
{&_contacts_search_provider_dbus_arg_info_LaunchSearch_terms, 
&_contacts_search_provider_dbus_arg_info_LaunchSearch_timestamp, NULL};
+static const GDBusArgInfo * const _contacts_search_provider_dbus_arg_info_LaunchSearch_out[] = {NULL};
+static const GDBusMethodInfo _contacts_search_provider_dbus_method_info_LaunchSearch = {-1, "LaunchSearch", 
(GDBusArgInfo **) (&_contacts_search_provider_dbus_arg_info_LaunchSearch_in), (GDBusArgInfo **) 
(&_contacts_search_provider_dbus_arg_info_LaunchSearch_out), NULL};
+static const GDBusMethodInfo * const _contacts_search_provider_dbus_method_info[] = 
{&_contacts_search_provider_dbus_method_info_GetInitialResultSet, 
&_contacts_search_provider_dbus_method_info_GetSubsearchResultSet, 
&_contacts_search_provider_dbus_method_info_GetResultMetas, 
&_contacts_search_provider_dbus_method_info_ActivateResult, 
&_contacts_search_provider_dbus_method_info_LaunchSearch, NULL};
+static const GDBusSignalInfo * const _contacts_search_provider_dbus_signal_info[] = {NULL};
+static const GDBusPropertyInfo * const _contacts_search_provider_dbus_property_info[] = {NULL};
+static const GDBusInterfaceInfo _contacts_search_provider_dbus_interface_info = {-1, 
"org.gnome.Shell.SearchProvider2", (GDBusMethodInfo **) (&_contacts_search_provider_dbus_method_info), 
(GDBusSignalInfo **) (&_contacts_search_provider_dbus_signal_info), (GDBusPropertyInfo **) 
(&_contacts_search_provider_dbus_property_info), NULL};
+static const GDBusInterfaceVTable _contacts_search_provider_dbus_interface_vtable = 
{contacts_search_provider_dbus_interface_method_call, contacts_search_provider_dbus_interface_get_property, 
contacts_search_provider_dbus_interface_set_property};
+
+static inline gpointer
+contacts_search_provider_get_instance_private (ContactsSearchProvider* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsSearchProvider_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 33 "../src/contacts-shell-search-provider.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 619 "contacts-shell-search-provider.c"
+}
+
+static const gchar**
+_vala_array_dup1 (const gchar** self,
+                  gint length)
+{
+#line 36 "../src/contacts-shell-search-provider.vala"
+       return g_memdup (self, length * sizeof (const gchar*));
+#line 628 "contacts-shell-search-provider.c"
+}
+
+static void
+_vala_array_add1 (const gchar** * array,
+                  gint* length,
+                  gint* size,
+                  const gchar* value)
+{
+#line 38 "../src/contacts-shell-search-provider.vala"
+       if ((*length) == (*size)) {
+#line 38 "../src/contacts-shell-search-provider.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 38 "../src/contacts-shell-search-provider.vala"
+               *array = g_renew (const gchar*, *array, (*size) + 1);
+#line 643 "contacts-shell-search-provider.c"
+       }
+#line 38 "../src/contacts-shell-search-provider.vala"
+       (*array)[(*length)++] = value;
+#line 38 "../src/contacts-shell-search-provider.vala"
+       (*array)[*length] = NULL;
+#line 649 "contacts-shell-search-provider.c"
+}
+
+ContactsSearchProvider*
+contacts_search_provider_construct (GType object_type,
+                                    ContactsSearchProviderApp* app)
+{
+       ContactsSearchProvider * self = NULL;
+       FolksIndividualAggregator* _tmp0_;
+       FolksIndividualAggregator* _tmp1_;
+       ContactsSearchProviderApp* _tmp2_;
+       gchar* _tmp3_;
+       gchar** _tmp4_;
+       gchar** _tmp5_;
+       gint _tmp5__length1;
+       GThemedIcon* _tmp6_;
+       GThemedIcon* _tmp7_;
+       GVariant* _tmp8_;
+       const gchar** matched_fields = NULL;
+       const gchar** _tmp9_;
+       gint _tmp9__length1;
+       gint matched_fields_length1;
+       gint _matched_fields_size_;
+       const gchar** _tmp12_;
+       gint _tmp12__length1;
+       FolksSimpleQuery* _tmp13_;
+#line 28 "../src/contacts-shell-search-provider.vala"
+       g_return_val_if_fail (app != NULL, NULL);
+#line 28 "../src/contacts-shell-search-provider.vala"
+       self = (ContactsSearchProvider*) g_object_new (object_type, NULL);
+#line 30 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = folks_individual_aggregator_dup ();
+#line 30 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (self->priv->aggregator);
+#line 30 "../src/contacts-shell-search-provider.vala"
+       self->priv->aggregator = _tmp0_;
+#line 31 "../src/contacts-shell-search-provider.vala"
+       _tmp1_ = self->priv->aggregator;
+#line 31 "../src/contacts-shell-search-provider.vala"
+       folks_individual_aggregator_prepare (_tmp1_, NULL, NULL);
+#line 33 "../src/contacts-shell-search-provider.vala"
+       _tmp2_ = _g_object_ref0 (app);
+#line 33 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (self->priv->app);
+#line 33 "../src/contacts-shell-search-provider.vala"
+       self->priv->app = _tmp2_;
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp3_ = g_strdup ("avatar-default-symbolic");
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp4_ = g_new0 (gchar*, 1 + 1);
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp4_[0] = _tmp3_;
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp5_ = _tmp4_;
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp5__length1 = 1;
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp6_ = (GThemedIcon*) g_themed_icon_new_from_names (_tmp5_, 1);
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp7_ = _tmp6_;
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp8_ = g_icon_serialize ((GIcon*) _tmp7_);
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _g_variant_unref0 (self->priv->serialized_fallback_icon);
+#line 34 "../src/contacts-shell-search-provider.vala"
+       self->priv->serialized_fallback_icon = _tmp8_;
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_tmp7_);
+#line 34 "../src/contacts-shell-search-provider.vala"
+       _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
+#line 36 "../src/contacts-shell-search-provider.vala"
+       _tmp9_ = (FOLKS_QUERY_MATCH_FIELDS_NAMES != NULL) ? _vala_array_dup1 (FOLKS_QUERY_MATCH_FIELDS_NAMES, 
G_N_ELEMENTS (FOLKS_QUERY_MATCH_FIELDS_NAMES)) : ((gpointer) FOLKS_QUERY_MATCH_FIELDS_NAMES);
+#line 36 "../src/contacts-shell-search-provider.vala"
+       _tmp9__length1 = G_N_ELEMENTS (FOLKS_QUERY_MATCH_FIELDS_NAMES);
+#line 36 "../src/contacts-shell-search-provider.vala"
+       matched_fields = _tmp9_;
+#line 36 "../src/contacts-shell-search-provider.vala"
+       matched_fields_length1 = _tmp9__length1;
+#line 36 "../src/contacts-shell-search-provider.vala"
+       _matched_fields_size_ = matched_fields_length1;
+#line 729 "contacts-shell-search-provider.c"
+       {
+               const gchar** field_collection = NULL;
+               gint field_collection_length1 = 0;
+               gint _field_collection_size_ = 0;
+               gint field_it = 0;
+#line 37 "../src/contacts-shell-search-provider.vala"
+               field_collection = FOLKS_QUERY_MATCH_FIELDS_ADDRESSES;
+#line 37 "../src/contacts-shell-search-provider.vala"
+               field_collection_length1 = G_N_ELEMENTS (FOLKS_QUERY_MATCH_FIELDS_ADDRESSES);
+#line 37 "../src/contacts-shell-search-provider.vala"
+               for (field_it = 0; field_it < field_collection_length1; field_it = field_it + 1) {
+#line 741 "contacts-shell-search-provider.c"
+                       const gchar* field = NULL;
+#line 37 "../src/contacts-shell-search-provider.vala"
+                       field = field_collection[field_it];
+#line 745 "contacts-shell-search-provider.c"
+                       {
+                               const gchar** _tmp10_;
+                               gint _tmp10__length1;
+                               const gchar* _tmp11_;
+#line 38 "../src/contacts-shell-search-provider.vala"
+                               _tmp10_ = matched_fields;
+#line 38 "../src/contacts-shell-search-provider.vala"
+                               _tmp10__length1 = matched_fields_length1;
+#line 38 "../src/contacts-shell-search-provider.vala"
+                               _tmp11_ = field;
+#line 38 "../src/contacts-shell-search-provider.vala"
+                               _vala_array_add1 (&matched_fields, &matched_fields_length1, 
&_matched_fields_size_, _tmp11_);
+#line 758 "contacts-shell-search-provider.c"
+                       }
+               }
+       }
+#line 39 "../src/contacts-shell-search-provider.vala"
+       _tmp12_ = matched_fields;
+#line 39 "../src/contacts-shell-search-provider.vala"
+       _tmp12__length1 = matched_fields_length1;
+#line 39 "../src/contacts-shell-search-provider.vala"
+       _tmp13_ = folks_simple_query_new ("", _tmp12_, _tmp12__length1);
+#line 39 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (self->priv->query);
+#line 39 "../src/contacts-shell-search-provider.vala"
+       self->priv->query = _tmp13_;
+#line 41 "../src/contacts-shell-search-provider.vala"
+       if (!contacts_ensure_eds_accounts (FALSE)) {
+#line 774 "contacts-shell-search-provider.c"
+               ContactsSearchProviderApp* _tmp14_;
+#line 42 "../src/contacts-shell-search-provider.vala"
+               _tmp14_ = self->priv->app;
+#line 42 "../src/contacts-shell-search-provider.vala"
+               g_application_quit ((GApplication*) _tmp14_);
+#line 780 "contacts-shell-search-provider.c"
+       }
+#line 28 "../src/contacts-shell-search-provider.vala"
+       matched_fields = (g_free (matched_fields), NULL);
+#line 28 "../src/contacts-shell-search-provider.vala"
+       return self;
+#line 786 "contacts-shell-search-provider.c"
+}
+
+ContactsSearchProvider*
+contacts_search_provider_new (ContactsSearchProviderApp* app)
+{
+#line 28 "../src/contacts-shell-search-provider.vala"
+       return contacts_search_provider_construct (CONTACTS_TYPE_SEARCH_PROVIDER, app);
+#line 794 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_GetInitialResultSet_data_free (gpointer _data)
+{
+       contacts_search_provider_GetInitialResultSetData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = (_vala_array_free (_data_->result, _data_->result_length1, (GDestroyNotify) g_free), 
NULL);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_slice_free (contacts_search_provider_GetInitialResultSetData, _data_);
+#line 808 "contacts-shell-search-provider.c"
+}
+
+void
+contacts_search_provider_GetInitialResultSet (ContactsSearchProvider* self,
+                                              gchar** terms,
+                                              gint terms_length1,
+                                              GAsyncReadyCallback _callback_,
+                                              gpointer _user_data_)
+{
+       contacts_search_provider_GetInitialResultSetData* _data_;
+       ContactsSearchProvider* _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_slice_new0 (contacts_search_provider_GetInitialResultSetData);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_search_provider_GetInitialResultSet_data_free);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->terms = terms;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->terms_length1 = terms_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetInitialResultSet_co (_data_);
+#line 836 "contacts-shell-search-provider.c"
+}
+
+gchar**
+contacts_search_provider_GetInitialResultSet_finish (ContactsSearchProvider* self,
+                                                     GAsyncResult* _res_,
+                                                     gint* result_length1,
+                                                     GError** error)
+{
+       gchar** result;
+       contacts_search_provider_GetInitialResultSetData* _data_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       if (NULL == _data_) {
+#line 22 "../src/contacts-shell-search-provider.vala"
+               return NULL;
+#line 853 "contacts-shell-search-provider.c"
+       }
+#line 22 "../src/contacts-shell-search-provider.vala"
+       result = _data_->result;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       *result_length1 = _data_->result_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = NULL;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 863 "contacts-shell-search-provider.c"
+}
+
+static Block1Data*
+block1_data_ref (Block1Data* _data1_)
+{
+#line 45 "../src/contacts-shell-search-provider.vala"
+       g_atomic_int_inc (&_data1_->_ref_count_);
+#line 45 "../src/contacts-shell-search-provider.vala"
+       return _data1_;
+#line 873 "contacts-shell-search-provider.c"
+}
+
+static void
+block1_data_unref (void * _userdata_)
+{
+       Block1Data* _data1_;
+       _data1_ = (Block1Data*) _userdata_;
+#line 45 "../src/contacts-shell-search-provider.vala"
+       if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
+#line 883 "contacts-shell-search-provider.c"
+               ContactsSearchProvider* self;
+#line 45 "../src/contacts-shell-search-provider.vala"
+               self = _data1_->self;
+#line 45 "../src/contacts-shell-search-provider.vala"
+               _g_object_unref0 (self);
+#line 45 "../src/contacts-shell-search-provider.vala"
+               g_slice_free (Block1Data, _data1_);
+#line 891 "contacts-shell-search-provider.c"
+       }
+}
+
+static void
+___lambda4_ (Block1Data* _data1_)
+{
+       ContactsSearchProvider* self;
+#line 48 "../src/contacts-shell-search-provider.vala"
+       self = _data1_->self;
+#line 49 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetInitialResultSet_co (_data1_->_async_data_);
+#line 903 "contacts-shell-search-provider.c"
+}
+
+static void
+____lambda4__g_object_notify (GObject* _sender,
+                              GParamSpec* pspec,
+                              gpointer self)
+{
+#line 48 "../src/contacts-shell-search-provider.vala"
+       ___lambda4_ (self);
+#line 913 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+___lambda5_ (Block1Data* _data1_)
+{
+       ContactsSearchProvider* self;
+       gboolean result = FALSE;
+#line 53 "../src/contacts-shell-search-provider.vala"
+       self = _data1_->self;
+#line 54 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetInitialResultSet_co (_data1_->_async_data_);
+#line 55 "../src/contacts-shell-search-provider.vala"
+       result = FALSE;
+#line 55 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 929 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+____lambda5__gsource_func (gpointer self)
+{
+       gboolean result;
+       result = ___lambda5_ (self);
+#line 53 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 939 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_GetInitialResultSet_ready (GObject* source_object,
+                                                    GAsyncResult* _res_,
+                                                    gpointer _user_data_)
+{
+       contacts_search_provider_GetInitialResultSetData* _data_;
+#line 61 "../src/contacts-shell-search-provider.vala"
+       _data_ = _user_data_;
+#line 61 "../src/contacts-shell-search-provider.vala"
+       _data_->_source_object_ = source_object;
+#line 61 "../src/contacts-shell-search-provider.vala"
+       _data_->_res_ = _res_;
+#line 61 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetInitialResultSet_co (_data_);
+#line 956 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+contacts_search_provider_GetInitialResultSet_co (contacts_search_provider_GetInitialResultSetData* _data_)
+{
+#line 45 "../src/contacts-shell-search-provider.vala"
+       switch (_data_->_state_) {
+#line 45 "../src/contacts-shell-search-provider.vala"
+               case 0:
+#line 966 "contacts-shell-search-provider.c"
+               goto _state_0;
+#line 45 "../src/contacts-shell-search-provider.vala"
+               case 1:
+#line 970 "contacts-shell-search-provider.c"
+               goto _state_1;
+#line 45 "../src/contacts-shell-search-provider.vala"
+               case 2:
+#line 974 "contacts-shell-search-provider.c"
+               goto _state_2;
+#line 45 "../src/contacts-shell-search-provider.vala"
+               case 3:
+#line 978 "contacts-shell-search-provider.c"
+               goto _state_3;
+#line 45 "../src/contacts-shell-search-provider.vala"
+               case 4:
+#line 982 "contacts-shell-search-provider.c"
+               goto _state_4;
+               default:
+#line 45 "../src/contacts-shell-search-provider.vala"
+               g_assert_not_reached ();
+#line 987 "contacts-shell-search-provider.c"
+       }
+       _state_0:
+#line 45 "../src/contacts-shell-search-provider.vala"
+       _data_->_data1_ = g_slice_new0 (Block1Data);
+#line 45 "../src/contacts-shell-search-provider.vala"
+       _data_->_data1_->_ref_count_ = 1;
+#line 45 "../src/contacts-shell-search-provider.vala"
+       _data_->_data1_->self = g_object_ref (_data_->self);
+#line 45 "../src/contacts-shell-search-provider.vala"
+       _data_->_data1_->_async_data_ = _data_;
+#line 47 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = _data_->self->priv->aggregator;
+#line 47 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp1_ = folks_individual_aggregator_get_is_quiescent (_data_->_tmp0_);
+#line 47 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp2_ = _data_->_tmp1_;
+#line 47 "../src/contacts-shell-search-provider.vala"
+       if (!_data_->_tmp2_) {
+#line 48 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp3_ = _data_->self->priv->aggregator;
+#line 48 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp4_ = g_signal_connect_data ((GObject*) _data_->_tmp3_, "notify::is-quiescent", 
(GCallback) ____lambda4__g_object_notify, block1_data_ref (_data_->_data1_), (GClosureNotify) 
block1_data_unref, 0);
+#line 48 "../src/contacts-shell-search-provider.vala"
+               _data_->id = _data_->_tmp4_;
+#line 53 "../src/contacts-shell-search-provider.vala"
+               _data_->timeout = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 1500, 
____lambda5__gsource_func, block1_data_ref (_data_->_data1_), block1_data_unref);
+#line 57 "../src/contacts-shell-search-provider.vala"
+               _data_->_state_ = 1;
+#line 57 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 1018 "contacts-shell-search-provider.c"
+               _state_1:
+               ;
+#line 58 "../src/contacts-shell-search-provider.vala"
+               g_source_remove (_data_->timeout);
+#line 59 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp5_ = _data_->self->priv->aggregator;
+#line 59 "../src/contacts-shell-search-provider.vala"
+               g_signal_handler_disconnect ((GObject*) _data_->_tmp5_, _data_->id);
+#line 61 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp6_ = 0;
+#line 61 "../src/contacts-shell-search-provider.vala"
+               _data_->_state_ = 2;
+#line 61 "../src/contacts-shell-search-provider.vala"
+               contacts_search_provider_do_search (_data_->self, _data_->terms, (gint) 
_data_->terms_length1, contacts_search_provider_GetInitialResultSet_ready, _data_);
+#line 61 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 1035 "contacts-shell-search-provider.c"
+               _state_2:
+#line 61 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp7_ = contacts_search_provider_do_search_finish (_data_->self, _data_->_res_, 
&_data_->_tmp6_, &_data_->_inner_error0_);
+#line 61 "../src/contacts-shell-search-provider.vala"
+               _data_->results = _data_->_tmp7_;
+#line 61 "../src/contacts-shell-search-provider.vala"
+               _data_->results_length1 = _data_->_tmp6_;
+#line 61 "../src/contacts-shell-search-provider.vala"
+               _data_->_results_size_ = _data_->results_length1;
+#line 61 "../src/contacts-shell-search-provider.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 61 "../src/contacts-shell-search-provider.vala"
+                       g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
+#line 61 "../src/contacts-shell-search-provider.vala"
+                       block1_data_unref (_data_->_data1_);
+#line 61 "../src/contacts-shell-search-provider.vala"
+                       _data_->_data1_ = NULL;
+#line 61 "../src/contacts-shell-search-provider.vala"
+                       g_object_unref (_data_->_async_result);
+#line 61 "../src/contacts-shell-search-provider.vala"
+                       return FALSE;
+#line 1057 "contacts-shell-search-provider.c"
+               }
+#line 62 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp8_ = _data_->results;
+#line 62 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp8__length1 = _data_->results_length1;
+#line 62 "../src/contacts-shell-search-provider.vala"
+               if (_data_->_tmp8__length1 == 0) {
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp10_ = 0;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_state_ = 3;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       contacts_search_provider_GetInitialResultSet (_data_->self, _data_->terms, (gint) 
_data_->terms_length1, contacts_search_provider_GetInitialResultSet_ready, _data_);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       return FALSE;
+#line 1073 "contacts-shell-search-provider.c"
+                       _state_3:
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp11_ = contacts_search_provider_GetInitialResultSet_finish (_data_->self, 
_data_->_res_, &_data_->_tmp10_, &_data_->_inner_error0_);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp9_ = _data_->_tmp11_;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp9__length1 = _data_->_tmp10_;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->__tmp9__size_ = _data_->_tmp9__length1;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 64 "../src/contacts-shell-search-provider.vala"
+                               g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                               _data_->results = (_vala_array_free (_data_->results, 
_data_->results_length1, (GDestroyNotify) g_free), NULL);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                               block1_data_unref (_data_->_data1_);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                               _data_->_data1_ = NULL;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                               g_object_unref (_data_->_async_result);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                               return FALSE;
+#line 1097 "contacts-shell-search-provider.c"
+                       }
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp12_ = _data_->_tmp9_;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp12__length1 = _data_->_tmp9__length1;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp9_ = NULL;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp9__length1 = 0;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp13_ = _data_->_tmp12_;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp13__length1 = _data_->_tmp12__length1;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->result_length1 = _data_->_tmp13__length1;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->result = _data_->_tmp13_;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp9_ = (_vala_array_free (_data_->_tmp9_, _data_->_tmp9__length1, 
(GDestroyNotify) g_free), NULL);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->results = (_vala_array_free (_data_->results, _data_->results_length1, 
(GDestroyNotify) g_free), NULL);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       block1_data_unref (_data_->_data1_);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       _data_->_data1_ = NULL;
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       if (_data_->_state_ != 0) {
+#line 64 "../src/contacts-shell-search-provider.vala"
+                               while (!g_task_get_completed (_data_->_async_result)) {
+#line 64 "../src/contacts-shell-search-provider.vala"
+                                       g_main_context_iteration (g_task_get_context (_data_->_async_result), 
TRUE);
+#line 1131 "contacts-shell-search-provider.c"
+                               }
+                       }
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       g_object_unref (_data_->_async_result);
+#line 64 "../src/contacts-shell-search-provider.vala"
+                       return FALSE;
+#line 1138 "contacts-shell-search-provider.c"
+               } else {
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp14_ = _data_->results;
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp14__length1 = _data_->results_length1;
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       _data_->result_length1 = _data_->_tmp14__length1;
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       _data_->result = _data_->_tmp14_;
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       block1_data_unref (_data_->_data1_);
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       _data_->_data1_ = NULL;
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       if (_data_->_state_ != 0) {
+#line 66 "../src/contacts-shell-search-provider.vala"
+                               while (!g_task_get_completed (_data_->_async_result)) {
+#line 66 "../src/contacts-shell-search-provider.vala"
+                                       g_main_context_iteration (g_task_get_context (_data_->_async_result), 
TRUE);
+#line 1160 "contacts-shell-search-provider.c"
+                               }
+                       }
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       g_object_unref (_data_->_async_result);
+#line 66 "../src/contacts-shell-search-provider.vala"
+                       return FALSE;
+#line 1167 "contacts-shell-search-provider.c"
+               }
+#line 47 "../src/contacts-shell-search-provider.vala"
+               _data_->results = (_vala_array_free (_data_->results, _data_->results_length1, 
(GDestroyNotify) g_free), NULL);
+#line 1171 "contacts-shell-search-provider.c"
+       } else {
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp16_ = 0;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_state_ = 4;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               contacts_search_provider_do_search (_data_->self, _data_->terms, (gint) 
_data_->terms_length1, contacts_search_provider_GetInitialResultSet_ready, _data_);
+#line 69 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 1181 "contacts-shell-search-provider.c"
+               _state_4:
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp17_ = contacts_search_provider_do_search_finish (_data_->self, _data_->_res_, 
&_data_->_tmp16_, &_data_->_inner_error0_);
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp15_ = _data_->_tmp17_;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp15__length1 = _data_->_tmp16_;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->__tmp15__size_ = _data_->_tmp15__length1;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 69 "../src/contacts-shell-search-provider.vala"
+                       g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
+#line 69 "../src/contacts-shell-search-provider.vala"
+                       block1_data_unref (_data_->_data1_);
+#line 69 "../src/contacts-shell-search-provider.vala"
+                       _data_->_data1_ = NULL;
+#line 69 "../src/contacts-shell-search-provider.vala"
+                       g_object_unref (_data_->_async_result);
+#line 69 "../src/contacts-shell-search-provider.vala"
+                       return FALSE;
+#line 1203 "contacts-shell-search-provider.c"
+               }
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp18_ = _data_->_tmp15_;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp18__length1 = _data_->_tmp15__length1;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp15_ = NULL;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp15__length1 = 0;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp19_ = _data_->_tmp18_;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp19__length1 = _data_->_tmp18__length1;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->result_length1 = _data_->_tmp19__length1;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->result = _data_->_tmp19_;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp15_ = (_vala_array_free (_data_->_tmp15_, _data_->_tmp15__length1, 
(GDestroyNotify) g_free), NULL);
+#line 69 "../src/contacts-shell-search-provider.vala"
+               block1_data_unref (_data_->_data1_);
+#line 69 "../src/contacts-shell-search-provider.vala"
+               _data_->_data1_ = NULL;
+#line 69 "../src/contacts-shell-search-provider.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 69 "../src/contacts-shell-search-provider.vala"
+               if (_data_->_state_ != 0) {
+#line 69 "../src/contacts-shell-search-provider.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 69 "../src/contacts-shell-search-provider.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 1235 "contacts-shell-search-provider.c"
+                       }
+               }
+#line 69 "../src/contacts-shell-search-provider.vala"
+               g_object_unref (_data_->_async_result);
+#line 69 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 1242 "contacts-shell-search-provider.c"
+       }
+#line 45 "../src/contacts-shell-search-provider.vala"
+       block1_data_unref (_data_->_data1_);
+#line 45 "../src/contacts-shell-search-provider.vala"
+       _data_->_data1_ = NULL;
+#line 1248 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_GetSubsearchResultSet_data_free (gpointer _data)
+{
+       contacts_search_provider_GetSubsearchResultSetData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = (_vala_array_free (_data_->result, _data_->result_length1, (GDestroyNotify) g_free), 
NULL);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_slice_free (contacts_search_provider_GetSubsearchResultSetData, _data_);
+#line 1262 "contacts-shell-search-provider.c"
+}
+
+void
+contacts_search_provider_GetSubsearchResultSet (ContactsSearchProvider* self,
+                                                gchar** previous_results,
+                                                gint previous_results_length1,
+                                                gchar** new_terms,
+                                                gint new_terms_length1,
+                                                GAsyncReadyCallback _callback_,
+                                                gpointer _user_data_)
+{
+       contacts_search_provider_GetSubsearchResultSetData* _data_;
+       ContactsSearchProvider* _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_slice_new0 (contacts_search_provider_GetSubsearchResultSetData);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_search_provider_GetSubsearchResultSet_data_free);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->previous_results = previous_results;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->previous_results_length1 = previous_results_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->new_terms = new_terms;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->new_terms_length1 = new_terms_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetSubsearchResultSet_co (_data_);
+#line 1296 "contacts-shell-search-provider.c"
+}
+
+gchar**
+contacts_search_provider_GetSubsearchResultSet_finish (ContactsSearchProvider* self,
+                                                       GAsyncResult* _res_,
+                                                       gint* result_length1,
+                                                       GError** error)
+{
+       gchar** result;
+       contacts_search_provider_GetSubsearchResultSetData* _data_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       if (NULL == _data_) {
+#line 22 "../src/contacts-shell-search-provider.vala"
+               return NULL;
+#line 1313 "contacts-shell-search-provider.c"
+       }
+#line 22 "../src/contacts-shell-search-provider.vala"
+       result = _data_->result;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       *result_length1 = _data_->result_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = NULL;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 1323 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_GetSubsearchResultSet_ready (GObject* source_object,
+                                                      GAsyncResult* _res_,
+                                                      gpointer _user_data_)
+{
+       contacts_search_provider_GetSubsearchResultSetData* _data_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_ = _user_data_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_source_object_ = source_object;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_res_ = _res_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetSubsearchResultSet_co (_data_);
+#line 1340 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+contacts_search_provider_GetSubsearchResultSet_co (contacts_search_provider_GetSubsearchResultSetData* 
_data_)
+{
+#line 73 "../src/contacts-shell-search-provider.vala"
+       switch (_data_->_state_) {
+#line 73 "../src/contacts-shell-search-provider.vala"
+               case 0:
+#line 1350 "contacts-shell-search-provider.c"
+               goto _state_0;
+#line 73 "../src/contacts-shell-search-provider.vala"
+               case 1:
+#line 1354 "contacts-shell-search-provider.c"
+               goto _state_1;
+               default:
+#line 73 "../src/contacts-shell-search-provider.vala"
+               g_assert_not_reached ();
+#line 1359 "contacts-shell-search-provider.c"
+       }
+       _state_0:
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp1_ = 0;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_state_ = 1;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetInitialResultSet (_data_->self, _data_->new_terms, (gint) 
_data_->new_terms_length1, contacts_search_provider_GetSubsearchResultSet_ready, _data_);
+#line 75 "../src/contacts-shell-search-provider.vala"
+       return FALSE;
+#line 1370 "contacts-shell-search-provider.c"
+       _state_1:
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp2_ = contacts_search_provider_GetInitialResultSet_finish (_data_->self, _data_->_res_, 
&_data_->_tmp1_, &_data_->_inner_error0_);
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = _data_->_tmp2_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0__length1 = _data_->_tmp1_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->__tmp0__size_ = _data_->_tmp0__length1;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 75 "../src/contacts-shell-search-provider.vala"
+               g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
+#line 75 "../src/contacts-shell-search-provider.vala"
+               g_object_unref (_data_->_async_result);
+#line 75 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 1388 "contacts-shell-search-provider.c"
+       }
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp3_ = _data_->_tmp0_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp3__length1 = _data_->_tmp0__length1;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = NULL;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0__length1 = 0;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp4_ = _data_->_tmp3_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp4__length1 = _data_->_tmp3__length1;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->result_length1 = _data_->_tmp4__length1;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->result = _data_->_tmp4_;
+#line 75 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = (_vala_array_free (_data_->_tmp0_, _data_->_tmp0__length1, (GDestroyNotify) g_free), 
NULL);
+#line 75 "../src/contacts-shell-search-provider.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 75 "../src/contacts-shell-search-provider.vala"
+       if (_data_->_state_ != 0) {
+#line 75 "../src/contacts-shell-search-provider.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 75 "../src/contacts-shell-search-provider.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 1416 "contacts-shell-search-provider.c"
+               }
+       }
+#line 75 "../src/contacts-shell-search-provider.vala"
+       g_object_unref (_data_->_async_result);
+#line 75 "../src/contacts-shell-search-provider.vala"
+       return FALSE;
+#line 1423 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_do_search_data_free (gpointer _data)
+{
+       ContactsSearchProviderDoSearchData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = (_vala_array_free (_data_->result, _data_->result_length1, (GDestroyNotify) g_free), 
NULL);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_slice_free (ContactsSearchProviderDoSearchData, _data_);
+#line 1437 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_do_search (ContactsSearchProvider* self,
+                                    gchar** terms,
+                                    gint terms_length1,
+                                    GAsyncReadyCallback _callback_,
+                                    gpointer _user_data_)
+{
+       ContactsSearchProviderDoSearchData* _data_;
+       ContactsSearchProvider* _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_slice_new0 (ContactsSearchProviderDoSearchData);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_search_provider_do_search_data_free);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->terms = terms;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->terms_length1 = terms_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_do_search_co (_data_);
+#line 1465 "contacts-shell-search-provider.c"
+}
+
+static gchar**
+contacts_search_provider_do_search_finish (ContactsSearchProvider* self,
+                                           GAsyncResult* _res_,
+                                           gint* result_length1,
+                                           GError** error)
+{
+       gchar** result;
+       ContactsSearchProviderDoSearchData* _data_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       if (NULL == _data_) {
+#line 22 "../src/contacts-shell-search-provider.vala"
+               return NULL;
+#line 1482 "contacts-shell-search-provider.c"
+       }
+#line 22 "../src/contacts-shell-search-provider.vala"
+       result = _data_->result;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       *result_length1 = _data_->result_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = NULL;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 1492 "contacts-shell-search-provider.c"
+}
+
+static gchar*
+_vala_g_strjoinv (const gchar* separator,
+                  gchar** str_array,
+                  gint str_array_length1)
+{
+       gboolean _tmp0_ = FALSE;
+       gchar* result = NULL;
+#line 1200 "glib-2.0.vapi"
+       if (separator == NULL) {
+#line 1201 "glib-2.0.vapi"
+               separator = "";
+#line 1506 "contacts-shell-search-provider.c"
+       }
+#line 1203 "glib-2.0.vapi"
+       if (str_array != NULL) {
+#line 1510 "contacts-shell-search-provider.c"
+               gboolean _tmp1_ = FALSE;
+#line 1203 "glib-2.0.vapi"
+               if (str_array_length1 > 0) {
+#line 1203 "glib-2.0.vapi"
+                       _tmp1_ = TRUE;
+#line 1516 "contacts-shell-search-provider.c"
+               } else {
+                       gboolean _tmp2_ = FALSE;
+#line 1203 "glib-2.0.vapi"
+                       if (str_array_length1 == -1) {
+#line 1521 "contacts-shell-search-provider.c"
+                               const gchar* _tmp3_;
+#line 1203 "glib-2.0.vapi"
+                               _tmp3_ = str_array[0];
+#line 1203 "glib-2.0.vapi"
+                               _tmp2_ = _tmp3_ != NULL;
+#line 1527 "contacts-shell-search-provider.c"
+                       } else {
+#line 1203 "glib-2.0.vapi"
+                               _tmp2_ = FALSE;
+#line 1531 "contacts-shell-search-provider.c"
+                       }
+#line 1203 "glib-2.0.vapi"
+                       _tmp1_ = _tmp2_;
+#line 1535 "contacts-shell-search-provider.c"
+               }
+#line 1203 "glib-2.0.vapi"
+               _tmp0_ = _tmp1_;
+#line 1539 "contacts-shell-search-provider.c"
+       } else {
+#line 1203 "glib-2.0.vapi"
+               _tmp0_ = FALSE;
+#line 1543 "contacts-shell-search-provider.c"
+       }
+#line 1203 "glib-2.0.vapi"
+       if (_tmp0_) {
+#line 1547 "contacts-shell-search-provider.c"
+               gint i = 0;
+               gsize len = 0UL;
+               gint _tmp16_;
+               gint _tmp17_;
+               const gchar* res = NULL;
+               void* _tmp18_;
+               void* ptr = NULL;
+               const gchar* _tmp19_;
+               const gchar* _tmp20_;
+               void* _tmp21_;
+               const gchar* _tmp31_;
+#line 1205 "glib-2.0.vapi"
+               len = (gsize) 1;
+#line 1561 "contacts-shell-search-provider.c"
+               {
+                       gboolean _tmp4_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                       i = 0;
+#line 1206 "glib-2.0.vapi"
+                       _tmp4_ = TRUE;
+#line 1206 "glib-2.0.vapi"
+                       while (TRUE) {
+#line 1570 "contacts-shell-search-provider.c"
+                               gboolean _tmp6_ = FALSE;
+                               gboolean _tmp7_ = FALSE;
+                               gint _tmp10_ = 0;
+                               const gchar* _tmp11_;
+#line 1206 "glib-2.0.vapi"
+                               if (!_tmp4_) {
+#line 1577 "contacts-shell-search-provider.c"
+                                       gint _tmp5_;
+#line 1206 "glib-2.0.vapi"
+                                       _tmp5_ = i;
+#line 1206 "glib-2.0.vapi"
+                                       i = _tmp5_ + 1;
+#line 1583 "contacts-shell-search-provider.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               _tmp4_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                               if (str_array_length1 != -1) {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp7_ = i < str_array_length1;
+#line 1591 "contacts-shell-search-provider.c"
+                               } else {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp7_ = FALSE;
+#line 1595 "contacts-shell-search-provider.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               if (_tmp7_) {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp6_ = TRUE;
+#line 1601 "contacts-shell-search-provider.c"
+                               } else {
+                                       gboolean _tmp8_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                                       if (str_array_length1 == -1) {
+#line 1606 "contacts-shell-search-provider.c"
+                                               const gchar* _tmp9_;
+#line 1206 "glib-2.0.vapi"
+                                               _tmp9_ = str_array[i];
+#line 1206 "glib-2.0.vapi"
+                                               _tmp8_ = _tmp9_ != NULL;
+#line 1612 "contacts-shell-search-provider.c"
+                                       } else {
+#line 1206 "glib-2.0.vapi"
+                                               _tmp8_ = FALSE;
+#line 1616 "contacts-shell-search-provider.c"
+                                       }
+#line 1206 "glib-2.0.vapi"
+                                       _tmp6_ = _tmp8_;
+#line 1620 "contacts-shell-search-provider.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               if (!_tmp6_) {
+#line 1206 "glib-2.0.vapi"
+                                       break;
+#line 1626 "contacts-shell-search-provider.c"
+                               }
+#line 1207 "glib-2.0.vapi"
+                               _tmp11_ = str_array[i];
+#line 1207 "glib-2.0.vapi"
+                               if (_tmp11_ != NULL) {
+#line 1632 "contacts-shell-search-provider.c"
+                                       const gchar* _tmp12_;
+                                       gint _tmp13_;
+                                       gint _tmp14_;
+#line 1207 "glib-2.0.vapi"
+                                       _tmp12_ = str_array[i];
+#line 1207 "glib-2.0.vapi"
+                                       _tmp13_ = strlen ((const gchar*) _tmp12_);
+#line 1207 "glib-2.0.vapi"
+                                       _tmp14_ = _tmp13_;
+#line 1207 "glib-2.0.vapi"
+                                       _tmp10_ = _tmp14_;
+#line 1644 "contacts-shell-search-provider.c"
+                               } else {
+#line 1207 "glib-2.0.vapi"
+                                       _tmp10_ = 0;
+#line 1648 "contacts-shell-search-provider.c"
+                               }
+#line 1207 "glib-2.0.vapi"
+                               len += (gsize) _tmp10_;
+#line 1652 "contacts-shell-search-provider.c"
+                       }
+               }
+#line 1209 "glib-2.0.vapi"
+               if (i == 0) {
+#line 1657 "contacts-shell-search-provider.c"
+                       gchar* _tmp15_;
+#line 1210 "glib-2.0.vapi"
+                       _tmp15_ = g_strdup ("");
+#line 1210 "glib-2.0.vapi"
+                       result = _tmp15_;
+#line 1210 "glib-2.0.vapi"
+                       return result;
+#line 1665 "contacts-shell-search-provider.c"
+               }
+#line 1212 "glib-2.0.vapi"
+               str_array_length1 = i;
+#line 1213 "glib-2.0.vapi"
+               _tmp16_ = strlen ((const gchar*) separator);
+#line 1213 "glib-2.0.vapi"
+               _tmp17_ = _tmp16_;
+#line 1213 "glib-2.0.vapi"
+               len += (gsize) (_tmp17_ * (i - 1));
+#line 1215 "glib-2.0.vapi"
+               _tmp18_ = g_malloc (len);
+#line 1215 "glib-2.0.vapi"
+               res = _tmp18_;
+#line 1216 "glib-2.0.vapi"
+               _tmp19_ = res;
+#line 1216 "glib-2.0.vapi"
+               _tmp20_ = str_array[0];
+#line 1216 "glib-2.0.vapi"
+               _tmp21_ = g_stpcpy ((void*) _tmp19_, (const gchar*) _tmp20_);
+#line 1216 "glib-2.0.vapi"
+               ptr = _tmp21_;
+#line 1687 "contacts-shell-search-provider.c"
+               {
+                       gboolean _tmp22_ = FALSE;
+#line 1217 "glib-2.0.vapi"
+                       i = 1;
+#line 1217 "glib-2.0.vapi"
+                       _tmp22_ = TRUE;
+#line 1217 "glib-2.0.vapi"
+                       while (TRUE) {
+#line 1696 "contacts-shell-search-provider.c"
+                               void* _tmp24_;
+                               void* _tmp25_;
+                               const gchar* _tmp26_ = NULL;
+                               const gchar* _tmp27_;
+                               void* _tmp29_;
+                               void* _tmp30_;
+#line 1217 "glib-2.0.vapi"
+                               if (!_tmp22_) {
+#line 1705 "contacts-shell-search-provider.c"
+                                       gint _tmp23_;
+#line 1217 "glib-2.0.vapi"
+                                       _tmp23_ = i;
+#line 1217 "glib-2.0.vapi"
+                                       i = _tmp23_ + 1;
+#line 1711 "contacts-shell-search-provider.c"
+                               }
+#line 1217 "glib-2.0.vapi"
+                               _tmp22_ = FALSE;
+#line 1217 "glib-2.0.vapi"
+                               if (!(i < str_array_length1)) {
+#line 1217 "glib-2.0.vapi"
+                                       break;
+#line 1719 "contacts-shell-search-provider.c"
+                               }
+#line 1218 "glib-2.0.vapi"
+                               _tmp24_ = ptr;
+#line 1218 "glib-2.0.vapi"
+                               _tmp25_ = g_stpcpy (_tmp24_, (const gchar*) separator);
+#line 1218 "glib-2.0.vapi"
+                               ptr = _tmp25_;
+#line 1219 "glib-2.0.vapi"
+                               _tmp27_ = str_array[i];
+#line 1219 "glib-2.0.vapi"
+                               if (_tmp27_ != NULL) {
+#line 1731 "contacts-shell-search-provider.c"
+                                       const gchar* _tmp28_;
+#line 1219 "glib-2.0.vapi"
+                                       _tmp28_ = str_array[i];
+#line 1219 "glib-2.0.vapi"
+                                       _tmp26_ = (const gchar*) _tmp28_;
+#line 1737 "contacts-shell-search-provider.c"
+                               } else {
+#line 1219 "glib-2.0.vapi"
+                                       _tmp26_ = "";
+#line 1741 "contacts-shell-search-provider.c"
+                               }
+#line 1219 "glib-2.0.vapi"
+                               _tmp29_ = ptr;
+#line 1219 "glib-2.0.vapi"
+                               _tmp30_ = g_stpcpy (_tmp29_, _tmp26_);
+#line 1219 "glib-2.0.vapi"
+                               ptr = _tmp30_;
+#line 1749 "contacts-shell-search-provider.c"
+                       }
+               }
+#line 1222 "glib-2.0.vapi"
+               _tmp31_ = res;
+#line 1222 "glib-2.0.vapi"
+               res = NULL;
+#line 1222 "glib-2.0.vapi"
+               result = (gchar*) _tmp31_;
+#line 1222 "glib-2.0.vapi"
+               return result;
+#line 1760 "contacts-shell-search-provider.c"
+       } else {
+               gchar* _tmp32_;
+#line 1224 "glib-2.0.vapi"
+               _tmp32_ = g_strdup ("");
+#line 1224 "glib-2.0.vapi"
+               result = _tmp32_;
+#line 1224 "glib-2.0.vapi"
+               return result;
+#line 1769 "contacts-shell-search-provider.c"
+       }
+}
+
+static void
+contacts_search_provider_do_search_ready (GObject* source_object,
+                                          GAsyncResult* _res_,
+                                          gpointer _user_data_)
+{
+       ContactsSearchProviderDoSearchData* _data_;
+#line 85 "../src/contacts-shell-search-provider.vala"
+       _data_ = _user_data_;
+#line 85 "../src/contacts-shell-search-provider.vala"
+       _data_->_source_object_ = source_object;
+#line 85 "../src/contacts-shell-search-provider.vala"
+       _data_->_res_ = _res_;
+#line 85 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_do_search_co (_data_);
+#line 1787 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+contacts_search_provider_do_search_co (ContactsSearchProviderDoSearchData* _data_)
+{
+#line 78 "../src/contacts-shell-search-provider.vala"
+       switch (_data_->_state_) {
+#line 78 "../src/contacts-shell-search-provider.vala"
+               case 0:
+#line 1797 "contacts-shell-search-provider.c"
+               goto _state_0;
+#line 78 "../src/contacts-shell-search-provider.vala"
+               case 1:
+#line 1801 "contacts-shell-search-provider.c"
+               goto _state_1;
+               default:
+#line 78 "../src/contacts-shell-search-provider.vala"
+               g_assert_not_reached ();
+#line 1806 "contacts-shell-search-provider.c"
+       }
+       _state_0:
+#line 79 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = _data_->self->priv->app;
+#line 79 "../src/contacts-shell-search-provider.vala"
+       g_application_hold ((GApplication*) _data_->_tmp0_);
+#line 82 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp1_ = _data_->self->priv->query;
+#line 82 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp2_ = _vala_g_strjoinv (" ", _data_->terms, (gint) _data_->terms_length1);
+#line 82 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp3_ = _data_->_tmp2_;
+#line 82 "../src/contacts-shell-search-provider.vala"
+       folks_simple_query_set_query_string (_data_->_tmp1_, _data_->_tmp3_);
+#line 82 "../src/contacts-shell-search-provider.vala"
+       _g_free0 (_data_->_tmp3_);
+#line 83 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp4_ = _data_->self->priv->aggregator;
+#line 83 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp5_ = _data_->self->priv->query;
+#line 83 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp6_ = folks_search_view_new (_data_->_tmp4_, (FolksQuery*) _data_->_tmp5_);
+#line 83 "../src/contacts-shell-search-provider.vala"
+       _data_->search_view = _data_->_tmp6_;
+#line 1831 "contacts-shell-search-provider.c"
+       {
+#line 85 "../src/contacts-shell-search-provider.vala"
+               _data_->_state_ = 1;
+#line 85 "../src/contacts-shell-search-provider.vala"
+               folks_search_view_prepare (_data_->search_view, contacts_search_provider_do_search_ready, 
_data_);
+#line 85 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 1839 "contacts-shell-search-provider.c"
+               _state_1:
+#line 85 "../src/contacts-shell-search-provider.vala"
+               folks_search_view_prepare_finish (_data_->search_view, _data_->_res_, 
&_data_->_inner_error0_);
+#line 85 "../src/contacts-shell-search-provider.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 1845 "contacts-shell-search-provider.c"
+                       goto __catch0_g_error;
+               }
+       }
+       goto __finally0;
+       __catch0_g_error:
+       {
+#line 84 "../src/contacts-shell-search-provider.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 84 "../src/contacts-shell-search-provider.vala"
+               _data_->_inner_error0_ = NULL;
+#line 87 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp7_ = _data_->e->message;
+#line 87 "../src/contacts-shell-search-provider.vala"
+               g_error ("contacts-shell-search-provider.vala:87: Couldn't load SearchView: %s", 
_data_->_tmp7_);
+#line 84 "../src/contacts-shell-search-provider.vala"
+               _g_error_free0 (_data_->e);
+#line 1862 "contacts-shell-search-provider.c"
+       }
+       __finally0:
+#line 84 "../src/contacts-shell-search-provider.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 84 "../src/contacts-shell-search-provider.vala"
+               g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
+#line 84 "../src/contacts-shell-search-provider.vala"
+               _g_object_unref0 (_data_->search_view);
+#line 84 "../src/contacts-shell-search-provider.vala"
+               g_object_unref (_data_->_async_result);
+#line 84 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 1875 "contacts-shell-search-provider.c"
+       }
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp8_ = folks_search_view_get_individuals (_data_->search_view);
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp9_ = _data_->_tmp8_;
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp10_ = gee_collection_get_size ((GeeCollection*) _data_->_tmp9_);
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp11_ = _data_->_tmp10_;
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp12_ = g_new0 (gchar*, _data_->_tmp11_ + 1);
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->results = _data_->_tmp12_;
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->results_length1 = _data_->_tmp11_;
+#line 89 "../src/contacts-shell-search-provider.vala"
+       _data_->_results_size_ = _data_->results_length1;
+#line 90 "../src/contacts-shell-search-provider.vala"
+       _data_->i = 0;
+#line 1895 "contacts-shell-search-provider.c"
+       {
+#line 91 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp13_ = folks_search_view_get_individuals (_data_->search_view);
+#line 91 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp14_ = _data_->_tmp13_;
+#line 91 "../src/contacts-shell-search-provider.vala"
+               _data_->_tmp15_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp14_);
+#line 91 "../src/contacts-shell-search-provider.vala"
+               _data_->_individual_it = _data_->_tmp15_;
+#line 91 "../src/contacts-shell-search-provider.vala"
+               while (TRUE) {
+#line 91 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp16_ = _data_->_individual_it;
+#line 91 "../src/contacts-shell-search-provider.vala"
+                       if (!gee_iterator_next (_data_->_tmp16_)) {
+#line 91 "../src/contacts-shell-search-provider.vala"
+                               break;
+#line 1913 "contacts-shell-search-provider.c"
+                       }
+#line 91 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp17_ = _data_->_individual_it;
+#line 91 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp18_ = gee_iterator_get (_data_->_tmp17_);
+#line 91 "../src/contacts-shell-search-provider.vala"
+                       _data_->individual = (FolksIndividual*) _data_->_tmp18_;
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp19_ = _data_->results;
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp19__length1 = _data_->results_length1;
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp20_ = _data_->individual;
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp21_ = folks_individual_get_id (_data_->_tmp20_);
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp22_ = _data_->_tmp21_;
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp23_ = g_strdup (_data_->_tmp22_);
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _g_free0 (_data_->_tmp19_[_data_->i]);
+#line 92 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp19_[_data_->i] = _data_->_tmp23_;
+#line 93 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp24_ = _data_->i;
+#line 93 "../src/contacts-shell-search-provider.vala"
+                       _data_->i = _data_->_tmp24_ + 1;
+#line 91 "../src/contacts-shell-search-provider.vala"
+                       _g_object_unref0 (_data_->individual);
+#line 1943 "contacts-shell-search-provider.c"
+               }
+#line 91 "../src/contacts-shell-search-provider.vala"
+               _g_object_unref0 (_data_->_individual_it);
+#line 1947 "contacts-shell-search-provider.c"
+       }
+#line 96 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp25_ = _data_->self->priv->app;
+#line 96 "../src/contacts-shell-search-provider.vala"
+       g_application_release ((GApplication*) _data_->_tmp25_);
+#line 97 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp26_ = _data_->results;
+#line 97 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp26__length1 = _data_->results_length1;
+#line 97 "../src/contacts-shell-search-provider.vala"
+       _data_->result_length1 = _data_->_tmp26__length1;
+#line 97 "../src/contacts-shell-search-provider.vala"
+       _data_->result = _data_->_tmp26_;
+#line 97 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_data_->search_view);
+#line 97 "../src/contacts-shell-search-provider.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 97 "../src/contacts-shell-search-provider.vala"
+       if (_data_->_state_ != 0) {
+#line 97 "../src/contacts-shell-search-provider.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 97 "../src/contacts-shell-search-provider.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 1971 "contacts-shell-search-provider.c"
+               }
+       }
+#line 97 "../src/contacts-shell-search-provider.vala"
+       g_object_unref (_data_->_async_result);
+#line 97 "../src/contacts-shell-search-provider.vala"
+       return FALSE;
+#line 1978 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_GetResultMetas_data_free (gpointer _data)
+{
+       contacts_search_provider_GetResultMetasData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = (_vala_array_free (_data_->result, _data_->result_length1, (GDestroyNotify) 
g_hash_table_unref), NULL);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_slice_free (contacts_search_provider_GetResultMetasData, _data_);
+#line 1992 "contacts-shell-search-provider.c"
+}
+
+void
+contacts_search_provider_GetResultMetas (ContactsSearchProvider* self,
+                                         gchar** ids,
+                                         gint ids_length1,
+                                         GAsyncReadyCallback _callback_,
+                                         gpointer _user_data_)
+{
+       contacts_search_provider_GetResultMetasData* _data_;
+       ContactsSearchProvider* _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_slice_new0 (contacts_search_provider_GetResultMetasData);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_search_provider_GetResultMetas_data_free);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->ids = ids;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->ids_length1 = ids_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetResultMetas_co (_data_);
+#line 2020 "contacts-shell-search-provider.c"
+}
+
+GHashTable**
+contacts_search_provider_GetResultMetas_finish (ContactsSearchProvider* self,
+                                                GAsyncResult* _res_,
+                                                gint* result_length1,
+                                                GError** error)
+{
+       GHashTable** result;
+       contacts_search_provider_GetResultMetasData* _data_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       if (NULL == _data_) {
+#line 22 "../src/contacts-shell-search-provider.vala"
+               return NULL;
+#line 2037 "contacts-shell-search-provider.c"
+       }
+#line 22 "../src/contacts-shell-search-provider.vala"
+       result = _data_->result;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       *result_length1 = _data_->result_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = NULL;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 2047 "contacts-shell-search-provider.c"
+}
+
+static gchar**
+_vala_array_dup2 (gchar** self,
+                  gint length)
+{
+       gchar** result;
+       gint i;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       result = g_new0 (gchar*, length + 1);
+#line 101 "../src/contacts-shell-search-provider.vala"
+       for (i = 0; i < length; i++) {
+#line 2060 "contacts-shell-search-provider.c"
+               gchar* _tmp0_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+               _tmp0_ = g_strdup (self[i]);
+#line 101 "../src/contacts-shell-search-provider.vala"
+               result[i] = _tmp0_;
+#line 2066 "contacts-shell-search-provider.c"
+       }
+#line 101 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 2070 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_GetResultMetas_ready (GObject* source_object,
+                                               GAsyncResult* _res_,
+                                               gpointer _user_data_)
+{
+       contacts_search_provider_GetResultMetasData* _data_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_ = _user_data_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_source_object_ = source_object;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_res_ = _res_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_GetResultMetas_co (_data_);
+#line 2087 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+contacts_search_provider_GetResultMetas_co (contacts_search_provider_GetResultMetasData* _data_)
+{
+#line 100 "../src/contacts-shell-search-provider.vala"
+       switch (_data_->_state_) {
+#line 100 "../src/contacts-shell-search-provider.vala"
+               case 0:
+#line 2097 "contacts-shell-search-provider.c"
+               goto _state_0;
+#line 100 "../src/contacts-shell-search-provider.vala"
+               case 1:
+#line 2101 "contacts-shell-search-provider.c"
+               goto _state_1;
+               default:
+#line 100 "../src/contacts-shell-search-provider.vala"
+               g_assert_not_reached ();
+#line 2106 "contacts-shell-search-provider.c"
+       }
+       _state_0:
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp1_ = (_data_->ids != NULL) ? _vala_array_dup2 (_data_->ids, _data_->ids_length1) : 
((gpointer) _data_->ids);
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp1__length1 = _data_->ids_length1;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp2_ = 0;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_state_ = 1;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_get_metas (_data_->self, _data_->_tmp1_, (gint) _data_->_tmp1__length1, 
contacts_search_provider_GetResultMetas_ready, _data_);
+#line 101 "../src/contacts-shell-search-provider.vala"
+       return FALSE;
+#line 2121 "contacts-shell-search-provider.c"
+       _state_1:
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp3_ = contacts_search_provider_get_metas_finish (_data_->self, _data_->_res_, 
&_data_->_tmp2_, &_data_->_inner_error0_);
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = _data_->_tmp3_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0__length1 = _data_->_tmp2_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->__tmp0__size_ = _data_->_tmp0__length1;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 101 "../src/contacts-shell-search-provider.vala"
+               g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
+#line 101 "../src/contacts-shell-search-provider.vala"
+               g_object_unref (_data_->_async_result);
+#line 101 "../src/contacts-shell-search-provider.vala"
+               return FALSE;
+#line 2139 "contacts-shell-search-provider.c"
+       }
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp4_ = _data_->_tmp0_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp4__length1 = _data_->_tmp0__length1;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = NULL;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0__length1 = 0;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp5_ = _data_->_tmp4_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp5__length1 = _data_->_tmp4__length1;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->result_length1 = _data_->_tmp5__length1;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->result = _data_->_tmp5_;
+#line 101 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = (_vala_array_free (_data_->_tmp0_, _data_->_tmp0__length1, (GDestroyNotify) 
g_hash_table_unref), NULL);
+#line 101 "../src/contacts-shell-search-provider.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 101 "../src/contacts-shell-search-provider.vala"
+       if (_data_->_state_ != 0) {
+#line 101 "../src/contacts-shell-search-provider.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 101 "../src/contacts-shell-search-provider.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2167 "contacts-shell-search-provider.c"
+               }
+       }
+#line 101 "../src/contacts-shell-search-provider.vala"
+       g_object_unref (_data_->_async_result);
+#line 101 "../src/contacts-shell-search-provider.vala"
+       return FALSE;
+#line 2174 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_get_metas_data_free (gpointer _data)
+{
+       ContactsSearchProviderGetMetasData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->ids = (_vala_array_free (_data_->ids, _data_->ids_length1, (GDestroyNotify) g_free), NULL);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = (_vala_array_free (_data_->result, _data_->result_length1, (GDestroyNotify) 
g_hash_table_unref), NULL);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_slice_free (ContactsSearchProviderGetMetasData, _data_);
+#line 2190 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_get_metas (ContactsSearchProvider* self,
+                                    gchar** ids,
+                                    gint ids_length1,
+                                    GAsyncReadyCallback _callback_,
+                                    gpointer _user_data_)
+{
+       ContactsSearchProviderGetMetasData* _data_;
+       ContactsSearchProvider* _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_slice_new0 (ContactsSearchProviderGetMetasData);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_search_provider_get_metas_data_free);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->ids = (_vala_array_free (_data_->ids, _data_->ids_length1, (GDestroyNotify) g_free), NULL);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->ids = ids;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->ids_length1 = ids_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_get_metas_co (_data_);
+#line 2220 "contacts-shell-search-provider.c"
+}
+
+static GHashTable**
+contacts_search_provider_get_metas_finish (ContactsSearchProvider* self,
+                                           GAsyncResult* _res_,
+                                           gint* result_length1,
+                                           GError** error)
+{
+       GHashTable** result;
+       ContactsSearchProviderGetMetasData* _data_;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), error);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       if (NULL == _data_) {
+#line 22 "../src/contacts-shell-search-provider.vala"
+               return NULL;
+#line 2237 "contacts-shell-search-provider.c"
+       }
+#line 22 "../src/contacts-shell-search-provider.vala"
+       result = _data_->result;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       *result_length1 = _data_->result_length1;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       _data_->result = NULL;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 2247 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_get_metas_ready (GObject* source_object,
+                                          GAsyncResult* _res_,
+                                          gpointer _user_data_)
+{
+       ContactsSearchProviderGetMetasData* _data_;
+#line 111 "../src/contacts-shell-search-provider.vala"
+       _data_ = _user_data_;
+#line 111 "../src/contacts-shell-search-provider.vala"
+       _data_->_source_object_ = source_object;
+#line 111 "../src/contacts-shell-search-provider.vala"
+       _data_->_res_ = _res_;
+#line 111 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_get_metas_co (_data_);
+#line 2264 "contacts-shell-search-provider.c"
+}
+
+static void
+_g_free0_ (gpointer var)
+{
+#line 118 "../src/contacts-shell-search-provider.vala"
+       var = (g_free (var), NULL);
+#line 2272 "contacts-shell-search-provider.c"
+}
+
+static void
+_g_variant_unref0_ (gpointer var)
+{
+#line 118 "../src/contacts-shell-search-provider.vala"
+       (var == NULL) ? NULL : (var = (g_variant_unref (var), NULL));
+#line 2280 "contacts-shell-search-provider.c"
+}
+
+static gpointer
+_g_variant_ref0 (gpointer self)
+{
+#line 121 "../src/contacts-shell-search-provider.vala"
+       return self ? g_variant_ref (self) : NULL;
+#line 2288 "contacts-shell-search-provider.c"
+}
+
+static GVariant*
+_variant_new1 (const gchar* value)
+{
+#line 137 "../src/contacts-shell-search-provider.vala"
+       return g_variant_ref_sink (g_variant_new_string (value));
+#line 2296 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+contacts_search_provider_get_metas_co (ContactsSearchProviderGetMetasData* _data_)
+{
+#line 104 "../src/contacts-shell-search-provider.vala"
+       switch (_data_->_state_) {
+#line 104 "../src/contacts-shell-search-provider.vala"
+               case 0:
+#line 2306 "contacts-shell-search-provider.c"
+               goto _state_0;
+#line 104 "../src/contacts-shell-search-provider.vala"
+               case 1:
+#line 2310 "contacts-shell-search-provider.c"
+               goto _state_1;
+               default:
+#line 104 "../src/contacts-shell-search-provider.vala"
+               g_assert_not_reached ();
+#line 2315 "contacts-shell-search-provider.c"
+       }
+       _state_0:
+#line 105 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp0_ = _data_->self->priv->app;
+#line 105 "../src/contacts-shell-search-provider.vala"
+       g_application_hold ((GApplication*) _data_->_tmp0_);
+#line 107 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp1_ = gee_array_list_new (G_TYPE_HASH_TABLE, (GBoxedCopyFunc) g_hash_table_ref, 
(GDestroyNotify) g_hash_table_unref, NULL, NULL, NULL);
+#line 107 "../src/contacts-shell-search-provider.vala"
+       _data_->results = _data_->_tmp1_;
+#line 2326 "contacts-shell-search-provider.c"
+       {
+#line 108 "../src/contacts-shell-search-provider.vala"
+               _data_->id_collection_length1 = 0;
+#line 108 "../src/contacts-shell-search-provider.vala"
+               _data_->_id_collection_size_ = 0;
+#line 108 "../src/contacts-shell-search-provider.vala"
+               _data_->id_collection = _data_->ids;
+#line 108 "../src/contacts-shell-search-provider.vala"
+               _data_->id_collection_length1 = _data_->ids_length1;
+#line 108 "../src/contacts-shell-search-provider.vala"
+               for (_data_->id_it = 0; _data_->id_it < _data_->id_collection_length1; _data_->id_it = 
_data_->id_it + 1) {
+#line 108 "../src/contacts-shell-search-provider.vala"
+                       _data_->_tmp2_ = g_strdup (_data_->id_collection[_data_->id_it]);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                       _data_->id = _data_->_tmp2_;
+#line 2342 "contacts-shell-search-provider.c"
+                       {
+#line 109 "../src/contacts-shell-search-provider.vala"
+                               _data_->indiv = NULL;
+#line 2346 "contacts-shell-search-provider.c"
+                               {
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp4_ = _data_->self->priv->aggregator;
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp5_ = _data_->id;
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_state_ = 1;
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       folks_individual_aggregator_look_up_individual (_data_->_tmp4_, 
_data_->_tmp5_, contacts_search_provider_get_metas_ready, _data_);
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       return FALSE;
+#line 2358 "contacts-shell-search-provider.c"
+                                       _state_1:
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp6_ = 
folks_individual_aggregator_look_up_individual_finish (_data_->_tmp4_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp3_ = _data_->_tmp6_;
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 2366 "contacts-shell-search-provider.c"
+                                               goto __catch1_g_error;
+                                       }
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp7_ = _data_->_tmp3_;
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp3_ = NULL;
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _g_object_unref0 (_data_->indiv);
+#line 111 "../src/contacts-shell-search-provider.vala"
+                                       _data_->indiv = _data_->_tmp7_;
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       _g_object_unref0 (_data_->_tmp3_);
+#line 2379 "contacts-shell-search-provider.c"
+                               }
+                               goto __finally1;
+                               __catch1_g_error:
+                               {
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       _data_->e = _data_->_inner_error0_;
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_inner_error0_ = NULL;
+#line 113 "../src/contacts-shell-search-provider.vala"
+                                       _g_error_free0 (_data_->e);
+#line 113 "../src/contacts-shell-search-provider.vala"
+                                       _g_object_unref0 (_data_->indiv);
+#line 113 "../src/contacts-shell-search-provider.vala"
+                                       _g_free0 (_data_->id);
+#line 113 "../src/contacts-shell-search-provider.vala"
+                                       continue;
+#line 2396 "contacts-shell-search-provider.c"
+                               }
+                               __finally1:
+#line 110 "../src/contacts-shell-search-provider.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       g_task_return_error (_data_->_async_result, _data_->_inner_error0_);
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       _g_object_unref0 (_data_->indiv);
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       _g_free0 (_data_->id);
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       _g_object_unref0 (_data_->results);
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       _data_->ids = (_vala_array_free (_data_->ids, _data_->ids_length1, 
(GDestroyNotify) g_free), NULL);
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       g_object_unref (_data_->_async_result);
+#line 110 "../src/contacts-shell-search-provider.vala"
+                                       return FALSE;
+#line 2415 "contacts-shell-search-provider.c"
+                               }
+#line 115 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp8_ = _data_->indiv;
+#line 115 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp8_ == NULL) {
+#line 116 "../src/contacts-shell-search-provider.vala"
+                                       _g_object_unref0 (_data_->indiv);
+#line 116 "../src/contacts-shell-search-provider.vala"
+                                       _g_free0 (_data_->id);
+#line 116 "../src/contacts-shell-search-provider.vala"
+                                       continue;
+#line 2427 "contacts-shell-search-provider.c"
+                               }
+#line 118 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp9_ = g_str_hash;
+#line 118 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp10_ = g_str_equal;
+#line 118 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp11_ = g_hash_table_new_full (_data_->_tmp9_, _data_->_tmp10_, 
_g_free0_, _g_variant_unref0_);
+#line 118 "../src/contacts-shell-search-provider.vala"
+                               _data_->meta = _data_->_tmp11_;
+#line 119 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp12_ = _data_->meta;
+#line 119 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp13_ = g_strdup ("id");
+#line 119 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp14_ = _data_->id;
+#line 119 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp15_ = g_variant_new_string (_data_->_tmp14_);
+#line 119 "../src/contacts-shell-search-provider.vala"
+                               g_variant_ref_sink (_data_->_tmp15_);
+#line 119 "../src/contacts-shell-search-provider.vala"
+                               g_hash_table_insert (_data_->_tmp12_, _data_->_tmp13_, _data_->_tmp15_);
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp16_ = _data_->meta;
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp17_ = g_strdup ("name");
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp18_ = _data_->indiv;
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp19_ = folks_individual_get_display_name (_data_->_tmp18_);
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp20_ = _data_->_tmp19_;
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp21_ = g_variant_new_string (_data_->_tmp20_);
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               g_variant_ref_sink (_data_->_tmp21_);
+#line 120 "../src/contacts-shell-search-provider.vala"
+                               g_hash_table_insert (_data_->_tmp16_, _data_->_tmp17_, _data_->_tmp21_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp23_ = _data_->indiv;
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp24_ = folks_avatar_details_get_avatar ((FolksAvatarDetails*) 
_data_->_tmp23_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp25_ = _data_->_tmp24_;
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp25_ != NULL) {
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp26_ = _data_->indiv;
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp27_ = folks_avatar_details_get_avatar 
((FolksAvatarDetails*) _data_->_tmp26_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp28_ = _data_->_tmp27_;
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp29_ = g_icon_serialize ((GIcon*) _data_->_tmp28_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _g_variant_unref0 (_data_->_tmp22_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp22_ = _data_->_tmp29_;
+#line 2485 "contacts-shell-search-provider.c"
+                               } else {
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp30_ = _data_->self->priv->serialized_fallback_icon;
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp31_ = _g_variant_ref0 (_data_->_tmp30_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _g_variant_unref0 (_data_->_tmp22_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp22_ = _data_->_tmp31_;
+#line 2495 "contacts-shell-search-provider.c"
+                               }
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp32_ = _data_->meta;
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp33_ = g_strdup ("icon");
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp34_ = _g_variant_ref0 (_data_->_tmp22_);
+#line 121 "../src/contacts-shell-search-provider.vala"
+                               g_hash_table_insert (_data_->_tmp32_, _data_->_tmp33_, _data_->_tmp34_);
+#line 124 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp35_ = g_string_new ("");
+#line 124 "../src/contacts-shell-search-provider.vala"
+                               _data_->description = _data_->_tmp35_;
+#line 126 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp36_ = _data_->indiv;
+#line 126 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp37_ = folks_email_details_get_email_addresses 
((FolksEmailDetails*) _data_->_tmp36_);
+#line 126 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp38_ = _data_->_tmp37_;
+#line 126 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp39_ = contacts_utils_get_first (FOLKS_TYPE_EMAIL_FIELD_DETAILS, 
(GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _data_->_tmp38_);
+#line 126 "../src/contacts-shell-search-provider.vala"
+                               _data_->email = (FolksEmailFieldDetails*) _data_->_tmp39_;
+#line 127 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp42_ = _data_->email;
+#line 127 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp42_ != NULL) {
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp43_ = _data_->email;
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp44_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _data_->_tmp43_);
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp45_ = _data_->_tmp44_;
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp41_ = ((const gchar*) _data_->_tmp45_) != NULL;
+#line 2531 "contacts-shell-search-provider.c"
+                               } else {
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp41_ = FALSE;
+#line 2535 "contacts-shell-search-provider.c"
+                               }
+#line 127 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp41_) {
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp46_ = _data_->email;
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp47_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _data_->_tmp46_);
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp48_ = _data_->_tmp47_;
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp40_ = g_strcmp0 ((const gchar*) _data_->_tmp48_, "") != 0;
+#line 2547 "contacts-shell-search-provider.c"
+                               } else {
+#line 127 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp40_ = FALSE;
+#line 2551 "contacts-shell-search-provider.c"
+                               }
+#line 127 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp40_) {
+#line 128 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp49_ = _data_->description;
+#line 128 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp50_ = _data_->email;
+#line 128 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp51_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _data_->_tmp50_);
+#line 128 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp52_ = _data_->_tmp51_;
+#line 128 "../src/contacts-shell-search-provider.vala"
+                                       g_string_append (_data_->_tmp49_, (const gchar*) _data_->_tmp52_);
+#line 2565 "contacts-shell-search-provider.c"
+                               }
+#line 130 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp53_ = _data_->indiv;
+#line 130 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp54_ = folks_phone_details_get_phone_numbers ((FolksPhoneDetails*) 
_data_->_tmp53_);
+#line 130 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp55_ = _data_->_tmp54_;
+#line 130 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp56_ = contacts_utils_get_first (FOLKS_TYPE_PHONE_FIELD_DETAILS, 
(GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _data_->_tmp55_);
+#line 130 "../src/contacts-shell-search-provider.vala"
+                               _data_->phone = (FolksPhoneFieldDetails*) _data_->_tmp56_;
+#line 131 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp59_ = _data_->phone;
+#line 131 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp59_ != NULL) {
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp60_ = _data_->phone;
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp61_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _data_->_tmp60_);
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp62_ = _data_->_tmp61_;
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp58_ = ((const gchar*) _data_->_tmp62_) != NULL;
+#line 2589 "contacts-shell-search-provider.c"
+                               } else {
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp58_ = FALSE;
+#line 2593 "contacts-shell-search-provider.c"
+                               }
+#line 131 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp58_) {
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp63_ = _data_->phone;
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp64_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _data_->_tmp63_);
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp65_ = _data_->_tmp64_;
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp57_ = g_strcmp0 ((const gchar*) _data_->_tmp65_, "") != 0;
+#line 2605 "contacts-shell-search-provider.c"
+                               } else {
+#line 131 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp57_ = FALSE;
+#line 2609 "contacts-shell-search-provider.c"
+                               }
+#line 131 "../src/contacts-shell-search-provider.vala"
+                               if (_data_->_tmp57_) {
+#line 132 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp66_ = _data_->description;
+#line 132 "../src/contacts-shell-search-provider.vala"
+                                       if (_data_->_tmp66_->len > ((gssize) 0)) {
+#line 133 "../src/contacts-shell-search-provider.vala"
+                                               _data_->_tmp67_ = _data_->description;
+#line 133 "../src/contacts-shell-search-provider.vala"
+                                               g_string_append (_data_->_tmp67_, " / ");
+#line 2621 "contacts-shell-search-provider.c"
+                                       }
+#line 134 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp68_ = _data_->description;
+#line 134 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp69_ = _data_->phone;
+#line 134 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp70_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _data_->_tmp69_);
+#line 134 "../src/contacts-shell-search-provider.vala"
+                                       _data_->_tmp71_ = _data_->_tmp70_;
+#line 134 "../src/contacts-shell-search-provider.vala"
+                                       g_string_append (_data_->_tmp68_, (const gchar*) _data_->_tmp71_);
+#line 2633 "contacts-shell-search-provider.c"
+                               }
+#line 137 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp72_ = _data_->meta;
+#line 137 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp73_ = g_strdup ("description");
+#line 137 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp74_ = _data_->description;
+#line 137 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp75_ = _data_->_tmp74_->str;
+#line 137 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp76_ = _variant_new1 (_data_->_tmp75_);
+#line 137 "../src/contacts-shell-search-provider.vala"
+                               g_hash_table_insert (_data_->_tmp72_, _data_->_tmp73_, _data_->_tmp76_);
+#line 139 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp77_ = _data_->results;
+#line 139 "../src/contacts-shell-search-provider.vala"
+                               _data_->_tmp78_ = _data_->meta;
+#line 139 "../src/contacts-shell-search-provider.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp77_, 
_data_->_tmp78_);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                               _g_object_unref0 (_data_->phone);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                               _g_object_unref0 (_data_->email);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                               _g_string_free0 (_data_->description);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                               _g_variant_unref0 (_data_->_tmp22_);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                               _g_hash_table_unref0 (_data_->meta);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                               _g_object_unref0 (_data_->indiv);
+#line 108 "../src/contacts-shell-search-provider.vala"
+                               _g_free0 (_data_->id);
+#line 2667 "contacts-shell-search-provider.c"
+                       }
+               }
+       }
+#line 141 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp79_ = _data_->self->priv->app;
+#line 141 "../src/contacts-shell-search-provider.vala"
+       g_application_release ((GApplication*) _data_->_tmp79_);
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp80_ = _data_->results;
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp81_ = 0;
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp82_ = gee_collection_to_array ((GeeCollection*) _data_->_tmp80_, &_data_->_tmp81_);
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp83_ = _data_->_tmp82_;
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->_tmp83__length1 = _data_->_tmp81_;
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->result_length1 = _data_->_tmp83__length1;
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->result = _data_->_tmp83_;
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_data_->results);
+#line 142 "../src/contacts-shell-search-provider.vala"
+       _data_->ids = (_vala_array_free (_data_->ids, _data_->ids_length1, (GDestroyNotify) g_free), NULL);
+#line 142 "../src/contacts-shell-search-provider.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 142 "../src/contacts-shell-search-provider.vala"
+       if (_data_->_state_ != 0) {
+#line 142 "../src/contacts-shell-search-provider.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 142 "../src/contacts-shell-search-provider.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2701 "contacts-shell-search-provider.c"
+               }
+       }
+#line 142 "../src/contacts-shell-search-provider.vala"
+       g_object_unref (_data_->_async_result);
+#line 142 "../src/contacts-shell-search-provider.vala"
+       return FALSE;
+#line 2708 "contacts-shell-search-provider.c"
+}
+
+void
+contacts_search_provider_ActivateResult (ContactsSearchProvider* self,
+                                         const gchar* id,
+                                         gchar** terms,
+                                         gint terms_length1,
+                                         guint32 timestamp,
+                                         GError** error)
+{
+       ContactsSearchProviderApp* _tmp0_;
+       ContactsSearchProviderApp* _tmp6_;
+       GError* _inner_error0_ = NULL;
+#line 145 "../src/contacts-shell-search-provider.vala"
+       g_return_if_fail (self != NULL);
+#line 145 "../src/contacts-shell-search-provider.vala"
+       g_return_if_fail (id != NULL);
+#line 146 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = self->priv->app;
+#line 146 "../src/contacts-shell-search-provider.vala"
+       g_application_hold ((GApplication*) _tmp0_);
+#line 2730 "contacts-shell-search-provider.c"
+       {
+               gchar* _tmp1_;
+               gchar* _tmp2_;
+#line 149 "../src/contacts-shell-search-provider.vala"
+               _tmp1_ = g_strconcat ("gnome-contacts -i ", id, NULL);
+#line 149 "../src/contacts-shell-search-provider.vala"
+               _tmp2_ = _tmp1_;
+#line 149 "../src/contacts-shell-search-provider.vala"
+               g_spawn_command_line_async (_tmp2_, &_inner_error0_);
+#line 149 "../src/contacts-shell-search-provider.vala"
+               _g_free0 (_tmp2_);
+#line 149 "../src/contacts-shell-search-provider.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 149 "../src/contacts-shell-search-provider.vala"
+                       if (_inner_error0_->domain == G_SPAWN_ERROR) {
+#line 2746 "contacts-shell-search-provider.c"
+                               goto __catch2_g_spawn_error;
+                       }
+#line 149 "../src/contacts-shell-search-provider.vala"
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 149 "../src/contacts-shell-search-provider.vala"
+                       g_clear_error (&_inner_error0_);
+#line 149 "../src/contacts-shell-search-provider.vala"
+                       return;
+#line 2755 "contacts-shell-search-provider.c"
+               }
+       }
+       goto __finally2;
+       __catch2_g_spawn_error:
+       {
+               GError* e = NULL;
+               FILE* _tmp3_;
+               GError* _tmp4_;
+               const gchar* _tmp5_;
+#line 148 "../src/contacts-shell-search-provider.vala"
+               e = _inner_error0_;
+#line 148 "../src/contacts-shell-search-provider.vala"
+               _inner_error0_ = NULL;
+#line 151 "../src/contacts-shell-search-provider.vala"
+               _tmp3_ = stderr;
+#line 151 "../src/contacts-shell-search-provider.vala"
+               _tmp4_ = e;
+#line 151 "../src/contacts-shell-search-provider.vala"
+               _tmp5_ = _tmp4_->message;
+#line 151 "../src/contacts-shell-search-provider.vala"
+               fprintf (_tmp3_, "Failed to launch contact with id '%s': %s\n.", id, _tmp5_);
+#line 148 "../src/contacts-shell-search-provider.vala"
+               _g_error_free0 (e);
+#line 2779 "contacts-shell-search-provider.c"
+       }
+       __finally2:
+#line 148 "../src/contacts-shell-search-provider.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 148 "../src/contacts-shell-search-provider.vala"
+               g_propagate_error (error, _inner_error0_);
+#line 148 "../src/contacts-shell-search-provider.vala"
+               return;
+#line 2788 "contacts-shell-search-provider.c"
+       }
+#line 153 "../src/contacts-shell-search-provider.vala"
+       _tmp6_ = self->priv->app;
+#line 153 "../src/contacts-shell-search-provider.vala"
+       g_application_release ((GApplication*) _tmp6_);
+#line 2794 "contacts-shell-search-provider.c"
+}
+
+static void
+_vala_array_add2 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 163 "../src/contacts-shell-search-provider.vala"
+       if ((*length) == (*size)) {
+#line 163 "../src/contacts-shell-search-provider.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 163 "../src/contacts-shell-search-provider.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 2809 "contacts-shell-search-provider.c"
+       }
+#line 163 "../src/contacts-shell-search-provider.vala"
+       (*array)[(*length)++] = value;
+#line 163 "../src/contacts-shell-search-provider.vala"
+       (*array)[*length] = NULL;
+#line 2815 "contacts-shell-search-provider.c"
+}
+
+void
+contacts_search_provider_LaunchSearch (ContactsSearchProvider* self,
+                                       gchar** terms,
+                                       gint terms_length1,
+                                       guint32 timestamp,
+                                       GError** error)
+{
+       ContactsSearchProviderApp* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       ContactsSearchProviderApp* _tmp10_;
+       GError* _inner_error0_ = NULL;
+#line 156 "../src/contacts-shell-search-provider.vala"
+       g_return_if_fail (self != NULL);
+#line 157 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = self->priv->app;
+#line 157 "../src/contacts-shell-search-provider.vala"
+       g_application_hold ((GApplication*) _tmp0_);
+#line 159 "../src/contacts-shell-search-provider.vala"
+       _tmp1_ = _vala_g_strjoinv (", ", terms, (gint) terms_length1);
+#line 159 "../src/contacts-shell-search-provider.vala"
+       _tmp2_ = _tmp1_;
+#line 159 "../src/contacts-shell-search-provider.vala"
+       g_debug ("contacts-shell-search-provider.vala:159: LaunchSearch (%s)", _tmp2_);
+#line 159 "../src/contacts-shell-search-provider.vala"
+       _g_free0 (_tmp2_);
+#line 2844 "contacts-shell-search-provider.c"
+       {
+               gchar** args = NULL;
+               gchar* _tmp3_;
+               gchar* _tmp4_;
+               gchar** _tmp5_;
+               gint args_length1;
+               gint _args_size_;
+               gchar** _tmp6_;
+               gint _tmp6__length1;
+               gchar* _tmp7_;
+               gchar** _tmp8_;
+               gint _tmp8__length1;
+#line 162 "../src/contacts-shell-search-provider.vala"
+               _tmp3_ = g_strdup ("gnome-contacts");
+#line 162 "../src/contacts-shell-search-provider.vala"
+               _tmp4_ = g_strdup ("--search");
+#line 162 "../src/contacts-shell-search-provider.vala"
+               _tmp5_ = g_new0 (gchar*, 2 + 1);
+#line 162 "../src/contacts-shell-search-provider.vala"
+               _tmp5_[0] = _tmp3_;
+#line 162 "../src/contacts-shell-search-provider.vala"
+               _tmp5_[1] = _tmp4_;
+#line 162 "../src/contacts-shell-search-provider.vala"
+               args = _tmp5_;
+#line 162 "../src/contacts-shell-search-provider.vala"
+               args_length1 = 2;
+#line 162 "../src/contacts-shell-search-provider.vala"
+               _args_size_ = args_length1;
+#line 163 "../src/contacts-shell-search-provider.vala"
+               _tmp6_ = args;
+#line 163 "../src/contacts-shell-search-provider.vala"
+               _tmp6__length1 = args_length1;
+#line 163 "../src/contacts-shell-search-provider.vala"
+               _tmp7_ = _vala_g_strjoinv (" ", terms, (gint) terms_length1);
+#line 163 "../src/contacts-shell-search-provider.vala"
+               _vala_array_add2 (&args, &args_length1, &_args_size_, _tmp7_);
+#line 164 "../src/contacts-shell-search-provider.vala"
+               _tmp8_ = args;
+#line 164 "../src/contacts-shell-search-provider.vala"
+               _tmp8__length1 = args_length1;
+#line 164 "../src/contacts-shell-search-provider.vala"
+               g_spawn_async (NULL, _tmp8_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_inner_error0_);
+#line 164 "../src/contacts-shell-search-provider.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 164 "../src/contacts-shell-search-provider.vala"
+                       args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL);
+#line 164 "../src/contacts-shell-search-provider.vala"
+                       if (_inner_error0_->domain == G_SPAWN_ERROR) {
+#line 2893 "contacts-shell-search-provider.c"
+                               goto __catch3_g_spawn_error;
+                       }
+#line 164 "../src/contacts-shell-search-provider.vala"
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 164 "../src/contacts-shell-search-provider.vala"
+                       g_clear_error (&_inner_error0_);
+#line 164 "../src/contacts-shell-search-provider.vala"
+                       return;
+#line 2902 "contacts-shell-search-provider.c"
+               }
+#line 161 "../src/contacts-shell-search-provider.vala"
+               args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL);
+#line 2906 "contacts-shell-search-provider.c"
+       }
+       goto __finally3;
+       __catch3_g_spawn_error:
+       {
+               GError* _error_ = NULL;
+               FILE* _tmp9_;
+#line 161 "../src/contacts-shell-search-provider.vala"
+               _error_ = _inner_error0_;
+#line 161 "../src/contacts-shell-search-provider.vala"
+               _inner_error0_ = NULL;
+#line 166 "../src/contacts-shell-search-provider.vala"
+               _tmp9_ = stderr;
+#line 166 "../src/contacts-shell-search-provider.vala"
+               fprintf (_tmp9_, "Failed to launch Contacts for search\n");
+#line 161 "../src/contacts-shell-search-provider.vala"
+               _g_error_free0 (_error_);
+#line 2923 "contacts-shell-search-provider.c"
+       }
+       __finally3:
+#line 161 "../src/contacts-shell-search-provider.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 161 "../src/contacts-shell-search-provider.vala"
+               g_propagate_error (error, _inner_error0_);
+#line 161 "../src/contacts-shell-search-provider.vala"
+               return;
+#line 2932 "contacts-shell-search-provider.c"
+       }
+#line 169 "../src/contacts-shell-search-provider.vala"
+       _tmp10_ = self->priv->app;
+#line 169 "../src/contacts-shell-search-provider.vala"
+       g_application_release ((GApplication*) _tmp10_);
+#line 2938 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_class_init (ContactsSearchProviderClass * klass,
+                                     gpointer klass_data)
+{
+#line 22 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_parent_class = g_type_class_peek_parent (klass);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsSearchProvider_private_offset);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_search_provider_finalize;
+#line 2951 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_instance_init (ContactsSearchProvider * self,
+                                        gpointer klass)
+{
+#line 22 "../src/contacts-shell-search-provider.vala"
+       self->priv = contacts_search_provider_get_instance_private (self);
+#line 2960 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_finalize (GObject * obj)
+{
+       ContactsSearchProvider * self;
+#line 22 "../src/contacts-shell-search-provider.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_SEARCH_PROVIDER, ContactsSearchProvider);
+#line 23 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (self->priv->app);
+#line 24 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (self->priv->aggregator);
+#line 25 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (self->priv->query);
+#line 26 "../src/contacts-shell-search-provider.vala"
+       _g_variant_unref0 (self->priv->serialized_fallback_icon);
+#line 22 "../src/contacts-shell-search-provider.vala"
+       G_OBJECT_CLASS (contacts_search_provider_parent_class)->finalize (obj);
+#line 2979 "contacts-shell-search-provider.c"
+}
+
+static GType
+contacts_search_provider_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsSearchProviderClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_search_provider_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsSearchProvider), 0, (GInstanceInitFunc) contacts_search_provider_instance_init, 
NULL };
+       GType contacts_search_provider_type_id;
+       contacts_search_provider_type_id = g_type_register_static (G_TYPE_OBJECT, "ContactsSearchProvider", 
&g_define_type_info, 0);
+       g_type_set_qdata (contacts_search_provider_type_id, g_quark_from_static_string 
("vala-dbus-register-object"), (void*) contacts_search_provider_register_object);
+       ContactsSearchProvider_private_offset = g_type_add_instance_private 
(contacts_search_provider_type_id, sizeof (ContactsSearchProviderPrivate));
+       return contacts_search_provider_type_id;
+}
+
+GType
+contacts_search_provider_get_type (void)
+{
+       static volatile gsize contacts_search_provider_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_search_provider_type_id__volatile)) {
+               GType contacts_search_provider_type_id;
+               contacts_search_provider_type_id = contacts_search_provider_get_type_once ();
+               g_once_init_leave (&contacts_search_provider_type_id__volatile, 
contacts_search_provider_type_id);
+       }
+       return contacts_search_provider_type_id__volatile;
+}
+
+static void
+_dbus_contacts_search_provider_GetInitialResultSet (ContactsSearchProvider* self,
+                                                    GVariant* _parameters_,
+                                                    GDBusMethodInvocation* invocation)
+{
+       GVariantIter _arguments_iter;
+       contacts_search_provider_GetInitialResultSetReadyData* _ready_data;
+       GVariant* _tmp0_;
+       gchar** _tmp1_;
+       gint _tmp1__length;
+       gint _tmp1__size;
+       gint _tmp1__length1;
+       GVariantIter _tmp2_;
+       GVariant* _tmp3_;
+       g_variant_iter_init (&_arguments_iter, _parameters_);
+       _ready_data = g_slice_new0 (contacts_search_provider_GetInitialResultSetReadyData);
+       _ready_data->_invocation_ = invocation;
+       _tmp0_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp1_ = g_new (gchar*, 5);
+       _tmp1__length = 0;
+       _tmp1__size = 4;
+       _tmp1__length1 = 0;
+       g_variant_iter_init (&_tmp2_, _tmp0_);
+       for (; (_tmp3_ = g_variant_iter_next_value (&_tmp2_)) != NULL; _tmp1__length1++) {
+               if (_tmp1__size == _tmp1__length) {
+                       _tmp1__size = 2 * _tmp1__size;
+                       _tmp1_ = g_renew (gchar*, _tmp1_, _tmp1__size + 1);
+               }
+               _tmp1_[_tmp1__length++] = g_variant_dup_string (_tmp3_, NULL);
+               g_variant_unref (_tmp3_);
+       }
+       _ready_data->terms_length1 = _tmp1__length1;
+       _tmp1_[_tmp1__length] = NULL;
+       _ready_data->terms = _tmp1_;
+       g_variant_unref (_tmp0_);
+       contacts_search_provider_GetInitialResultSet (self, _ready_data->terms, _ready_data->terms_length1, 
(GAsyncReadyCallback) _dbus_contacts_search_provider_GetInitialResultSet_ready, _ready_data);
+}
+
+static void
+_dbus_contacts_search_provider_GetInitialResultSet_ready (GObject * source_object,
+                                                          GAsyncResult * _res_,
+                                                          gpointer _user_data_)
+{
+       contacts_search_provider_GetInitialResultSetReadyData* _ready_data;
+       GDBusMethodInvocation* invocation;
+       GError* error = NULL;
+       GDBusMessage* _reply_message = NULL;
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       gchar** result;
+       gint result_length1 = 0;
+       gchar** _tmp4_;
+       GVariantBuilder _tmp5_;
+       gint _tmp6_;
+       _ready_data = _user_data_;
+       invocation = _ready_data->_invocation_;
+       result = contacts_search_provider_GetInitialResultSet_finish ((ContactsSearchProvider*) 
source_object, _res_, &result_length1, &error);
+       if (error) {
+               g_dbus_method_invocation_return_gerror (invocation, error);
+               g_error_free (error);
+               goto _error;
+       }
+       _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       _tmp4_ = result;
+       g_variant_builder_init (&_tmp5_, G_VARIANT_TYPE ("as"));
+       for (_tmp6_ = 0; _tmp6_ < result_length1; _tmp6_++) {
+               g_variant_builder_add_value (&_tmp5_, g_variant_new_string (*_tmp4_));
+               _tmp4_++;
+       }
+       g_variant_builder_add_value (&_reply_builder, g_variant_builder_end (&_tmp5_));
+       result = (_vala_array_free (result, result_length1, (GDestroyNotify) g_free), NULL);
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_message_set_body (_reply_message, _reply);
+       g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, 
G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
+       g_object_unref (invocation);
+       g_object_unref (_reply_message);
+       _error:
+       _ready_data->terms = (_vala_array_free (_ready_data->terms, _ready_data->terms_length1, 
(GDestroyNotify) g_free), NULL);
+       g_slice_free (contacts_search_provider_GetInitialResultSetReadyData, _ready_data);
+}
+
+static void
+_dbus_contacts_search_provider_GetSubsearchResultSet (ContactsSearchProvider* self,
+                                                      GVariant* _parameters_,
+                                                      GDBusMethodInvocation* invocation)
+{
+       GVariantIter _arguments_iter;
+       contacts_search_provider_GetSubsearchResultSetReadyData* _ready_data;
+       GVariant* _tmp7_;
+       gchar** _tmp8_;
+       gint _tmp8__length;
+       gint _tmp8__size;
+       gint _tmp8__length1;
+       GVariantIter _tmp9_;
+       GVariant* _tmp10_;
+       GVariant* _tmp11_;
+       gchar** _tmp12_;
+       gint _tmp12__length;
+       gint _tmp12__size;
+       gint _tmp12__length1;
+       GVariantIter _tmp13_;
+       GVariant* _tmp14_;
+       g_variant_iter_init (&_arguments_iter, _parameters_);
+       _ready_data = g_slice_new0 (contacts_search_provider_GetSubsearchResultSetReadyData);
+       _ready_data->_invocation_ = invocation;
+       _tmp7_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp8_ = g_new (gchar*, 5);
+       _tmp8__length = 0;
+       _tmp8__size = 4;
+       _tmp8__length1 = 0;
+       g_variant_iter_init (&_tmp9_, _tmp7_);
+       for (; (_tmp10_ = g_variant_iter_next_value (&_tmp9_)) != NULL; _tmp8__length1++) {
+               if (_tmp8__size == _tmp8__length) {
+                       _tmp8__size = 2 * _tmp8__size;
+                       _tmp8_ = g_renew (gchar*, _tmp8_, _tmp8__size + 1);
+               }
+               _tmp8_[_tmp8__length++] = g_variant_dup_string (_tmp10_, NULL);
+               g_variant_unref (_tmp10_);
+       }
+       _ready_data->previous_results_length1 = _tmp8__length1;
+       _tmp8_[_tmp8__length] = NULL;
+       _ready_data->previous_results = _tmp8_;
+       g_variant_unref (_tmp7_);
+       _tmp11_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp12_ = g_new (gchar*, 5);
+       _tmp12__length = 0;
+       _tmp12__size = 4;
+       _tmp12__length1 = 0;
+       g_variant_iter_init (&_tmp13_, _tmp11_);
+       for (; (_tmp14_ = g_variant_iter_next_value (&_tmp13_)) != NULL; _tmp12__length1++) {
+               if (_tmp12__size == _tmp12__length) {
+                       _tmp12__size = 2 * _tmp12__size;
+                       _tmp12_ = g_renew (gchar*, _tmp12_, _tmp12__size + 1);
+               }
+               _tmp12_[_tmp12__length++] = g_variant_dup_string (_tmp14_, NULL);
+               g_variant_unref (_tmp14_);
+       }
+       _ready_data->new_terms_length1 = _tmp12__length1;
+       _tmp12_[_tmp12__length] = NULL;
+       _ready_data->new_terms = _tmp12_;
+       g_variant_unref (_tmp11_);
+       contacts_search_provider_GetSubsearchResultSet (self, _ready_data->previous_results, 
_ready_data->previous_results_length1, _ready_data->new_terms, _ready_data->new_terms_length1, 
(GAsyncReadyCallback) _dbus_contacts_search_provider_GetSubsearchResultSet_ready, _ready_data);
+}
+
+static void
+_dbus_contacts_search_provider_GetSubsearchResultSet_ready (GObject * source_object,
+                                                            GAsyncResult * _res_,
+                                                            gpointer _user_data_)
+{
+       contacts_search_provider_GetSubsearchResultSetReadyData* _ready_data;
+       GDBusMethodInvocation* invocation;
+       GError* error = NULL;
+       GDBusMessage* _reply_message = NULL;
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       gchar** result;
+       gint result_length1 = 0;
+       gchar** _tmp15_;
+       GVariantBuilder _tmp16_;
+       gint _tmp17_;
+       _ready_data = _user_data_;
+       invocation = _ready_data->_invocation_;
+       result = contacts_search_provider_GetSubsearchResultSet_finish ((ContactsSearchProvider*) 
source_object, _res_, &result_length1, &error);
+       if (error) {
+               g_dbus_method_invocation_return_gerror (invocation, error);
+               g_error_free (error);
+               goto _error;
+       }
+       _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       _tmp15_ = result;
+       g_variant_builder_init (&_tmp16_, G_VARIANT_TYPE ("as"));
+       for (_tmp17_ = 0; _tmp17_ < result_length1; _tmp17_++) {
+               g_variant_builder_add_value (&_tmp16_, g_variant_new_string (*_tmp15_));
+               _tmp15_++;
+       }
+       g_variant_builder_add_value (&_reply_builder, g_variant_builder_end (&_tmp16_));
+       result = (_vala_array_free (result, result_length1, (GDestroyNotify) g_free), NULL);
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_message_set_body (_reply_message, _reply);
+       g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, 
G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
+       g_object_unref (invocation);
+       g_object_unref (_reply_message);
+       _error:
+       _ready_data->previous_results = (_vala_array_free (_ready_data->previous_results, 
_ready_data->previous_results_length1, (GDestroyNotify) g_free), NULL);
+       _ready_data->new_terms = (_vala_array_free (_ready_data->new_terms, _ready_data->new_terms_length1, 
(GDestroyNotify) g_free), NULL);
+       g_slice_free (contacts_search_provider_GetSubsearchResultSetReadyData, _ready_data);
+}
+
+static void
+_dbus_contacts_search_provider_GetResultMetas (ContactsSearchProvider* self,
+                                               GVariant* _parameters_,
+                                               GDBusMethodInvocation* invocation)
+{
+       GVariantIter _arguments_iter;
+       contacts_search_provider_GetResultMetasReadyData* _ready_data;
+       GVariant* _tmp18_;
+       gchar** _tmp19_;
+       gint _tmp19__length;
+       gint _tmp19__size;
+       gint _tmp19__length1;
+       GVariantIter _tmp20_;
+       GVariant* _tmp21_;
+       g_variant_iter_init (&_arguments_iter, _parameters_);
+       _ready_data = g_slice_new0 (contacts_search_provider_GetResultMetasReadyData);
+       _ready_data->_invocation_ = invocation;
+       _tmp18_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp19_ = g_new (gchar*, 5);
+       _tmp19__length = 0;
+       _tmp19__size = 4;
+       _tmp19__length1 = 0;
+       g_variant_iter_init (&_tmp20_, _tmp18_);
+       for (; (_tmp21_ = g_variant_iter_next_value (&_tmp20_)) != NULL; _tmp19__length1++) {
+               if (_tmp19__size == _tmp19__length) {
+                       _tmp19__size = 2 * _tmp19__size;
+                       _tmp19_ = g_renew (gchar*, _tmp19_, _tmp19__size + 1);
+               }
+               _tmp19_[_tmp19__length++] = g_variant_dup_string (_tmp21_, NULL);
+               g_variant_unref (_tmp21_);
+       }
+       _ready_data->ids_length1 = _tmp19__length1;
+       _tmp19_[_tmp19__length] = NULL;
+       _ready_data->ids = _tmp19_;
+       g_variant_unref (_tmp18_);
+       contacts_search_provider_GetResultMetas (self, _ready_data->ids, _ready_data->ids_length1, 
(GAsyncReadyCallback) _dbus_contacts_search_provider_GetResultMetas_ready, _ready_data);
+}
+
+static void
+_dbus_contacts_search_provider_GetResultMetas_ready (GObject * source_object,
+                                                     GAsyncResult * _res_,
+                                                     gpointer _user_data_)
+{
+       contacts_search_provider_GetResultMetasReadyData* _ready_data;
+       GDBusMethodInvocation* invocation;
+       GError* error = NULL;
+       GDBusMessage* _reply_message = NULL;
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       GHashTable** result;
+       gint result_length1 = 0;
+       GHashTable** _tmp22_;
+       GVariantBuilder _tmp23_;
+       gint _tmp24_;
+       _ready_data = _user_data_;
+       invocation = _ready_data->_invocation_;
+       result = contacts_search_provider_GetResultMetas_finish ((ContactsSearchProvider*) source_object, 
_res_, &result_length1, &error);
+       if (error) {
+               g_dbus_method_invocation_return_gerror (invocation, error);
+               g_error_free (error);
+               goto _error;
+       }
+       _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       _tmp22_ = result;
+       g_variant_builder_init (&_tmp23_, G_VARIANT_TYPE ("aa{sv}"));
+       for (_tmp24_ = 0; _tmp24_ < result_length1; _tmp24_++) {
+               GVariantBuilder _tmp25_;
+               GHashTableIter _tmp26_;
+               gpointer _tmp27_;
+               gpointer _tmp28_;
+               g_hash_table_iter_init (&_tmp26_, *_tmp22_);
+               g_variant_builder_init (&_tmp25_, G_VARIANT_TYPE ("a{sv}"));
+               while (g_hash_table_iter_next (&_tmp26_, &_tmp27_, &_tmp28_)) {
+                       gchar* _key;
+                       GVariant* _value;
+                       _key = (gchar*) _tmp27_;
+                       _value = (GVariant*) _tmp28_;
+                       g_variant_builder_add (&_tmp25_, "{?*}", g_variant_new_string (_key), 
g_variant_new_variant (_value));
+               }
+               g_variant_builder_add_value (&_tmp23_, g_variant_builder_end (&_tmp25_));
+               _tmp22_++;
+       }
+       g_variant_builder_add_value (&_reply_builder, g_variant_builder_end (&_tmp23_));
+       result = (_vala_array_free (result, result_length1, (GDestroyNotify) g_hash_table_unref), NULL);
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_message_set_body (_reply_message, _reply);
+       g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, 
G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
+       g_object_unref (invocation);
+       g_object_unref (_reply_message);
+       _error:
+       _ready_data->ids = (_vala_array_free (_ready_data->ids, _ready_data->ids_length1, (GDestroyNotify) 
g_free), NULL);
+       g_slice_free (contacts_search_provider_GetResultMetasReadyData, _ready_data);
+}
+
+static void
+_dbus_contacts_search_provider_ActivateResult (ContactsSearchProvider* self,
+                                               GVariant* _parameters_,
+                                               GDBusMethodInvocation* invocation)
+{
+       GError* error = NULL;
+       GVariantIter _arguments_iter;
+       gchar* id = NULL;
+       GVariant* _tmp29_;
+       gchar** terms = NULL;
+       gint terms_length1 = 0;
+       GVariant* _tmp30_;
+       gchar** _tmp31_;
+       gint _tmp31__length;
+       gint _tmp31__size;
+       gint _tmp31__length1;
+       GVariantIter _tmp32_;
+       GVariant* _tmp33_;
+       guint32 timestamp = 0U;
+       GVariant* _tmp34_;
+       GDBusMessage* _reply_message = NULL;
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       g_variant_iter_init (&_arguments_iter, _parameters_);
+       _tmp29_ = g_variant_iter_next_value (&_arguments_iter);
+       id = g_variant_dup_string (_tmp29_, NULL);
+       g_variant_unref (_tmp29_);
+       _tmp30_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp31_ = g_new (gchar*, 5);
+       _tmp31__length = 0;
+       _tmp31__size = 4;
+       _tmp31__length1 = 0;
+       g_variant_iter_init (&_tmp32_, _tmp30_);
+       for (; (_tmp33_ = g_variant_iter_next_value (&_tmp32_)) != NULL; _tmp31__length1++) {
+               if (_tmp31__size == _tmp31__length) {
+                       _tmp31__size = 2 * _tmp31__size;
+                       _tmp31_ = g_renew (gchar*, _tmp31_, _tmp31__size + 1);
+               }
+               _tmp31_[_tmp31__length++] = g_variant_dup_string (_tmp33_, NULL);
+               g_variant_unref (_tmp33_);
+       }
+       terms_length1 = _tmp31__length1;
+       _tmp31_[_tmp31__length] = NULL;
+       terms = _tmp31_;
+       g_variant_unref (_tmp30_);
+       _tmp34_ = g_variant_iter_next_value (&_arguments_iter);
+       timestamp = g_variant_get_uint32 (_tmp34_);
+       g_variant_unref (_tmp34_);
+       contacts_search_provider_ActivateResult (self, id, terms, terms_length1, timestamp, &error);
+       if (error) {
+               g_dbus_method_invocation_return_gerror (invocation, error);
+               g_error_free (error);
+               return;
+       }
+       _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_message_set_body (_reply_message, _reply);
+       g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, 
G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
+       g_object_unref (invocation);
+       g_object_unref (_reply_message);
+       _g_free0 (id);
+       terms = (_vala_array_free (terms, terms_length1, (GDestroyNotify) g_free), NULL);
+}
+
+static void
+_dbus_contacts_search_provider_LaunchSearch (ContactsSearchProvider* self,
+                                             GVariant* _parameters_,
+                                             GDBusMethodInvocation* invocation)
+{
+       GError* error = NULL;
+       GVariantIter _arguments_iter;
+       gchar** terms = NULL;
+       gint terms_length1 = 0;
+       GVariant* _tmp35_;
+       gchar** _tmp36_;
+       gint _tmp36__length;
+       gint _tmp36__size;
+       gint _tmp36__length1;
+       GVariantIter _tmp37_;
+       GVariant* _tmp38_;
+       guint32 timestamp = 0U;
+       GVariant* _tmp39_;
+       GDBusMessage* _reply_message = NULL;
+       GVariant* _reply;
+       GVariantBuilder _reply_builder;
+       g_variant_iter_init (&_arguments_iter, _parameters_);
+       _tmp35_ = g_variant_iter_next_value (&_arguments_iter);
+       _tmp36_ = g_new (gchar*, 5);
+       _tmp36__length = 0;
+       _tmp36__size = 4;
+       _tmp36__length1 = 0;
+       g_variant_iter_init (&_tmp37_, _tmp35_);
+       for (; (_tmp38_ = g_variant_iter_next_value (&_tmp37_)) != NULL; _tmp36__length1++) {
+               if (_tmp36__size == _tmp36__length) {
+                       _tmp36__size = 2 * _tmp36__size;
+                       _tmp36_ = g_renew (gchar*, _tmp36_, _tmp36__size + 1);
+               }
+               _tmp36_[_tmp36__length++] = g_variant_dup_string (_tmp38_, NULL);
+               g_variant_unref (_tmp38_);
+       }
+       terms_length1 = _tmp36__length1;
+       _tmp36_[_tmp36__length] = NULL;
+       terms = _tmp36_;
+       g_variant_unref (_tmp35_);
+       _tmp39_ = g_variant_iter_next_value (&_arguments_iter);
+       timestamp = g_variant_get_uint32 (_tmp39_);
+       g_variant_unref (_tmp39_);
+       contacts_search_provider_LaunchSearch (self, terms, terms_length1, timestamp, &error);
+       if (error) {
+               g_dbus_method_invocation_return_gerror (invocation, error);
+               g_error_free (error);
+               return;
+       }
+       _reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
+       g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+       _reply = g_variant_builder_end (&_reply_builder);
+       g_dbus_message_set_body (_reply_message, _reply);
+       g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, 
G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
+       g_object_unref (invocation);
+       g_object_unref (_reply_message);
+       terms = (_vala_array_free (terms, terms_length1, (GDestroyNotify) g_free), NULL);
+}
+
+static void
+contacts_search_provider_dbus_interface_method_call (GDBusConnection* connection,
+                                                     const gchar* sender,
+                                                     const gchar* object_path,
+                                                     const gchar* interface_name,
+                                                     const gchar* method_name,
+                                                     GVariant* parameters,
+                                                     GDBusMethodInvocation* invocation,
+                                                     gpointer user_data)
+{
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       if (strcmp (method_name, "GetInitialResultSet") == 0) {
+               _dbus_contacts_search_provider_GetInitialResultSet (object, parameters, invocation);
+       } else if (strcmp (method_name, "GetSubsearchResultSet") == 0) {
+               _dbus_contacts_search_provider_GetSubsearchResultSet (object, parameters, invocation);
+       } else if (strcmp (method_name, "GetResultMetas") == 0) {
+               _dbus_contacts_search_provider_GetResultMetas (object, parameters, invocation);
+       } else if (strcmp (method_name, "ActivateResult") == 0) {
+               _dbus_contacts_search_provider_ActivateResult (object, parameters, invocation);
+       } else if (strcmp (method_name, "LaunchSearch") == 0) {
+               _dbus_contacts_search_provider_LaunchSearch (object, parameters, invocation);
+       } else {
+               g_object_unref (invocation);
+       }
+}
+
+static GVariant*
+contacts_search_provider_dbus_interface_get_property (GDBusConnection* connection,
+                                                      const gchar* sender,
+                                                      const gchar* object_path,
+                                                      const gchar* interface_name,
+                                                      const gchar* property_name,
+                                                      GError** error,
+                                                      gpointer user_data)
+{
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       return NULL;
+}
+
+static gboolean
+contacts_search_provider_dbus_interface_set_property (GDBusConnection* connection,
+                                                      const gchar* sender,
+                                                      const gchar* object_path,
+                                                      const gchar* interface_name,
+                                                      const gchar* property_name,
+                                                      GVariant* value,
+                                                      GError** error,
+                                                      gpointer user_data)
+{
+       gpointer* data;
+       gpointer object;
+       data = user_data;
+       object = data[0];
+       return FALSE;
+}
+
+guint
+contacts_search_provider_register_object (gpointer object,
+                                          GDBusConnection* connection,
+                                          const gchar* path,
+                                          GError** error)
+{
+       guint result;
+       gpointer *data;
+       data = g_new (gpointer, 3);
+       data[0] = g_object_ref (object);
+       data[1] = g_object_ref (connection);
+       data[2] = g_strdup (path);
+       result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) 
(&_contacts_search_provider_dbus_interface_info), &_contacts_search_provider_dbus_interface_vtable, data, 
_contacts_search_provider_unregister_object, error);
+       if (!result) {
+               return 0;
+       }
+       return result;
+}
+
+static void
+_contacts_search_provider_unregister_object (gpointer user_data)
+{
+       gpointer* data;
+       data = user_data;
+       g_object_unref (data[0]);
+       g_object_unref (data[1]);
+       g_free (data[2]);
+       g_free (data);
+}
+
+ContactsSearchProviderApp*
+contacts_search_provider_app_construct (GType object_type)
+{
+       ContactsSearchProviderApp * self = NULL;
+#line 175 "../src/contacts-shell-search-provider.vala"
+       self = (ContactsSearchProviderApp*) g_object_new (object_type, "application-id", APP_ID 
".SearchProvider", "flags", G_APPLICATION_IS_SERVICE, "inactivity-timeout", 10000, NULL);
+#line 174 "../src/contacts-shell-search-provider.vala"
+       return self;
+#line 3514 "contacts-shell-search-provider.c"
+}
+
+ContactsSearchProviderApp*
+contacts_search_provider_app_new (void)
+{
+#line 174 "../src/contacts-shell-search-provider.vala"
+       return contacts_search_provider_app_construct (CONTACTS_TYPE_SEARCH_PROVIDER_APP);
+#line 3522 "contacts-shell-search-provider.c"
+}
+
+static gboolean
+contacts_search_provider_app_real_dbus_register (GApplication* base,
+                                                 GDBusConnection* connection,
+                                                 const gchar* object_path,
+                                                 GError** error)
+{
+       ContactsSearchProviderApp * self;
+       GError* _inner_error0_ = NULL;
+       gboolean result = FALSE;
+#line 180 "../src/contacts-shell-search-provider.vala"
+       self = (ContactsSearchProviderApp*) base;
+#line 180 "../src/contacts-shell-search-provider.vala"
+       g_return_val_if_fail (connection != NULL, FALSE);
+#line 180 "../src/contacts-shell-search-provider.vala"
+       g_return_val_if_fail (object_path != NULL, FALSE);
+#line 3540 "contacts-shell-search-provider.c"
+       {
+               ContactsSearchProvider* _tmp0_;
+               ContactsSearchProvider* _tmp1_;
+#line 182 "../src/contacts-shell-search-provider.vala"
+               _tmp0_ = contacts_search_provider_new (self);
+#line 182 "../src/contacts-shell-search-provider.vala"
+               _tmp1_ = _tmp0_;
+#line 182 "../src/contacts-shell-search-provider.vala"
+               contacts_search_provider_register_object (_tmp1_, connection, object_path, &_inner_error0_);
+#line 182 "../src/contacts-shell-search-provider.vala"
+               _g_object_unref0 (_tmp1_);
+#line 182 "../src/contacts-shell-search-provider.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 3554 "contacts-shell-search-provider.c"
+                       gboolean _tmp2_ = FALSE;
+#line 182 "../src/contacts-shell-search-provider.vala"
+                       if (_inner_error0_->domain == G_IO_ERROR) {
+#line 3558 "contacts-shell-search-provider.c"
+                               goto __catch4_g_io_error;
+                       }
+#line 182 "../src/contacts-shell-search-provider.vala"
+                       g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 182 "../src/contacts-shell-search-provider.vala"
+                       g_clear_error (&_inner_error0_);
+#line 182 "../src/contacts-shell-search-provider.vala"
+                       return _tmp2_;
+#line 3567 "contacts-shell-search-provider.c"
+               }
+       }
+       goto __finally4;
+       __catch4_g_io_error:
+       {
+               GError* _error_ = NULL;
+               FILE* _tmp3_;
+               GError* _tmp4_;
+               const gchar* _tmp5_;
+#line 181 "../src/contacts-shell-search-provider.vala"
+               _error_ = _inner_error0_;
+#line 181 "../src/contacts-shell-search-provider.vala"
+               _inner_error0_ = NULL;
+#line 184 "../src/contacts-shell-search-provider.vala"
+               _tmp3_ = stderr;
+#line 184 "../src/contacts-shell-search-provider.vala"
+               _tmp4_ = _error_;
+#line 184 "../src/contacts-shell-search-provider.vala"
+               _tmp5_ = _tmp4_->message;
+#line 184 "../src/contacts-shell-search-provider.vala"
+               fprintf (_tmp3_, "Could not register service: %s", _tmp5_);
+#line 185 "../src/contacts-shell-search-provider.vala"
+               g_application_quit ((GApplication*) self);
+#line 181 "../src/contacts-shell-search-provider.vala"
+               _g_error_free0 (_error_);
+#line 3593 "contacts-shell-search-provider.c"
+       }
+       __finally4:
+#line 181 "../src/contacts-shell-search-provider.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 3598 "contacts-shell-search-provider.c"
+               gboolean _tmp6_ = FALSE;
+#line 181 "../src/contacts-shell-search-provider.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 181 "../src/contacts-shell-search-provider.vala"
+               g_clear_error (&_inner_error0_);
+#line 181 "../src/contacts-shell-search-provider.vala"
+               return _tmp6_;
+#line 3606 "contacts-shell-search-provider.c"
+       }
+#line 187 "../src/contacts-shell-search-provider.vala"
+       result = TRUE;
+#line 187 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 3612 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_app_real_startup (GApplication* base)
+{
+       ContactsSearchProviderApp * self;
+       const gchar* _tmp0_;
+#line 190 "../src/contacts-shell-search-provider.vala"
+       self = (ContactsSearchProviderApp*) base;
+#line 191 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = g_getenv ("CONTACTS_SEARCH_PROVIDER_PERSIST");
+#line 191 "../src/contacts-shell-search-provider.vala"
+       if (_tmp0_ != NULL) {
+#line 192 "../src/contacts-shell-search-provider.vala"
+               g_application_hold ((GApplication*) self);
+#line 3628 "contacts-shell-search-provider.c"
+       }
+#line 193 "../src/contacts-shell-search-provider.vala"
+       G_APPLICATION_CLASS (contacts_search_provider_app_parent_class)->startup (G_TYPE_CHECK_INSTANCE_CAST 
(self, g_application_get_type (), GApplication));
+#line 3632 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_app_class_init (ContactsSearchProviderAppClass * klass,
+                                         gpointer klass_data)
+{
+#line 173 "../src/contacts-shell-search-provider.vala"
+       contacts_search_provider_app_parent_class = g_type_class_peek_parent (klass);
+#line 173 "../src/contacts-shell-search-provider.vala"
+       ((GApplicationClass *) klass)->dbus_register = (gboolean (*) (GApplication*, GDBusConnection*, const 
gchar*, GError**)) contacts_search_provider_app_real_dbus_register;
+#line 173 "../src/contacts-shell-search-provider.vala"
+       ((GApplicationClass *) klass)->startup = (void (*) (GApplication*)) 
contacts_search_provider_app_real_startup;
+#line 3645 "contacts-shell-search-provider.c"
+}
+
+static void
+contacts_search_provider_app_instance_init (ContactsSearchProviderApp * self,
+                                            gpointer klass)
+{
+}
+
+static GType
+contacts_search_provider_app_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsSearchProviderAppClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_search_provider_app_class_init, 
(GClassFinalizeFunc) NULL, NULL, sizeof (ContactsSearchProviderApp), 0, (GInstanceInitFunc) 
contacts_search_provider_app_instance_init, NULL };
+       GType contacts_search_provider_app_type_id;
+       contacts_search_provider_app_type_id = g_type_register_static (g_application_get_type (), 
"ContactsSearchProviderApp", &g_define_type_info, 0);
+       return contacts_search_provider_app_type_id;
+}
+
+GType
+contacts_search_provider_app_get_type (void)
+{
+       static volatile gsize contacts_search_provider_app_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_search_provider_app_type_id__volatile)) {
+               GType contacts_search_provider_app_type_id;
+               contacts_search_provider_app_type_id = contacts_search_provider_app_get_type_once ();
+               g_once_init_leave (&contacts_search_provider_app_type_id__volatile, 
contacts_search_provider_app_type_id);
+       }
+       return contacts_search_provider_app_type_id__volatile;
+}
+
+gint
+_vala_main (void)
+{
+       ContactsSearchProviderApp* _tmp0_;
+       ContactsSearchProviderApp* _tmp1_;
+       gint _tmp2_;
+       gint result = 0;
+#line 198 "../src/contacts-shell-search-provider.vala"
+       _tmp0_ = contacts_search_provider_app_new ();
+#line 198 "../src/contacts-shell-search-provider.vala"
+       _tmp1_ = _tmp0_;
+#line 198 "../src/contacts-shell-search-provider.vala"
+       _tmp2_ = g_application_run ((GApplication*) _tmp1_, (gint) 0, NULL);
+#line 198 "../src/contacts-shell-search-provider.vala"
+       _g_object_unref0 (_tmp1_);
+#line 198 "../src/contacts-shell-search-provider.vala"
+       result = _tmp2_;
+#line 198 "../src/contacts-shell-search-provider.vala"
+       return result;
+#line 3694 "contacts-shell-search-provider.c"
+}
+
+int
+main (int argc,
+      char ** argv)
+{
+#line 197 "../src/contacts-shell-search-provider.vala"
+       return _vala_main ();
+#line 3703 "contacts-shell-search-provider.c"
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git 
a/_build/src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o 
b/_build/src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o
new file mode 100644
index 0000000..969950f
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts-search-provider@exe/meson-generated_contacts-shell-search-provider.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o
new file mode 100644
index 0000000..46cee1c
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/cc-crop-area.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/cheese-flash.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/cheese-flash.c.o
new file mode 100644
index 0000000..7907bc6
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/cheese-flash.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c
new file mode 100644
index 0000000..35f019f
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-accounts-list.c
@@ -0,0 +1,890 @@
+/* contacts-accounts-list.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-accounts-list.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Erick Pérez Castellanos <erick red gmail com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <folks/folks.h>
+#include "contacts.h"
+#include <glib.h>
+#include <libedataserver/libedataserver.h>
+#include <folks/folks-eds.h>
+#include <stdlib.h>
+#include <string.h>
+#include <handy.h>
+#include <config.h>
+#include <glib/gi18n-lib.h>
+
+#define CONTACTS_TYPE_ACCOUNTS_LIST (contacts_accounts_list_get_type ())
+#define CONTACTS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_ACCOUNTS_LIST, 
ContactsAccountsList))
+#define CONTACTS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_ACCOUNTS_LIST, 
ContactsAccountsListClass))
+#define CONTACTS_IS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_ACCOUNTS_LIST))
+#define CONTACTS_IS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_ACCOUNTS_LIST))
+#define CONTACTS_ACCOUNTS_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_ACCOUNTS_LIST, ContactsAccountsListClass))
+
+typedef struct _ContactsAccountsList ContactsAccountsList;
+typedef struct _ContactsAccountsListClass ContactsAccountsListClass;
+typedef struct _ContactsAccountsListPrivate ContactsAccountsListPrivate;
+enum  {
+       CONTACTS_ACCOUNTS_LIST_0_PROPERTY,
+       CONTACTS_ACCOUNTS_LIST_NUM_PROPERTIES
+};
+static GParamSpec* contacts_accounts_list_properties[CONTACTS_ACCOUNTS_LIST_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+enum  {
+       CONTACTS_ACCOUNTS_LIST_ACCOUNT_SELECTED_SIGNAL,
+       CONTACTS_ACCOUNTS_LIST_NUM_SIGNALS
+};
+static guint contacts_accounts_list_signals[CONTACTS_ACCOUNTS_LIST_NUM_SIGNALS] = {0};
+
+struct _ContactsAccountsList {
+       GtkListBox parent_instance;
+       ContactsAccountsListPrivate * priv;
+       FolksPersonaStore* selected_store;
+};
+
+struct _ContactsAccountsListClass {
+       GtkListBoxClass parent_class;
+};
+
+struct _ContactsAccountsListPrivate {
+       GtkListBoxRow* last_selected_row;
+       ContactsStore* contacts_store;
+};
+
+static gint ContactsAccountsList_private_offset;
+static gpointer contacts_accounts_list_parent_class = NULL;
+
+GType contacts_accounts_list_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAccountsList, g_object_unref)
+ContactsAccountsList* contacts_accounts_list_new (ContactsStore* contacts_store);
+ContactsAccountsList* contacts_accounts_list_construct (GType object_type,
+                                                        ContactsStore* contacts_store);
+static void _contacts_add_separator_gtk_list_box_update_header_func (GtkListBoxRow* row,
+                                                              GtkListBoxRow* before,
+                                                              gpointer self);
+static void contacts_accounts_list_real_row_activated (GtkListBox* base,
+                                                GtkListBoxRow* row);
+void contacts_accounts_list_update_contents (ContactsAccountsList* self,
+                                             gboolean select_active);
+static void contacts_accounts_list_finalize (GObject * obj);
+static GType contacts_accounts_list_get_type_once (void);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+static inline gpointer
+contacts_accounts_list_get_instance_private (ContactsAccountsList* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsAccountsList_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 33 "../src/contacts-accounts-list.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 108 "contacts-accounts-list.c"
+}
+
+static void
+_contacts_add_separator_gtk_list_box_update_header_func (GtkListBoxRow* row,
+                                                         GtkListBoxRow* before,
+                                                         gpointer self)
+{
+#line 36 "../src/contacts-accounts-list.vala"
+       contacts_add_separator (row, before);
+#line 118 "contacts-accounts-list.c"
+}
+
+ContactsAccountsList*
+contacts_accounts_list_construct (GType object_type,
+                                  ContactsStore* contacts_store)
+{
+       ContactsAccountsList * self = NULL;
+       ContactsStore* _tmp0_;
+#line 32 "../src/contacts-accounts-list.vala"
+       g_return_val_if_fail (contacts_store != NULL, NULL);
+#line 32 "../src/contacts-accounts-list.vala"
+       self = (ContactsAccountsList*) g_object_new (object_type, NULL);
+#line 33 "../src/contacts-accounts-list.vala"
+       _tmp0_ = _g_object_ref0 (contacts_store);
+#line 33 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (self->priv->contacts_store);
+#line 33 "../src/contacts-accounts-list.vala"
+       self->priv->contacts_store = _tmp0_;
+#line 34 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (self->selected_store);
+#line 34 "../src/contacts-accounts-list.vala"
+       self->selected_store = NULL;
+#line 36 "../src/contacts-accounts-list.vala"
+       gtk_list_box_set_header_func ((GtkListBox*) self, 
_contacts_add_separator_gtk_list_box_update_header_func, NULL, NULL);
+#line 32 "../src/contacts-accounts-list.vala"
+       return self;
+#line 145 "contacts-accounts-list.c"
+}
+
+ContactsAccountsList*
+contacts_accounts_list_new (ContactsStore* contacts_store)
+{
+#line 32 "../src/contacts-accounts-list.vala"
+       return contacts_accounts_list_construct (CONTACTS_TYPE_ACCOUNTS_LIST, contacts_store);
+#line 153 "contacts-accounts-list.c"
+}
+
+static void
+contacts_accounts_list_real_row_activated (GtkListBox* base,
+                                           GtkListBoxRow* row)
+{
+       ContactsAccountsList * self;
+       gboolean _tmp0_ = FALSE;
+       GtkListBoxRow* _tmp1_;
+       GtkImage* checkmark = NULL;
+       gconstpointer _tmp3_;
+       GtkImage* _tmp4_;
+       GtkImage* _tmp5_;
+       GtkListBoxRow* _tmp6_;
+       GtkListBoxRow* _tmp12_;
+       gconstpointer _tmp13_;
+       FolksPersonaStore* _tmp14_;
+#line 39 "../src/contacts-accounts-list.vala"
+       self = (ContactsAccountsList*) base;
+#line 39 "../src/contacts-accounts-list.vala"
+       g_return_if_fail (row != NULL);
+#line 40 "../src/contacts-accounts-list.vala"
+       if (row == NULL) {
+#line 41 "../src/contacts-accounts-list.vala"
+               return;
+#line 179 "contacts-accounts-list.c"
+       }
+#line 43 "../src/contacts-accounts-list.vala"
+       _tmp1_ = self->priv->last_selected_row;
+#line 43 "../src/contacts-accounts-list.vala"
+       if (_tmp1_ != NULL) {
+#line 185 "contacts-accounts-list.c"
+               GtkListBoxRow* _tmp2_;
+#line 44 "../src/contacts-accounts-list.vala"
+               _tmp2_ = self->priv->last_selected_row;
+#line 44 "../src/contacts-accounts-list.vala"
+               _tmp0_ = _tmp2_ == row;
+#line 191 "contacts-accounts-list.c"
+       } else {
+#line 43 "../src/contacts-accounts-list.vala"
+               _tmp0_ = FALSE;
+#line 195 "contacts-accounts-list.c"
+       }
+#line 43 "../src/contacts-accounts-list.vala"
+       if (_tmp0_) {
+#line 45 "../src/contacts-accounts-list.vala"
+               return;
+#line 201 "contacts-accounts-list.c"
+       }
+#line 48 "../src/contacts-accounts-list.vala"
+       _tmp3_ = g_object_get_data ((GObject*) row, "checkmark");
+#line 48 "../src/contacts-accounts-list.vala"
+       _tmp4_ = _g_object_ref0 ((GtkImage*) _tmp3_);
+#line 48 "../src/contacts-accounts-list.vala"
+       checkmark = _tmp4_;
+#line 49 "../src/contacts-accounts-list.vala"
+       _tmp5_ = checkmark;
+#line 49 "../src/contacts-accounts-list.vala"
+       gtk_widget_show ((GtkWidget*) _tmp5_);
+#line 51 "../src/contacts-accounts-list.vala"
+       _tmp6_ = self->priv->last_selected_row;
+#line 51 "../src/contacts-accounts-list.vala"
+       if (_tmp6_ != NULL) {
+#line 217 "contacts-accounts-list.c"
+               GtkListBoxRow* _tmp7_;
+               gconstpointer _tmp8_;
+               GtkImage* _tmp9_;
+               GtkImage* _tmp10_;
+#line 52 "../src/contacts-accounts-list.vala"
+               _tmp7_ = self->priv->last_selected_row;
+#line 52 "../src/contacts-accounts-list.vala"
+               _tmp8_ = g_object_get_data ((GObject*) _tmp7_, "checkmark");
+#line 52 "../src/contacts-accounts-list.vala"
+               _tmp9_ = _g_object_ref0 ((GtkImage*) _tmp8_);
+#line 52 "../src/contacts-accounts-list.vala"
+               _g_object_unref0 (checkmark);
+#line 52 "../src/contacts-accounts-list.vala"
+               checkmark = _tmp9_;
+#line 53 "../src/contacts-accounts-list.vala"
+               _tmp10_ = checkmark;
+#line 53 "../src/contacts-accounts-list.vala"
+               if (_tmp10_ != NULL) {
+#line 236 "contacts-accounts-list.c"
+                       GtkImage* _tmp11_;
+#line 54 "../src/contacts-accounts-list.vala"
+                       _tmp11_ = checkmark;
+#line 54 "../src/contacts-accounts-list.vala"
+                       gtk_widget_hide ((GtkWidget*) _tmp11_);
+#line 242 "contacts-accounts-list.c"
+               }
+       }
+#line 57 "../src/contacts-accounts-list.vala"
+       _tmp12_ = _g_object_ref0 (row);
+#line 57 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (self->priv->last_selected_row);
+#line 57 "../src/contacts-accounts-list.vala"
+       self->priv->last_selected_row = _tmp12_;
+#line 59 "../src/contacts-accounts-list.vala"
+       _tmp13_ = g_object_get_data ((GObject*) row, "store");
+#line 59 "../src/contacts-accounts-list.vala"
+       _tmp14_ = _g_object_ref0 ((FolksPersonaStore*) _tmp13_);
+#line 59 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (self->selected_store);
+#line 59 "../src/contacts-accounts-list.vala"
+       self->selected_store = _tmp14_;
+#line 61 "../src/contacts-accounts-list.vala"
+       g_signal_emit (self, contacts_accounts_list_signals[CONTACTS_ACCOUNTS_LIST_ACCOUNT_SELECTED_SIGNAL], 
0);
+#line 39 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (checkmark);
+#line 263 "contacts-accounts-list.c"
+}
+
+void
+contacts_accounts_list_update_contents (ContactsAccountsList* self,
+                                        gboolean select_active)
+{
+       GList* _tmp0_;
+       FolksPersonaStore** eds_stores = NULL;
+       ContactsStore* _tmp2_;
+       gint _tmp3_ = 0;
+       FolksPersonaStore** _tmp4_;
+       gint eds_stores_length1;
+       gint _eds_stores_size_;
+       FolksPersonaStore** _tmp5_;
+       gint _tmp5__length1;
+       FolksPersonaStore* local_store = NULL;
+       FolksPersonaStore** _tmp6_;
+       gint _tmp6__length1;
+       FolksPersonaStore* _tmp68_;
+#line 64 "../src/contacts-accounts-list.vala"
+       g_return_if_fail (self != NULL);
+#line 65 "../src/contacts-accounts-list.vala"
+       _tmp0_ = gtk_container_get_children ((GtkContainer*) self);
+#line 287 "contacts-accounts-list.c"
+       {
+               GList* child_collection = NULL;
+               GList* child_it = NULL;
+#line 65 "../src/contacts-accounts-list.vala"
+               child_collection = _tmp0_;
+#line 65 "../src/contacts-accounts-list.vala"
+               for (child_it = child_collection; child_it != NULL; child_it = child_it->next) {
+#line 295 "contacts-accounts-list.c"
+                       GtkWidget* child = NULL;
+#line 65 "../src/contacts-accounts-list.vala"
+                       child = (GtkWidget*) child_it->data;
+#line 299 "contacts-accounts-list.c"
+                       {
+                               GtkWidget* _tmp1_;
+#line 66 "../src/contacts-accounts-list.vala"
+                               _tmp1_ = child;
+#line 66 "../src/contacts-accounts-list.vala"
+                               gtk_widget_destroy (_tmp1_);
+#line 306 "contacts-accounts-list.c"
+                       }
+               }
+#line 65 "../src/contacts-accounts-list.vala"
+               (child_collection == NULL) ? NULL : (child_collection = (g_list_free (child_collection), 
NULL));
+#line 311 "contacts-accounts-list.c"
+       }
+#line 70 "../src/contacts-accounts-list.vala"
+       _tmp2_ = self->priv->contacts_store;
+#line 70 "../src/contacts-accounts-list.vala"
+       _tmp4_ = contacts_utils_get_eds_address_books (_tmp2_, &_tmp3_);
+#line 70 "../src/contacts-accounts-list.vala"
+       eds_stores = _tmp4_;
+#line 70 "../src/contacts-accounts-list.vala"
+       eds_stores_length1 = _tmp3_;
+#line 70 "../src/contacts-accounts-list.vala"
+       _eds_stores_size_ = eds_stores_length1;
+#line 71 "../src/contacts-accounts-list.vala"
+       _tmp5_ = eds_stores;
+#line 71 "../src/contacts-accounts-list.vala"
+       _tmp5__length1 = eds_stores_length1;
+#line 71 "../src/contacts-accounts-list.vala"
+       g_debug ("contacts-accounts-list.vala:71: Found %d EDS stores", _tmp5__length1);
+#line 73 "../src/contacts-accounts-list.vala"
+       local_store = NULL;
+#line 74 "../src/contacts-accounts-list.vala"
+       _tmp6_ = eds_stores;
+#line 74 "../src/contacts-accounts-list.vala"
+       _tmp6__length1 = eds_stores_length1;
+#line 335 "contacts-accounts-list.c"
+       {
+               FolksPersonaStore** persona_store_collection = NULL;
+               gint persona_store_collection_length1 = 0;
+               gint _persona_store_collection_size_ = 0;
+               gint persona_store_it = 0;
+#line 74 "../src/contacts-accounts-list.vala"
+               persona_store_collection = _tmp6_;
+#line 74 "../src/contacts-accounts-list.vala"
+               persona_store_collection_length1 = _tmp6__length1;
+#line 74 "../src/contacts-accounts-list.vala"
+               for (persona_store_it = 0; persona_store_it < persona_store_collection_length1; 
persona_store_it = persona_store_it + 1) {
+#line 347 "contacts-accounts-list.c"
+                       FolksPersonaStore* _tmp7_;
+                       FolksPersonaStore* persona_store = NULL;
+#line 74 "../src/contacts-accounts-list.vala"
+                       _tmp7_ = _g_object_ref0 (persona_store_collection[persona_store_it]);
+#line 74 "../src/contacts-accounts-list.vala"
+                       persona_store = _tmp7_;
+#line 354 "contacts-accounts-list.c"
+                       {
+                               FolksPersonaStore* _tmp8_;
+                               const gchar* _tmp9_;
+                               const gchar* _tmp10_;
+                               ESource* source = NULL;
+                               FolksPersonaStore* _tmp13_;
+                               ESource* _tmp14_;
+                               ESource* _tmp15_;
+                               ESource* _tmp16_;
+                               ESource* parent_source = NULL;
+                               ESourceRegistry* _tmp17_;
+                               ESource* _tmp18_;
+                               const gchar* _tmp19_;
+                               const gchar* _tmp20_;
+                               ESource* _tmp21_;
+                               gchar* provider_name = NULL;
+                               FolksPersonaStore* _tmp22_;
+                               gchar* _tmp23_;
+                               const gchar* _tmp24_;
+                               gchar* source_account_id = NULL;
+                               gchar* _tmp25_;
+                               ESource* _tmp26_;
+                               HdyActionRow* row = NULL;
+                               HdyActionRow* _tmp34_;
+                               HdyActionRow* _tmp35_;
+                               FolksPersonaStore* _tmp36_;
+                               FolksPersonaStore* _tmp37_;
+                               GtkImage* provider_image = NULL;
+                               const gchar* _tmp38_;
+                               HdyActionRow* _tmp42_;
+                               GtkImage* _tmp43_;
+                               HdyActionRow* _tmp44_;
+                               const gchar* _tmp45_;
+                               HdyActionRow* _tmp46_;
+                               ESource* _tmp47_;
+                               const gchar* _tmp48_;
+                               const gchar* _tmp49_;
+                               HdyActionRow* _tmp50_;
+                               HdyActionRow* _tmp51_;
+                               GtkImage* checkmark = NULL;
+                               GtkImage* _tmp52_;
+                               GtkImage* _tmp53_;
+                               HdyActionRow* _tmp54_;
+                               GtkImage* _tmp55_;
+                               HdyActionRow* _tmp56_;
+                               GtkImage* _tmp57_;
+                               GtkImage* _tmp58_;
+                               HdyActionRow* _tmp59_;
+                               gboolean _tmp60_ = FALSE;
+#line 75 "../src/contacts-accounts-list.vala"
+                               _tmp8_ = persona_store;
+#line 75 "../src/contacts-accounts-list.vala"
+                               _tmp9_ = folks_persona_store_get_id (_tmp8_);
+#line 75 "../src/contacts-accounts-list.vala"
+                               _tmp10_ = _tmp9_;
+#line 75 "../src/contacts-accounts-list.vala"
+                               if (g_strcmp0 (_tmp10_, "system-address-book") == 0) {
+#line 412 "contacts-accounts-list.c"
+                                       FolksPersonaStore* _tmp11_;
+                                       FolksPersonaStore* _tmp12_;
+#line 76 "../src/contacts-accounts-list.vala"
+                                       _tmp11_ = persona_store;
+#line 76 "../src/contacts-accounts-list.vala"
+                                       _tmp12_ = _g_object_ref0 (_tmp11_);
+#line 76 "../src/contacts-accounts-list.vala"
+                                       _g_object_unref0 (local_store);
+#line 76 "../src/contacts-accounts-list.vala"
+                                       local_store = _tmp12_;
+#line 77 "../src/contacts-accounts-list.vala"
+                                       _g_object_unref0 (persona_store);
+#line 77 "../src/contacts-accounts-list.vala"
+                                       continue;
+#line 427 "contacts-accounts-list.c"
+                               }
+#line 79 "../src/contacts-accounts-list.vala"
+                               _tmp13_ = persona_store;
+#line 79 "../src/contacts-accounts-list.vala"
+                               _tmp14_ = edsf_persona_store_get_source (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, 
EDSF_TYPE_PERSONA_STORE) ? ((EdsfPersonaStore*) _tmp13_) : NULL);
+#line 79 "../src/contacts-accounts-list.vala"
+                               _tmp15_ = _tmp14_;
+#line 79 "../src/contacts-accounts-list.vala"
+                               _tmp16_ = _g_object_ref0 (_tmp15_);
+#line 79 "../src/contacts-accounts-list.vala"
+                               source = _tmp16_;
+#line 80 "../src/contacts-accounts-list.vala"
+                               _tmp17_ = contacts_eds_source_registry;
+#line 80 "../src/contacts-accounts-list.vala"
+                               _tmp18_ = source;
+#line 80 "../src/contacts-accounts-list.vala"
+                               _tmp19_ = e_source_get_parent (_tmp18_);
+#line 80 "../src/contacts-accounts-list.vala"
+                               _tmp20_ = _tmp19_;
+#line 80 "../src/contacts-accounts-list.vala"
+                               _tmp21_ = e_source_registry_ref_source (_tmp17_, _tmp20_);
+#line 80 "../src/contacts-accounts-list.vala"
+                               parent_source = _tmp21_;
+#line 81 "../src/contacts-accounts-list.vala"
+                               _tmp22_ = persona_store;
+#line 81 "../src/contacts-accounts-list.vala"
+                               _tmp23_ = contacts_utils_format_persona_store_name (_tmp22_);
+#line 81 "../src/contacts-accounts-list.vala"
+                               provider_name = _tmp23_;
+#line 83 "../src/contacts-accounts-list.vala"
+                               _tmp24_ = provider_name;
+#line 83 "../src/contacts-accounts-list.vala"
+                               g_debug ("contacts-accounts-list.vala:83: Contact store \"%s\"", _tmp24_);
+#line 85 "../src/contacts-accounts-list.vala"
+                               _tmp25_ = g_strdup ("");
+#line 85 "../src/contacts-accounts-list.vala"
+                               source_account_id = _tmp25_;
+#line 86 "../src/contacts-accounts-list.vala"
+                               _tmp26_ = parent_source;
+#line 86 "../src/contacts-accounts-list.vala"
+                               if (e_source_has_extension (_tmp26_, E_SOURCE_EXTENSION_GOA)) {
+#line 469 "contacts-accounts-list.c"
+                                       ESourceGoa* goa_source_ext = NULL;
+                                       ESource* _tmp27_;
+                                       ESourceExtension* _tmp28_;
+                                       ESourceGoa* _tmp29_;
+                                       ESourceGoa* _tmp30_;
+                                       const gchar* _tmp31_;
+                                       const gchar* _tmp32_;
+                                       gchar* _tmp33_;
+#line 87 "../src/contacts-accounts-list.vala"
+                                       _tmp27_ = parent_source;
+#line 87 "../src/contacts-accounts-list.vala"
+                                       _tmp28_ = e_source_get_extension (_tmp27_, E_SOURCE_EXTENSION_GOA);
+#line 87 "../src/contacts-accounts-list.vala"
+                                       _tmp29_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, 
e_source_goa_get_type ()) ? ((ESourceGoa*) _tmp28_) : NULL);
+#line 87 "../src/contacts-accounts-list.vala"
+                                       goa_source_ext = _tmp29_;
+#line 88 "../src/contacts-accounts-list.vala"
+                                       _tmp30_ = goa_source_ext;
+#line 88 "../src/contacts-accounts-list.vala"
+                                       _tmp31_ = e_source_goa_get_account_id (_tmp30_);
+#line 88 "../src/contacts-accounts-list.vala"
+                                       _tmp32_ = _tmp31_;
+#line 88 "../src/contacts-accounts-list.vala"
+                                       _tmp33_ = g_strdup (_tmp32_);
+#line 88 "../src/contacts-accounts-list.vala"
+                                       _g_free0 (source_account_id);
+#line 88 "../src/contacts-accounts-list.vala"
+                                       source_account_id = _tmp33_;
+#line 86 "../src/contacts-accounts-list.vala"
+                                       _g_object_unref0 (goa_source_ext);
+#line 500 "contacts-accounts-list.c"
+                               }
+#line 91 "../src/contacts-accounts-list.vala"
+                               _tmp34_ = hdy_action_row_new ();
+#line 91 "../src/contacts-accounts-list.vala"
+                               g_object_ref_sink (_tmp34_);
+#line 91 "../src/contacts-accounts-list.vala"
+                               row = _tmp34_;
+#line 92 "../src/contacts-accounts-list.vala"
+                               _tmp35_ = row;
+#line 92 "../src/contacts-accounts-list.vala"
+                               _tmp36_ = persona_store;
+#line 92 "../src/contacts-accounts-list.vala"
+                               _tmp37_ = _g_object_ref0 (_tmp36_);
+#line 92 "../src/contacts-accounts-list.vala"
+                               g_object_set_data_full ((GObject*) _tmp35_, "store", _tmp37_, g_object_unref);
+#line 95 "../src/contacts-accounts-list.vala"
+                               _tmp38_ = source_account_id;
+#line 95 "../src/contacts-accounts-list.vala"
+                               if (g_strcmp0 (_tmp38_, "") != 0) {
+#line 520 "contacts-accounts-list.c"
+                                       const gchar* _tmp39_;
+                                       GtkImage* _tmp40_;
+#line 96 "../src/contacts-accounts-list.vala"
+                                       _tmp39_ = source_account_id;
+#line 96 "../src/contacts-accounts-list.vala"
+                                       _tmp40_ = contacts_get_icon_for_goa_account (_tmp39_);
+#line 96 "../src/contacts-accounts-list.vala"
+                                       _g_object_unref0 (provider_image);
+#line 96 "../src/contacts-accounts-list.vala"
+                                       provider_image = _tmp40_;
+#line 531 "contacts-accounts-list.c"
+                               } else {
+                                       GtkImage* _tmp41_;
+#line 98 "../src/contacts-accounts-list.vala"
+                                       _tmp41_ = (GtkImage*) gtk_image_new_from_icon_name (APP_ID, 
(GtkIconSize) GTK_ICON_SIZE_DIALOG);
+#line 98 "../src/contacts-accounts-list.vala"
+                                       g_object_ref_sink (_tmp41_);
+#line 98 "../src/contacts-accounts-list.vala"
+                                       _g_object_unref0 (provider_image);
+#line 98 "../src/contacts-accounts-list.vala"
+                                       provider_image = _tmp41_;
+#line 542 "contacts-accounts-list.c"
+                               }
+#line 99 "../src/contacts-accounts-list.vala"
+                               _tmp42_ = row;
+#line 99 "../src/contacts-accounts-list.vala"
+                               _tmp43_ = provider_image;
+#line 99 "../src/contacts-accounts-list.vala"
+                               hdy_action_row_add_prefix (_tmp42_, (GtkWidget*) _tmp43_);
+#line 100 "../src/contacts-accounts-list.vala"
+                               _tmp44_ = row;
+#line 100 "../src/contacts-accounts-list.vala"
+                               _tmp45_ = provider_name;
+#line 100 "../src/contacts-accounts-list.vala"
+                               hdy_action_row_set_title (_tmp44_, _tmp45_);
+#line 101 "../src/contacts-accounts-list.vala"
+                               _tmp46_ = row;
+#line 101 "../src/contacts-accounts-list.vala"
+                               _tmp47_ = parent_source;
+#line 101 "../src/contacts-accounts-list.vala"
+                               _tmp48_ = e_source_get_display_name (_tmp47_);
+#line 101 "../src/contacts-accounts-list.vala"
+                               _tmp49_ = _tmp48_;
+#line 101 "../src/contacts-accounts-list.vala"
+                               hdy_action_row_set_subtitle (_tmp46_, _tmp49_);
+#line 102 "../src/contacts-accounts-list.vala"
+                               _tmp50_ = row;
+#line 102 "../src/contacts-accounts-list.vala"
+                               gtk_widget_show_all ((GtkWidget*) _tmp50_);
+#line 103 "../src/contacts-accounts-list.vala"
+                               _tmp51_ = row;
+#line 103 "../src/contacts-accounts-list.vala"
+                               gtk_widget_set_no_show_all ((GtkWidget*) _tmp51_, TRUE);
+#line 104 "../src/contacts-accounts-list.vala"
+                               _tmp52_ = (GtkImage*) gtk_image_new_from_icon_name ("object-select-symbolic", 
(GtkIconSize) GTK_ICON_SIZE_MENU);
+#line 104 "../src/contacts-accounts-list.vala"
+                               g_object_ref_sink (_tmp52_);
+#line 104 "../src/contacts-accounts-list.vala"
+                               checkmark = _tmp52_;
+#line 105 "../src/contacts-accounts-list.vala"
+                               _tmp53_ = checkmark;
+#line 105 "../src/contacts-accounts-list.vala"
+                               g_object_set ((GObject*) _tmp53_, "margin-end", 6, "valign", 
GTK_ALIGN_CENTER, "halign", GTK_ALIGN_END, "vexpand", TRUE, "hexpand", TRUE, NULL);
+#line 110 "../src/contacts-accounts-list.vala"
+                               _tmp54_ = row;
+#line 110 "../src/contacts-accounts-list.vala"
+                               _tmp55_ = checkmark;
+#line 110 "../src/contacts-accounts-list.vala"
+                               hdy_action_row_add_action (_tmp54_, (GtkWidget*) _tmp55_);
+#line 111 "../src/contacts-accounts-list.vala"
+                               _tmp56_ = row;
+#line 111 "../src/contacts-accounts-list.vala"
+                               _tmp57_ = checkmark;
+#line 111 "../src/contacts-accounts-list.vala"
+                               _tmp58_ = _g_object_ref0 (_tmp57_);
+#line 111 "../src/contacts-accounts-list.vala"
+                               g_object_set_data_full ((GObject*) _tmp56_, "checkmark", _tmp58_, 
g_object_unref);
+#line 112 "../src/contacts-accounts-list.vala"
+                               _tmp59_ = row;
+#line 112 "../src/contacts-accounts-list.vala"
+                               gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp59_);
+#line 114 "../src/contacts-accounts-list.vala"
+                               if (select_active) {
+#line 604 "contacts-accounts-list.c"
+                                       FolksPersonaStore* _tmp61_;
+                                       ContactsStore* _tmp62_;
+                                       FolksIndividualAggregator* _tmp63_;
+                                       FolksIndividualAggregator* _tmp64_;
+                                       FolksPersonaStore* _tmp65_;
+                                       FolksPersonaStore* _tmp66_;
+#line 115 "../src/contacts-accounts-list.vala"
+                                       _tmp61_ = persona_store;
+#line 115 "../src/contacts-accounts-list.vala"
+                                       _tmp62_ = self->priv->contacts_store;
+#line 115 "../src/contacts-accounts-list.vala"
+                                       _tmp63_ = contacts_store_get_aggregator (_tmp62_);
+#line 115 "../src/contacts-accounts-list.vala"
+                                       _tmp64_ = _tmp63_;
+#line 115 "../src/contacts-accounts-list.vala"
+                                       _tmp65_ = folks_individual_aggregator_get_primary_store (_tmp64_);
+#line 115 "../src/contacts-accounts-list.vala"
+                                       _tmp66_ = _tmp65_;
+#line 115 "../src/contacts-accounts-list.vala"
+                                       _tmp60_ = _tmp61_ == _tmp66_;
+#line 625 "contacts-accounts-list.c"
+                               } else {
+#line 114 "../src/contacts-accounts-list.vala"
+                                       _tmp60_ = FALSE;
+#line 629 "contacts-accounts-list.c"
+                               }
+#line 114 "../src/contacts-accounts-list.vala"
+                               if (_tmp60_) {
+#line 633 "contacts-accounts-list.c"
+                                       HdyActionRow* _tmp67_;
+#line 116 "../src/contacts-accounts-list.vala"
+                                       _tmp67_ = row;
+#line 116 "../src/contacts-accounts-list.vala"
+                                       g_signal_emit_by_name ((GtkListBox*) self, "row-activated", 
(GtkListBoxRow*) _tmp67_);
+#line 639 "contacts-accounts-list.c"
+                               }
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_object_unref0 (checkmark);
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_object_unref0 (provider_image);
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_object_unref0 (row);
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_free0 (source_account_id);
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_free0 (provider_name);
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_object_unref0 (parent_source);
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_object_unref0 (source);
+#line 74 "../src/contacts-accounts-list.vala"
+                               _g_object_unref0 (persona_store);
+#line 657 "contacts-accounts-list.c"
+                       }
+               }
+       }
+#line 120 "../src/contacts-accounts-list.vala"
+       _tmp68_ = local_store;
+#line 120 "../src/contacts-accounts-list.vala"
+       if (_tmp68_ != NULL) {
+#line 665 "contacts-accounts-list.c"
+               HdyActionRow* local_row = NULL;
+               HdyActionRow* _tmp69_;
+               GtkImage* provider_image = NULL;
+               GtkImage* _tmp70_;
+               HdyActionRow* _tmp71_;
+               GtkImage* _tmp72_;
+               HdyActionRow* _tmp73_;
+               HdyActionRow* _tmp74_;
+               HdyActionRow* _tmp75_;
+               GtkImage* checkmark = NULL;
+               GtkImage* _tmp76_;
+               GtkImage* _tmp77_;
+               HdyActionRow* _tmp78_;
+               GtkImage* _tmp79_;
+               HdyActionRow* _tmp80_;
+               GtkImage* _tmp81_;
+               GtkImage* _tmp82_;
+               HdyActionRow* _tmp83_;
+               gboolean _tmp84_ = FALSE;
+#line 121 "../src/contacts-accounts-list.vala"
+               _tmp69_ = hdy_action_row_new ();
+#line 121 "../src/contacts-accounts-list.vala"
+               g_object_ref_sink (_tmp69_);
+#line 121 "../src/contacts-accounts-list.vala"
+               local_row = _tmp69_;
+#line 122 "../src/contacts-accounts-list.vala"
+               _tmp70_ = (GtkImage*) gtk_image_new_from_icon_name (APP_ID, (GtkIconSize) 
GTK_ICON_SIZE_DIALOG);
+#line 122 "../src/contacts-accounts-list.vala"
+               g_object_ref_sink (_tmp70_);
+#line 122 "../src/contacts-accounts-list.vala"
+               provider_image = _tmp70_;
+#line 123 "../src/contacts-accounts-list.vala"
+               _tmp71_ = local_row;
+#line 123 "../src/contacts-accounts-list.vala"
+               _tmp72_ = provider_image;
+#line 123 "../src/contacts-accounts-list.vala"
+               hdy_action_row_add_prefix (_tmp71_, (GtkWidget*) _tmp72_);
+#line 124 "../src/contacts-accounts-list.vala"
+               _tmp73_ = local_row;
+#line 124 "../src/contacts-accounts-list.vala"
+               hdy_action_row_set_title (_tmp73_, _ ("Local Address Book"));
+#line 125 "../src/contacts-accounts-list.vala"
+               _tmp74_ = local_row;
+#line 125 "../src/contacts-accounts-list.vala"
+               gtk_widget_show_all ((GtkWidget*) _tmp74_);
+#line 126 "../src/contacts-accounts-list.vala"
+               _tmp75_ = local_row;
+#line 126 "../src/contacts-accounts-list.vala"
+               gtk_widget_set_no_show_all ((GtkWidget*) _tmp75_, TRUE);
+#line 127 "../src/contacts-accounts-list.vala"
+               _tmp76_ = (GtkImage*) gtk_image_new_from_icon_name ("object-select-symbolic", (GtkIconSize) 
GTK_ICON_SIZE_MENU);
+#line 127 "../src/contacts-accounts-list.vala"
+               g_object_ref_sink (_tmp76_);
+#line 127 "../src/contacts-accounts-list.vala"
+               checkmark = _tmp76_;
+#line 128 "../src/contacts-accounts-list.vala"
+               _tmp77_ = checkmark;
+#line 128 "../src/contacts-accounts-list.vala"
+               g_object_set ((GObject*) _tmp77_, "margin-end", 6, "valign", GTK_ALIGN_CENTER, "halign", 
GTK_ALIGN_END, "vexpand", TRUE, "hexpand", TRUE, NULL);
+#line 133 "../src/contacts-accounts-list.vala"
+               _tmp78_ = local_row;
+#line 133 "../src/contacts-accounts-list.vala"
+               _tmp79_ = checkmark;
+#line 133 "../src/contacts-accounts-list.vala"
+               hdy_action_row_add_action (_tmp78_, (GtkWidget*) _tmp79_);
+#line 134 "../src/contacts-accounts-list.vala"
+               _tmp80_ = local_row;
+#line 134 "../src/contacts-accounts-list.vala"
+               _tmp81_ = checkmark;
+#line 134 "../src/contacts-accounts-list.vala"
+               _tmp82_ = _g_object_ref0 (_tmp81_);
+#line 134 "../src/contacts-accounts-list.vala"
+               g_object_set_data_full ((GObject*) _tmp80_, "checkmark", _tmp82_, g_object_unref);
+#line 135 "../src/contacts-accounts-list.vala"
+               _tmp83_ = local_row;
+#line 135 "../src/contacts-accounts-list.vala"
+               gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp83_);
+#line 136 "../src/contacts-accounts-list.vala"
+               if (select_active) {
+#line 745 "contacts-accounts-list.c"
+                       FolksPersonaStore* _tmp85_;
+                       ContactsStore* _tmp86_;
+                       FolksIndividualAggregator* _tmp87_;
+                       FolksIndividualAggregator* _tmp88_;
+                       FolksPersonaStore* _tmp89_;
+                       FolksPersonaStore* _tmp90_;
+#line 137 "../src/contacts-accounts-list.vala"
+                       _tmp85_ = local_store;
+#line 137 "../src/contacts-accounts-list.vala"
+                       _tmp86_ = self->priv->contacts_store;
+#line 137 "../src/contacts-accounts-list.vala"
+                       _tmp87_ = contacts_store_get_aggregator (_tmp86_);
+#line 137 "../src/contacts-accounts-list.vala"
+                       _tmp88_ = _tmp87_;
+#line 137 "../src/contacts-accounts-list.vala"
+                       _tmp89_ = folks_individual_aggregator_get_primary_store (_tmp88_);
+#line 137 "../src/contacts-accounts-list.vala"
+                       _tmp90_ = _tmp89_;
+#line 137 "../src/contacts-accounts-list.vala"
+                       _tmp84_ = _tmp85_ == _tmp90_;
+#line 766 "contacts-accounts-list.c"
+               } else {
+#line 136 "../src/contacts-accounts-list.vala"
+                       _tmp84_ = FALSE;
+#line 770 "contacts-accounts-list.c"
+               }
+#line 136 "../src/contacts-accounts-list.vala"
+               if (_tmp84_) {
+#line 774 "contacts-accounts-list.c"
+                       HdyActionRow* _tmp91_;
+#line 138 "../src/contacts-accounts-list.vala"
+                       _tmp91_ = local_row;
+#line 138 "../src/contacts-accounts-list.vala"
+                       g_signal_emit_by_name ((GtkListBox*) self, "row-activated", (GtkListBoxRow*) _tmp91_);
+#line 780 "contacts-accounts-list.c"
+               }
+#line 120 "../src/contacts-accounts-list.vala"
+               _g_object_unref0 (checkmark);
+#line 120 "../src/contacts-accounts-list.vala"
+               _g_object_unref0 (provider_image);
+#line 120 "../src/contacts-accounts-list.vala"
+               _g_object_unref0 (local_row);
+#line 788 "contacts-accounts-list.c"
+       }
+#line 142 "../src/contacts-accounts-list.vala"
+       gtk_widget_show_all ((GtkWidget*) self);
+#line 64 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (local_store);
+#line 64 "../src/contacts-accounts-list.vala"
+       eds_stores = (_vala_array_free (eds_stores, eds_stores_length1, (GDestroyNotify) g_object_unref), 
NULL);
+#line 796 "contacts-accounts-list.c"
+}
+
+static void
+contacts_accounts_list_class_init (ContactsAccountsListClass * klass,
+                                   gpointer klass_data)
+{
+#line 23 "../src/contacts-accounts-list.vala"
+       contacts_accounts_list_parent_class = g_type_class_peek_parent (klass);
+#line 23 "../src/contacts-accounts-list.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsAccountsList_private_offset);
+#line 23 "../src/contacts-accounts-list.vala"
+       ((GtkListBoxClass *) klass)->row_activated = (void (*) (GtkListBox*, GtkListBoxRow*)) 
contacts_accounts_list_real_row_activated;
+#line 23 "../src/contacts-accounts-list.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_accounts_list_finalize;
+#line 23 "../src/contacts-accounts-list.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-accounts-list.ui");
+#line 23 "../src/contacts-accounts-list.vala"
+       contacts_accounts_list_signals[CONTACTS_ACCOUNTS_LIST_ACCOUNT_SELECTED_SIGNAL] = g_signal_new 
("account-selected", CONTACTS_TYPE_ACCOUNTS_LIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+#line 815 "contacts-accounts-list.c"
+}
+
+static void
+contacts_accounts_list_instance_init (ContactsAccountsList * self,
+                                      gpointer klass)
+{
+#line 23 "../src/contacts-accounts-list.vala"
+       self->priv = contacts_accounts_list_get_instance_private (self);
+#line 23 "../src/contacts-accounts-list.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 826 "contacts-accounts-list.c"
+}
+
+static void
+contacts_accounts_list_finalize (GObject * obj)
+{
+       ContactsAccountsList * self;
+#line 23 "../src/contacts-accounts-list.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_ACCOUNTS_LIST, ContactsAccountsList);
+#line 24 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (self->priv->last_selected_row);
+#line 26 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (self->priv->contacts_store);
+#line 28 "../src/contacts-accounts-list.vala"
+       _g_object_unref0 (self->selected_store);
+#line 23 "../src/contacts-accounts-list.vala"
+       G_OBJECT_CLASS (contacts_accounts_list_parent_class)->finalize (obj);
+#line 843 "contacts-accounts-list.c"
+}
+
+static GType
+contacts_accounts_list_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsAccountsListClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_accounts_list_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsAccountsList), 0, (GInstanceInitFunc) contacts_accounts_list_instance_init, NULL 
};
+       GType contacts_accounts_list_type_id;
+       contacts_accounts_list_type_id = g_type_register_static (gtk_list_box_get_type (), 
"ContactsAccountsList", &g_define_type_info, 0);
+       ContactsAccountsList_private_offset = g_type_add_instance_private (contacts_accounts_list_type_id, 
sizeof (ContactsAccountsListPrivate));
+       return contacts_accounts_list_type_id;
+}
+
+GType
+contacts_accounts_list_get_type (void)
+{
+       static volatile gsize contacts_accounts_list_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_accounts_list_type_id__volatile)) {
+               GType contacts_accounts_list_type_id;
+               contacts_accounts_list_type_id = contacts_accounts_list_get_type_once ();
+               g_once_init_leave (&contacts_accounts_list_type_id__volatile, contacts_accounts_list_type_id);
+       }
+       return contacts_accounts_list_type_id__volatile;
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-app.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-app.c
new file mode 100644
index 0000000..934efea
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-app.c
@@ -0,0 +1,2855 @@
+/* contacts-app.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-app.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <gio/gio.h>
+#include "contacts.h"
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <config.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <folks/folks.h>
+#include <handy.h>
+#include <float.h>
+#include <math.h>
+#include <folks/folks-eds.h>
+#include <libedataserver/libedataserver.h>
+#include <gdk/gdk.h>
+
+#define CONTACTS_TYPE_APP (contacts_app_get_type ())
+#define CONTACTS_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_APP, ContactsApp))
+#define CONTACTS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_APP, ContactsAppClass))
+#define CONTACTS_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_APP))
+#define CONTACTS_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_APP))
+#define CONTACTS_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_APP, ContactsAppClass))
+
+typedef struct _ContactsApp ContactsApp;
+typedef struct _ContactsAppClass ContactsAppClass;
+typedef struct _ContactsAppPrivate ContactsAppPrivate;
+
+#define CONTACTS_TYPE_SETTINGS (contacts_settings_get_type ())
+#define CONTACTS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETTINGS, ContactsSettings))
+#define CONTACTS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+#define CONTACTS_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+
+typedef struct _ContactsSettings ContactsSettings;
+typedef struct _ContactsSettingsClass ContactsSettingsClass;
+
+#define CONTACTS_TYPE_WINDOW (contacts_window_get_type ())
+#define CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_WINDOW, ContactsWindow))
+#define CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+#define CONTACTS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+
+typedef struct _ContactsWindow ContactsWindow;
+typedef struct _ContactsWindowClass ContactsWindowClass;
+enum  {
+       CONTACTS_APP_0_PROPERTY,
+       CONTACTS_APP_NUM_PROPERTIES
+};
+static GParamSpec* contacts_app_properties[CONTACTS_APP_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL)))
+#define _g_variant_dict_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_dict_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _Block1Data Block1Data;
+typedef struct _ContactsAppShowIndividualData ContactsAppShowIndividualData;
+
+#define CONTACTS_TYPE_ACCOUNTS_LIST (contacts_accounts_list_get_type ())
+#define CONTACTS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_ACCOUNTS_LIST, 
ContactsAccountsList))
+#define CONTACTS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_ACCOUNTS_LIST, 
ContactsAccountsListClass))
+#define CONTACTS_IS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_ACCOUNTS_LIST))
+#define CONTACTS_IS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_ACCOUNTS_LIST))
+#define CONTACTS_ACCOUNTS_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_ACCOUNTS_LIST, ContactsAccountsListClass))
+
+typedef struct _ContactsAccountsList ContactsAccountsList;
+typedef struct _ContactsAccountsListClass ContactsAccountsListClass;
+typedef struct _Block2Data Block2Data;
+typedef struct _ContactsAccountsListPrivate ContactsAccountsListPrivate;
+#define _g_variant_type_free0(var) ((var == NULL) ? NULL : (var = (g_variant_type_free (var), NULL)))
+#define _g_variant_builder_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_builder_unref (var), NULL)))
+typedef struct _Block3Data Block3Data;
+typedef struct _ContactsAppShowByEmailData ContactsAppShowByEmailData;
+typedef struct _Block4Data Block4Data;
+typedef struct _Block5Data Block5Data;
+typedef struct _Block6Data Block6Data;
+
+#define CONTACTS_TYPE_SETUP_WINDOW (contacts_setup_window_get_type ())
+#define CONTACTS_SETUP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETUP_WINDOW, 
ContactsSetupWindow))
+#define CONTACTS_SETUP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETUP_WINDOW, 
ContactsSetupWindowClass))
+#define CONTACTS_IS_SETUP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETUP_WINDOW))
+#define CONTACTS_IS_SETUP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETUP_WINDOW))
+#define CONTACTS_SETUP_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETUP_WINDOW, 
ContactsSetupWindowClass))
+
+typedef struct _ContactsSetupWindow ContactsSetupWindow;
+typedef struct _ContactsSetupWindowClass ContactsSetupWindowClass;
+typedef struct _Block7Data Block7Data;
+
+struct _ContactsApp {
+       GtkApplication parent_instance;
+       ContactsAppPrivate * priv;
+};
+
+struct _ContactsAppClass {
+       GtkApplicationClass parent_class;
+};
+
+struct _ContactsAppPrivate {
+       ContactsSettings* settings;
+       ContactsStore* contacts_store;
+       ContactsWindow* window;
+       gboolean is_prepare_scheluded;
+       gboolean is_quiescent_scheduled;
+};
+
+struct _Block1Data {
+       int _ref_count_;
+       ContactsApp* self;
+       GtkMessageDialog* dialog;
+};
+
+struct _ContactsAppShowIndividualData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsApp* self;
+       gchar* id;
+       FolksIndividual* contact;
+       FolksIndividual* _tmp0_;
+       ContactsStore* _tmp1_;
+       FolksIndividualAggregator* _tmp2_;
+       FolksIndividualAggregator* _tmp3_;
+       FolksIndividual* _tmp4_;
+       FolksIndividual* _tmp5_;
+       GError* e;
+       FolksIndividual* _tmp6_;
+       FolksIndividual* _tmp7_;
+       Block1Data* _data1_;
+       ContactsWindow* _tmp8_;
+       GtkMessageDialog* _tmp9_;
+       GtkMessageDialog* _tmp10_;
+       GtkMessageDialog* _tmp11_;
+       GtkMessageDialog* _tmp12_;
+       GError* _inner_error0_;
+};
+
+struct _Block2Data {
+       int _ref_count_;
+       ContactsApp* self;
+       HdyDialog* dialog;
+       GtkWidget* ok_button;
+       ContactsAccountsList* acc;
+       gulong active_button_once;
+       gulong stores_changed_id;
+};
+
+struct _ContactsAccountsList {
+       GtkListBox parent_instance;
+       ContactsAccountsListPrivate * priv;
+       FolksPersonaStore* selected_store;
+};
+
+struct _ContactsAccountsListClass {
+       GtkListBoxClass parent_class;
+};
+
+struct _Block3Data {
+       int _ref_count_;
+       ContactsApp* self;
+       GtkMessageDialog* dialog;
+};
+
+struct _ContactsAppShowByEmailData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsApp* self;
+       gchar* email_address;
+       FolksSimpleQuery* query;
+       gchar* _tmp0_;
+       gchar** _tmp1_;
+       gchar** _tmp2_;
+       gint _tmp2__length1;
+       FolksSimpleQuery* _tmp3_;
+       FolksSimpleQuery* _tmp4_;
+       FolksIndividual* individual;
+       ContactsStore* _tmp5_;
+       FolksSimpleQuery* _tmp6_;
+       FolksIndividual* _tmp7_;
+       FolksIndividual* _tmp8_;
+       FolksIndividual* _tmp9_;
+       Block3Data* _data3_;
+       ContactsWindow* _tmp10_;
+       GtkMessageDialog* _tmp11_;
+       GtkMessageDialog* _tmp12_;
+       GtkMessageDialog* _tmp13_;
+       GtkMessageDialog* _tmp14_;
+};
+
+struct _Block4Data {
+       int _ref_count_;
+       ContactsApp* self;
+       gchar* query;
+};
+
+struct _Block5Data {
+       int _ref_count_;
+       ContactsApp* self;
+       gulong id;
+       guint id2;
+};
+
+struct _Block6Data {
+       int _ref_count_;
+       ContactsApp* self;
+       gulong id;
+       guint id2;
+};
+
+struct _Block7Data {
+       int _ref_count_;
+       ContactsApp* self;
+       GSimpleAction* change_book_action;
+       ContactsSetupWindow* setup_window;
+};
+
+static gint ContactsApp_private_offset;
+static gpointer contacts_app_parent_class = NULL;
+
+GType contacts_app_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsApp, g_object_unref)
+GType contacts_settings_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSettings, g_object_unref)
+GType contacts_window_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsWindow, g_object_unref)
+static void _g_application_quit_gsimple_action_activate_callback (GSimpleAction* action,
+                                                           GVariant* parameter,
+                                                           gpointer self);
+void contacts_app_show_help (ContactsApp* self);
+static void _contacts_app_show_help_gsimple_action_activate_callback (GSimpleAction* action,
+                                                               GVariant* parameter,
+                                                               gpointer self);
+void contacts_app_show_about (ContactsApp* self);
+static void _contacts_app_show_about_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                GVariant* parameter,
+                                                                gpointer self);
+void contacts_app_change_address_book (ContactsApp* self);
+static void _contacts_app_change_address_book_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                         GVariant* parameter,
+                                                                         gpointer self);
+void contacts_app_online_accounts (ContactsApp* self);
+static void _contacts_app_online_accounts_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                     GVariant* parameter,
+                                                                     gpointer self);
+void contacts_app_new_contact (ContactsApp* self);
+static void _contacts_app_new_contact_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                 GVariant* parameter,
+                                                                 gpointer self);
+static void contacts_app_on_show_contact (ContactsApp* self,
+                                   GSimpleAction* action,
+                                   GVariant* param);
+static void _contacts_app_on_show_contact_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                     GVariant* parameter,
+                                                                     gpointer self);
+ContactsApp* contacts_app_new (void);
+ContactsApp* contacts_app_construct (GType object_type);
+ContactsSettings* contacts_settings_new (ContactsApp* app);
+ContactsSettings* contacts_settings_construct (GType object_type,
+                                               ContactsApp* app);
+static void contacts_app_create_actions (ContactsApp* self);
+static gint contacts_app_real_command_line (GApplication* base,
+                                     GApplicationCommandLine* command_line);
+void contacts_app_show_individual (ContactsApp* self,
+                                   const gchar* id,
+                                   GAsyncReadyCallback _callback_,
+                                   gpointer _user_data_);
+void contacts_app_show_individual_finish (ContactsApp* self,
+                                          GAsyncResult* _res_);
+void contacts_app_show_by_email (ContactsApp* self,
+                                 const gchar* email_address,
+                                 GAsyncReadyCallback _callback_,
+                                 gpointer _user_data_);
+void contacts_app_show_by_email_finish (ContactsApp* self,
+                                        GAsyncResult* _res_);
+void contacts_app_show_search (ContactsApp* self,
+                               const gchar* query);
+static gint contacts_app_real_handle_local_options (GApplication* base,
+                                             GVariantDict* options);
+void contacts_app_show_contact (ContactsApp* self,
+                                FolksIndividual* individual);
+void contacts_window_set_shown_contact (ContactsWindow* self,
+                                        FolksIndividual* i);
+static void contacts_app_show_individual_data_free (gpointer _data);
+static gboolean contacts_app_show_individual_co (ContactsAppShowIndividualData* _data_);
+static void contacts_app_show_individual_ready (GObject* source_object,
+                                         GAsyncResult* _res_,
+                                         gpointer _user_data_);
+static Block1Data* block1_data_ref (Block1Data* _data1_);
+static void block1_data_unref (void * _userdata_);
+static void ___lambda74_ (Block1Data* _data1_,
+                   gint id);
+static void ____lambda74__gtk_dialog_response (GtkDialog* _sender,
+                                        gint response_id,
+                                        gpointer self);
+GType contacts_accounts_list_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAccountsList, g_object_unref)
+static Block2Data* block2_data_ref (Block2Data* _data2_);
+static void block2_data_unref (void * _userdata_);
+ContactsAccountsList* contacts_accounts_list_new (ContactsStore* contacts_store);
+ContactsAccountsList* contacts_accounts_list_construct (GType object_type,
+                                                        ContactsStore* contacts_store);
+void contacts_accounts_list_update_contents (ContactsAccountsList* self,
+                                             gboolean select_active);
+static void __lambda62_ (Block2Data* _data2_);
+static void ___lambda62__contacts_accounts_list_account_selected (ContactsAccountsList* _sender,
+                                                           gpointer self);
+static void __lambda63_ (Block2Data* _data2_);
+static void ___lambda63__folks_backend_store_backend_available (FolksBackendStore* _sender,
+                                                         FolksBackend* backend,
+                                                         gpointer self);
+static void __lambda64_ (Block2Data* _data2_,
+                  gint response);
+static void ___lambda64__gtk_dialog_response (GtkDialog* _sender,
+                                       gint response_id,
+                                       gpointer self);
+static void contacts_app_show_by_email_data_free (gpointer _data);
+static gboolean contacts_app_show_by_email_co (ContactsAppShowByEmailData* _data_);
+static void contacts_app_show_by_email_ready (GObject* source_object,
+                                       GAsyncResult* _res_,
+                                       gpointer _user_data_);
+static Block3Data* block3_data_ref (Block3Data* _data3_);
+static void block3_data_unref (void * _userdata_);
+static void ___lambda75_ (Block3Data* _data3_,
+                   gint id);
+static void ____lambda75__gtk_dialog_response (GtkDialog* _sender,
+                                        gint response_id,
+                                        gpointer self);
+static Block4Data* block4_data_ref (Block4Data* _data4_);
+static void block4_data_unref (void * _userdata_);
+void contacts_window_show_search (ContactsWindow* self,
+                                  const gchar* query);
+static void ___lambda76_ (Block4Data* _data4_);
+static void ____lambda76__contacts_store_quiescent (ContactsStore* _sender,
+                                             gpointer self);
+static void contacts_app_create_window (ContactsApp* self);
+ContactsWindow* contacts_window_new (ContactsSettings* settings,
+                                     ContactsApp* app,
+                                     ContactsStore* contacts_store);
+ContactsWindow* contacts_window_construct (GType object_type,
+                                           ContactsSettings* settings,
+                                           ContactsApp* app,
+                                           ContactsStore* contacts_store);
+static void contacts_app_schedule_window_creation (ContactsApp* self);
+static Block5Data* block5_data_ref (Block5Data* _data5_);
+static void block5_data_unref (void * _userdata_);
+static void __lambda65_ (Block5Data* _data5_);
+static void contacts_app_schedule_window_finish_ui (ContactsApp* self);
+static void ___lambda65__contacts_store_prepared (ContactsStore* _sender,
+                                           gpointer self);
+static gboolean __lambda68_ (Block5Data* _data5_);
+static gboolean ___lambda68__gsource_func (gpointer self);
+static Block6Data* block6_data_ref (Block6Data* _data6_);
+static void block6_data_unref (void * _userdata_);
+static void __lambda66_ (Block6Data* _data6_);
+void contacts_window_set_list_pane (ContactsWindow* self);
+static void ___lambda66__contacts_store_quiescent (ContactsStore* _sender,
+                                            gpointer self);
+static gboolean __lambda67_ (Block6Data* _data6_);
+static gboolean ___lambda67__gsource_func (gpointer self);
+static void contacts_app_real_startup (GApplication* base);
+void contacts_app_load_styling (ContactsApp* self);
+static void contacts_app_real_activate (GApplication* base);
+gboolean contacts_settings_get_did_initial_setup (ContactsSettings* self);
+static void contacts_app_create_new_window (ContactsApp* self);
+static void contacts_app_run_setup (ContactsApp* self);
+GType contacts_setup_window_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSetupWindow, g_object_unref)
+static Block7Data* block7_data_ref (Block7Data* _data7_);
+static void block7_data_unref (void * _userdata_);
+ContactsSetupWindow* contacts_setup_window_new (ContactsApp* app,
+                                                ContactsStore* store);
+ContactsSetupWindow* contacts_setup_window_construct (GType object_type,
+                                                      ContactsApp* app,
+                                                      ContactsStore* store);
+static void __lambda73_ (Block7Data* _data7_,
+                  EdsfPersonaStore* selected_store);
+void contacts_settings_set_did_initial_setup (ContactsSettings* self,
+                                              gboolean value);
+static void ___lambda73__contacts_setup_window_setup_done (ContactsSetupWindow* _sender,
+                                                    EdsfPersonaStore* selected_address_book,
+                                                    gpointer self);
+void contacts_window_new_contact (ContactsWindow* self);
+static gchar* _variant_get1 (GVariant* value);
+static void contacts_app_finalize (GObject * obj);
+static GType contacts_app_get_type_once (void);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+static const GActionEntry CONTACTS_APP_action_entries[7] = {{"quit", 
_g_application_quit_gsimple_action_activate_callback}, {"help", 
_contacts_app_show_help_gsimple_action_activate_callback}, {"about", 
_contacts_app_show_about_gsimple_action_activate_callback}, {"change-book", 
_contacts_app_change_address_book_gsimple_action_activate_callback}, {"online-accounts", 
_contacts_app_online_accounts_gsimple_action_activate_callback}, {"new-contact", 
_contacts_app_new_contact_gsimple_action_activate_callback}, {"show-contact", 
_contacts_app_on_show_contact_gsimple_action_activate_callback, "s"}};
+static const GOptionEntry CONTACTS_APP_options[5] = {{"email", 'e', 0, G_OPTION_ARG_STRING, NULL, N_ ("Show 
contact with this email address")}, {"individual", 'i', 0, G_OPTION_ARG_STRING, NULL, N_ ("Show contact with 
this individual id")}, {"search", 's', 0, G_OPTION_ARG_STRING, NULL, N_ ("Show contacts with the given 
filter")}, {"version", 'v', 0, G_OPTION_ARG_NONE, NULL, N_ ("Show the current version of Contacts")}, {}};
+
+static inline gpointer
+contacts_app_get_instance_private (ContactsApp* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsApp_private_offset);
+}
+
+static void
+_g_application_quit_gsimple_action_activate_callback (GSimpleAction* action,
+                                                      GVariant* parameter,
+                                                      gpointer self)
+{
+#line 32 "../src/contacts-app.vala"
+       g_application_quit ((GApplication*) self);
+#line 435 "contacts-app.c"
+}
+
+static void
+_contacts_app_show_help_gsimple_action_activate_callback (GSimpleAction* action,
+                                                          GVariant* parameter,
+                                                          gpointer self)
+{
+#line 32 "../src/contacts-app.vala"
+       contacts_app_show_help ((ContactsApp*) self);
+#line 445 "contacts-app.c"
+}
+
+static void
+_contacts_app_show_about_gsimple_action_activate_callback (GSimpleAction* action,
+                                                           GVariant* parameter,
+                                                           gpointer self)
+{
+#line 32 "../src/contacts-app.vala"
+       contacts_app_show_about ((ContactsApp*) self);
+#line 455 "contacts-app.c"
+}
+
+static void
+_contacts_app_change_address_book_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                    GVariant* parameter,
+                                                                    gpointer self)
+{
+#line 32 "../src/contacts-app.vala"
+       contacts_app_change_address_book ((ContactsApp*) self);
+#line 465 "contacts-app.c"
+}
+
+static void
+_contacts_app_online_accounts_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                GVariant* parameter,
+                                                                gpointer self)
+{
+#line 32 "../src/contacts-app.vala"
+       contacts_app_online_accounts ((ContactsApp*) self);
+#line 475 "contacts-app.c"
+}
+
+static void
+_contacts_app_new_contact_gsimple_action_activate_callback (GSimpleAction* action,
+                                                            GVariant* parameter,
+                                                            gpointer self)
+{
+#line 32 "../src/contacts-app.vala"
+       contacts_app_new_contact ((ContactsApp*) self);
+#line 485 "contacts-app.c"
+}
+
+static void
+_contacts_app_on_show_contact_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                GVariant* parameter,
+                                                                gpointer self)
+{
+#line 32 "../src/contacts-app.vala"
+       contacts_app_on_show_contact ((ContactsApp*) self, action, parameter);
+#line 495 "contacts-app.c"
+}
+
+ContactsApp*
+contacts_app_construct (GType object_type)
+{
+       ContactsApp * self = NULL;
+       ContactsSettings* _tmp0_;
+#line 51 "../src/contacts-app.vala"
+       self = (ContactsApp*) g_object_new (object_type, "application-id", APP_ID, "flags", 
G_APPLICATION_HANDLES_COMMAND_LINE, NULL);
+#line 56 "../src/contacts-app.vala"
+       _tmp0_ = contacts_settings_new (self);
+#line 56 "../src/contacts-app.vala"
+       _g_object_unref0 (self->priv->settings);
+#line 56 "../src/contacts-app.vala"
+       self->priv->settings = _tmp0_;
+#line 57 "../src/contacts-app.vala"
+       g_application_add_main_option_entries ((GApplication*) self, CONTACTS_APP_options);
+#line 58 "../src/contacts-app.vala"
+       contacts_app_create_actions (self);
+#line 50 "../src/contacts-app.vala"
+       return self;
+#line 517 "contacts-app.c"
+}
+
+ContactsApp*
+contacts_app_new (void)
+{
+#line 50 "../src/contacts-app.vala"
+       return contacts_app_construct (CONTACTS_TYPE_APP);
+#line 525 "contacts-app.c"
+}
+
+static gpointer
+_g_variant_dict_ref0 (gpointer self)
+{
+#line 62 "../src/contacts-app.vala"
+       return self ? g_variant_dict_ref (self) : NULL;
+#line 533 "contacts-app.c"
+}
+
+static gint
+contacts_app_real_command_line (GApplication* base,
+                                GApplicationCommandLine* command_line)
+{
+       ContactsApp * self;
+       GVariantDict* options = NULL;
+       GVariantDict* _tmp0_;
+       GVariantDict* _tmp1_;
+       GVariantDict* _tmp2_;
+       gint result = 0;
+#line 61 "../src/contacts-app.vala"
+       self = (ContactsApp*) base;
+#line 61 "../src/contacts-app.vala"
+       g_return_val_if_fail (command_line != NULL, 0);
+#line 62 "../src/contacts-app.vala"
+       _tmp0_ = g_application_command_line_get_options_dict (command_line);
+#line 62 "../src/contacts-app.vala"
+       _tmp1_ = _g_variant_dict_ref0 (_tmp0_);
+#line 62 "../src/contacts-app.vala"
+       options = _tmp1_;
+#line 64 "../src/contacts-app.vala"
+       g_application_activate ((GApplication*) self);
+#line 66 "../src/contacts-app.vala"
+       _tmp2_ = options;
+#line 66 "../src/contacts-app.vala"
+       if (g_variant_dict_contains (_tmp2_, "individual")) {
+#line 562 "contacts-app.c"
+               GVariant* individual = NULL;
+               GVariantDict* _tmp3_;
+               const GVariantType* _tmp4_;
+               GVariant* _tmp5_;
+               GVariant* _tmp6_;
+#line 67 "../src/contacts-app.vala"
+               _tmp3_ = options;
+#line 67 "../src/contacts-app.vala"
+               _tmp4_ = G_VARIANT_TYPE_STRING;
+#line 67 "../src/contacts-app.vala"
+               _tmp5_ = g_variant_dict_lookup_value (_tmp3_, "individual", _tmp4_);
+#line 67 "../src/contacts-app.vala"
+               individual = _tmp5_;
+#line 68 "../src/contacts-app.vala"
+               _tmp6_ = individual;
+#line 68 "../src/contacts-app.vala"
+               if (_tmp6_ != NULL) {
+#line 580 "contacts-app.c"
+                       GVariant* _tmp7_;
+                       const gchar* _tmp8_;
+#line 69 "../src/contacts-app.vala"
+                       _tmp7_ = individual;
+#line 69 "../src/contacts-app.vala"
+                       _tmp8_ = g_variant_get_string (_tmp7_, NULL);
+#line 69 "../src/contacts-app.vala"
+                       contacts_app_show_individual (self, _tmp8_, NULL, NULL);
+#line 589 "contacts-app.c"
+               }
+#line 66 "../src/contacts-app.vala"
+               _g_variant_unref0 (individual);
+#line 593 "contacts-app.c"
+       } else {
+               GVariantDict* _tmp9_;
+#line 70 "../src/contacts-app.vala"
+               _tmp9_ = options;
+#line 70 "../src/contacts-app.vala"
+               if (g_variant_dict_contains (_tmp9_, "email")) {
+#line 600 "contacts-app.c"
+                       GVariant* email = NULL;
+                       GVariantDict* _tmp10_;
+                       const GVariantType* _tmp11_;
+                       GVariant* _tmp12_;
+                       GVariant* _tmp13_;
+#line 71 "../src/contacts-app.vala"
+                       _tmp10_ = options;
+#line 71 "../src/contacts-app.vala"
+                       _tmp11_ = G_VARIANT_TYPE_STRING;
+#line 71 "../src/contacts-app.vala"
+                       _tmp12_ = g_variant_dict_lookup_value (_tmp10_, "email", _tmp11_);
+#line 71 "../src/contacts-app.vala"
+                       email = _tmp12_;
+#line 72 "../src/contacts-app.vala"
+                       _tmp13_ = email;
+#line 72 "../src/contacts-app.vala"
+                       if (_tmp13_ != NULL) {
+#line 618 "contacts-app.c"
+                               GVariant* _tmp14_;
+                               const gchar* _tmp15_;
+#line 73 "../src/contacts-app.vala"
+                               _tmp14_ = email;
+#line 73 "../src/contacts-app.vala"
+                               _tmp15_ = g_variant_get_string (_tmp14_, NULL);
+#line 73 "../src/contacts-app.vala"
+                               contacts_app_show_by_email (self, _tmp15_, NULL, NULL);
+#line 627 "contacts-app.c"
+                       }
+#line 70 "../src/contacts-app.vala"
+                       _g_variant_unref0 (email);
+#line 631 "contacts-app.c"
+               } else {
+                       GVariantDict* _tmp16_;
+#line 74 "../src/contacts-app.vala"
+                       _tmp16_ = options;
+#line 74 "../src/contacts-app.vala"
+                       if (g_variant_dict_contains (_tmp16_, "search")) {
+#line 638 "contacts-app.c"
+                               GVariant* search_term = NULL;
+                               GVariantDict* _tmp17_;
+                               const GVariantType* _tmp18_;
+                               GVariant* _tmp19_;
+                               GVariant* _tmp20_;
+#line 75 "../src/contacts-app.vala"
+                               _tmp17_ = options;
+#line 75 "../src/contacts-app.vala"
+                               _tmp18_ = G_VARIANT_TYPE_STRING;
+#line 75 "../src/contacts-app.vala"
+                               _tmp19_ = g_variant_dict_lookup_value (_tmp17_, "search", _tmp18_);
+#line 75 "../src/contacts-app.vala"
+                               search_term = _tmp19_;
+#line 76 "../src/contacts-app.vala"
+                               _tmp20_ = search_term;
+#line 76 "../src/contacts-app.vala"
+                               if (_tmp20_ != NULL) {
+#line 656 "contacts-app.c"
+                                       GVariant* _tmp21_;
+                                       const gchar* _tmp22_;
+#line 77 "../src/contacts-app.vala"
+                                       _tmp21_ = search_term;
+#line 77 "../src/contacts-app.vala"
+                                       _tmp22_ = g_variant_get_string (_tmp21_, NULL);
+#line 77 "../src/contacts-app.vala"
+                                       contacts_app_show_search (self, _tmp22_);
+#line 665 "contacts-app.c"
+                               }
+#line 74 "../src/contacts-app.vala"
+                               _g_variant_unref0 (search_term);
+#line 669 "contacts-app.c"
+                       }
+               }
+       }
+#line 80 "../src/contacts-app.vala"
+       result = 0;
+#line 80 "../src/contacts-app.vala"
+       _g_variant_dict_unref0 (options);
+#line 80 "../src/contacts-app.vala"
+       return result;
+#line 679 "contacts-app.c"
+}
+
+static gint
+contacts_app_real_handle_local_options (GApplication* base,
+                                        GVariantDict* options)
+{
+       ContactsApp * self;
+       gint result = 0;
+#line 83 "../src/contacts-app.vala"
+       self = (ContactsApp*) base;
+#line 83 "../src/contacts-app.vala"
+       g_return_val_if_fail (options != NULL, 0);
+#line 84 "../src/contacts-app.vala"
+       if (g_variant_dict_contains (options, "version")) {
+#line 694 "contacts-app.c"
+               FILE* _tmp0_;
+#line 85 "../src/contacts-app.vala"
+               _tmp0_ = stdout;
+#line 85 "../src/contacts-app.vala"
+               fprintf (_tmp0_, "%s %s\n", PACKAGE_NAME, PACKAGE_VERSION);
+#line 86 "../src/contacts-app.vala"
+               result = 0;
+#line 86 "../src/contacts-app.vala"
+               return result;
+#line 704 "contacts-app.c"
+       }
+#line 89 "../src/contacts-app.vala"
+       result = -1;
+#line 89 "../src/contacts-app.vala"
+       return result;
+#line 710 "contacts-app.c"
+}
+
+void
+contacts_app_show_contact (ContactsApp* self,
+                           FolksIndividual* individual)
+{
+       ContactsWindow* _tmp0_;
+#line 92 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 93 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->window;
+#line 93 "../src/contacts-app.vala"
+       contacts_window_set_shown_contact (_tmp0_, individual);
+#line 724 "contacts-app.c"
+}
+
+static void
+contacts_app_show_individual_data_free (gpointer _data)
+{
+       ContactsAppShowIndividualData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-app.vala"
+       _g_free0 (_data_->id);
+#line 22 "../src/contacts-app.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-app.vala"
+       g_slice_free (ContactsAppShowIndividualData, _data_);
+#line 738 "contacts-app.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 22 "../src/contacts-app.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 746 "contacts-app.c"
+}
+
+void
+contacts_app_show_individual (ContactsApp* self,
+                              const gchar* id,
+                              GAsyncReadyCallback _callback_,
+                              gpointer _user_data_)
+{
+       ContactsAppShowIndividualData* _data_;
+       ContactsApp* _tmp0_;
+       gchar* _tmp1_;
+#line 22 "../src/contacts-app.vala"
+       _data_ = g_slice_new0 (ContactsAppShowIndividualData);
+#line 22 "../src/contacts-app.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-app.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_app_show_individual_data_free);
+#line 22 "../src/contacts-app.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-app.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-app.vala"
+       _tmp1_ = g_strdup (id);
+#line 22 "../src/contacts-app.vala"
+       _g_free0 (_data_->id);
+#line 22 "../src/contacts-app.vala"
+       _data_->id = _tmp1_;
+#line 22 "../src/contacts-app.vala"
+       contacts_app_show_individual_co (_data_);
+#line 776 "contacts-app.c"
+}
+
+void
+contacts_app_show_individual_finish (ContactsApp* self,
+                                     GAsyncResult* _res_)
+{
+       ContactsAppShowIndividualData* _data_;
+#line 22 "../src/contacts-app.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 786 "contacts-app.c"
+}
+
+static void
+contacts_app_show_individual_ready (GObject* source_object,
+                                    GAsyncResult* _res_,
+                                    gpointer _user_data_)
+{
+       ContactsAppShowIndividualData* _data_;
+#line 99 "../src/contacts-app.vala"
+       _data_ = _user_data_;
+#line 99 "../src/contacts-app.vala"
+       _data_->_source_object_ = source_object;
+#line 99 "../src/contacts-app.vala"
+       _data_->_res_ = _res_;
+#line 99 "../src/contacts-app.vala"
+       contacts_app_show_individual_co (_data_);
+#line 803 "contacts-app.c"
+}
+
+static Block1Data*
+block1_data_ref (Block1Data* _data1_)
+{
+#line 103 "../src/contacts-app.vala"
+       g_atomic_int_inc (&_data1_->_ref_count_);
+#line 103 "../src/contacts-app.vala"
+       return _data1_;
+#line 813 "contacts-app.c"
+}
+
+static void
+block1_data_unref (void * _userdata_)
+{
+       Block1Data* _data1_;
+       _data1_ = (Block1Data*) _userdata_;
+#line 103 "../src/contacts-app.vala"
+       if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
+#line 823 "contacts-app.c"
+               ContactsApp* self;
+#line 103 "../src/contacts-app.vala"
+               self = _data1_->self;
+#line 103 "../src/contacts-app.vala"
+               _g_object_unref0 (_data1_->dialog);
+#line 103 "../src/contacts-app.vala"
+               _g_object_unref0 (self);
+#line 103 "../src/contacts-app.vala"
+               g_slice_free (Block1Data, _data1_);
+#line 833 "contacts-app.c"
+       }
+}
+
+static void
+___lambda74_ (Block1Data* _data1_,
+              gint id)
+{
+       ContactsApp* self;
+       GtkMessageDialog* _tmp0_;
+#line 110 "../src/contacts-app.vala"
+       self = _data1_->self;
+#line 111 "../src/contacts-app.vala"
+       _tmp0_ = _data1_->dialog;
+#line 111 "../src/contacts-app.vala"
+       gtk_widget_destroy ((GtkWidget*) _tmp0_);
+#line 849 "contacts-app.c"
+}
+
+static void
+____lambda74__gtk_dialog_response (GtkDialog* _sender,
+                                   gint response_id,
+                                   gpointer self)
+{
+#line 110 "../src/contacts-app.vala"
+       ___lambda74_ (self, response_id);
+#line 859 "contacts-app.c"
+}
+
+static gboolean
+contacts_app_show_individual_co (ContactsAppShowIndividualData* _data_)
+{
+#line 96 "../src/contacts-app.vala"
+       switch (_data_->_state_) {
+#line 96 "../src/contacts-app.vala"
+               case 0:
+#line 869 "contacts-app.c"
+               goto _state_0;
+#line 96 "../src/contacts-app.vala"
+               case 1:
+#line 873 "contacts-app.c"
+               goto _state_1;
+               default:
+#line 96 "../src/contacts-app.vala"
+               g_assert_not_reached ();
+#line 878 "contacts-app.c"
+       }
+       _state_0:
+#line 97 "../src/contacts-app.vala"
+       _data_->contact = NULL;
+#line 883 "contacts-app.c"
+       {
+#line 99 "../src/contacts-app.vala"
+               _data_->_tmp1_ = _data_->self->priv->contacts_store;
+#line 99 "../src/contacts-app.vala"
+               _data_->_tmp2_ = contacts_store_get_aggregator (_data_->_tmp1_);
+#line 99 "../src/contacts-app.vala"
+               _data_->_tmp3_ = _data_->_tmp2_;
+#line 99 "../src/contacts-app.vala"
+               _data_->_state_ = 1;
+#line 99 "../src/contacts-app.vala"
+               folks_individual_aggregator_look_up_individual (_data_->_tmp3_, _data_->id, 
contacts_app_show_individual_ready, _data_);
+#line 99 "../src/contacts-app.vala"
+               return FALSE;
+#line 897 "contacts-app.c"
+               _state_1:
+#line 99 "../src/contacts-app.vala"
+               _data_->_tmp4_ = folks_individual_aggregator_look_up_individual_finish (_data_->_tmp3_, 
_data_->_res_, &_data_->_inner_error0_);
+#line 99 "../src/contacts-app.vala"
+               _data_->_tmp0_ = _data_->_tmp4_;
+#line 99 "../src/contacts-app.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 905 "contacts-app.c"
+                       goto __catch0_g_error;
+               }
+#line 99 "../src/contacts-app.vala"
+               _data_->_tmp5_ = _data_->_tmp0_;
+#line 99 "../src/contacts-app.vala"
+               _data_->_tmp0_ = NULL;
+#line 99 "../src/contacts-app.vala"
+               _g_object_unref0 (_data_->contact);
+#line 99 "../src/contacts-app.vala"
+               _data_->contact = _data_->_tmp5_;
+#line 98 "../src/contacts-app.vala"
+               _g_object_unref0 (_data_->_tmp0_);
+#line 918 "contacts-app.c"
+       }
+       goto __finally0;
+       __catch0_g_error:
+       {
+#line 98 "../src/contacts-app.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 98 "../src/contacts-app.vala"
+               _data_->_inner_error0_ = NULL;
+#line 101 "../src/contacts-app.vala"
+               g_debug ("contacts-app.vala:101: Couldn't look up individual");
+#line 98 "../src/contacts-app.vala"
+               _g_error_free0 (_data_->e);
+#line 931 "contacts-app.c"
+       }
+       __finally0:
+#line 98 "../src/contacts-app.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 98 "../src/contacts-app.vala"
+               _g_object_unref0 (_data_->contact);
+#line 98 "../src/contacts-app.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 98 "../src/contacts-app.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 98 "../src/contacts-app.vala"
+               g_object_unref (_data_->_async_result);
+#line 98 "../src/contacts-app.vala"
+               return FALSE;
+#line 946 "contacts-app.c"
+       }
+#line 103 "../src/contacts-app.vala"
+       _data_->_tmp6_ = _data_->contact;
+#line 103 "../src/contacts-app.vala"
+       if (_data_->_tmp6_ != NULL) {
+#line 104 "../src/contacts-app.vala"
+               _data_->_tmp7_ = _data_->contact;
+#line 104 "../src/contacts-app.vala"
+               contacts_app_show_contact (_data_->self, _data_->_tmp7_);
+#line 956 "contacts-app.c"
+       } else {
+#line 103 "../src/contacts-app.vala"
+               _data_->_data1_ = g_slice_new0 (Block1Data);
+#line 103 "../src/contacts-app.vala"
+               _data_->_data1_->_ref_count_ = 1;
+#line 103 "../src/contacts-app.vala"
+               _data_->_data1_->self = g_object_ref (_data_->self);
+#line 106 "../src/contacts-app.vala"
+               _data_->_tmp8_ = _data_->self->priv->window;
+#line 106 "../src/contacts-app.vala"
+               _data_->_tmp9_ = (GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) _data_->_tmp8_, 
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _ ("No contact with id %s found"), 
_data_->id);
+#line 106 "../src/contacts-app.vala"
+               g_object_ref_sink (_data_->_tmp9_);
+#line 106 "../src/contacts-app.vala"
+               _data_->_data1_->dialog = _data_->_tmp9_;
+#line 108 "../src/contacts-app.vala"
+               _data_->_tmp10_ = _data_->_data1_->dialog;
+#line 108 "../src/contacts-app.vala"
+               gtk_window_set_title ((GtkWindow*) _data_->_tmp10_, _ ("Contact not found"));
+#line 109 "../src/contacts-app.vala"
+               _data_->_tmp11_ = _data_->_data1_->dialog;
+#line 109 "../src/contacts-app.vala"
+               gtk_widget_show ((GtkWidget*) _data_->_tmp11_);
+#line 110 "../src/contacts-app.vala"
+               _data_->_tmp12_ = _data_->_data1_->dialog;
+#line 110 "../src/contacts-app.vala"
+               g_signal_connect_data ((GtkDialog*) _data_->_tmp12_, "response", (GCallback) 
____lambda74__gtk_dialog_response, block1_data_ref (_data_->_data1_), (GClosureNotify) block1_data_unref, 0);
+#line 103 "../src/contacts-app.vala"
+               block1_data_unref (_data_->_data1_);
+#line 103 "../src/contacts-app.vala"
+               _data_->_data1_ = NULL;
+#line 988 "contacts-app.c"
+       }
+#line 96 "../src/contacts-app.vala"
+       _g_object_unref0 (_data_->contact);
+#line 96 "../src/contacts-app.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 96 "../src/contacts-app.vala"
+       if (_data_->_state_ != 0) {
+#line 96 "../src/contacts-app.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 96 "../src/contacts-app.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 1000 "contacts-app.c"
+               }
+       }
+#line 96 "../src/contacts-app.vala"
+       g_object_unref (_data_->_async_result);
+#line 96 "../src/contacts-app.vala"
+       return FALSE;
+#line 1007 "contacts-app.c"
+}
+
+static Block2Data*
+block2_data_ref (Block2Data* _data2_)
+{
+#line 116 "../src/contacts-app.vala"
+       g_atomic_int_inc (&_data2_->_ref_count_);
+#line 116 "../src/contacts-app.vala"
+       return _data2_;
+#line 1017 "contacts-app.c"
+}
+
+static void
+block2_data_unref (void * _userdata_)
+{
+       Block2Data* _data2_;
+       _data2_ = (Block2Data*) _userdata_;
+#line 116 "../src/contacts-app.vala"
+       if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
+#line 1027 "contacts-app.c"
+               ContactsApp* self;
+#line 116 "../src/contacts-app.vala"
+               self = _data2_->self;
+#line 116 "../src/contacts-app.vala"
+               _g_object_unref0 (_data2_->acc);
+#line 116 "../src/contacts-app.vala"
+               _g_object_unref0 (_data2_->ok_button);
+#line 116 "../src/contacts-app.vala"
+               _g_object_unref0 (_data2_->dialog);
+#line 116 "../src/contacts-app.vala"
+               _g_object_unref0 (self);
+#line 116 "../src/contacts-app.vala"
+               g_slice_free (Block2Data, _data2_);
+#line 1041 "contacts-app.c"
+       }
+}
+
+static void
+__lambda62_ (Block2Data* _data2_)
+{
+       ContactsApp* self;
+#line 158 "../src/contacts-app.vala"
+       self = _data2_->self;
+#line 159 "../src/contacts-app.vala"
+       gtk_widget_set_sensitive (_data2_->ok_button, TRUE);
+#line 160 "../src/contacts-app.vala"
+       g_signal_handler_disconnect ((GObject*) _data2_->acc, _data2_->active_button_once);
+#line 1055 "contacts-app.c"
+}
+
+static void
+___lambda62__contacts_accounts_list_account_selected (ContactsAccountsList* _sender,
+                                                      gpointer self)
+{
+#line 158 "../src/contacts-app.vala"
+       __lambda62_ (self);
+#line 1064 "contacts-app.c"
+}
+
+static void
+__lambda63_ (Block2Data* _data2_)
+{
+       ContactsApp* self;
+#line 163 "../src/contacts-app.vala"
+       self = _data2_->self;
+#line 164 "../src/contacts-app.vala"
+       contacts_accounts_list_update_contents (_data2_->acc, TRUE);
+#line 1075 "contacts-app.c"
+}
+
+static void
+___lambda63__folks_backend_store_backend_available (FolksBackendStore* _sender,
+                                                    FolksBackend* backend,
+                                                    gpointer self)
+{
+#line 163 "../src/contacts-app.vala"
+       __lambda63_ (self);
+#line 1085 "contacts-app.c"
+}
+
+static void
+__lambda64_ (Block2Data* _data2_,
+             gint response)
+{
+       ContactsApp* self;
+       ContactsStore* _tmp14_;
+       FolksBackendStore* _tmp15_;
+       FolksBackendStore* _tmp16_;
+#line 170 "../src/contacts-app.vala"
+       self = _data2_->self;
+#line 171 "../src/contacts-app.vala"
+       if (response == ((gint) GTK_RESPONSE_OK)) {
+#line 1100 "contacts-app.c"
+               EdsfPersonaStore* e_store = NULL;
+               FolksPersonaStore* _tmp0_;
+               EdsfPersonaStore* _tmp1_;
+               EdsfPersonaStore* _tmp2_;
+#line 172 "../src/contacts-app.vala"
+               _tmp0_ = _data2_->acc->selected_store;
+#line 172 "../src/contacts-app.vala"
+               _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, EDSF_TYPE_PERSONA_STORE) ? 
((EdsfPersonaStore*) _tmp0_) : NULL);
+#line 172 "../src/contacts-app.vala"
+               e_store = _tmp1_;
+#line 173 "../src/contacts-app.vala"
+               _tmp2_ = e_store;
+#line 173 "../src/contacts-app.vala"
+               if (_tmp2_ != NULL) {
+#line 1115 "contacts-app.c"
+                       ESourceRegistry* _tmp3_;
+                       EdsfPersonaStore* _tmp4_;
+                       ESource* _tmp5_;
+                       ESource* _tmp6_;
+                       GSettings* settings = NULL;
+                       GSettings* _tmp7_;
+                       GSettings* _tmp8_;
+                       EdsfPersonaStore* _tmp9_;
+                       const gchar* _tmp10_;
+                       const gchar* _tmp11_;
+                       gchar* _tmp12_;
+                       gchar* _tmp13_;
+#line 174 "../src/contacts-app.vala"
+                       _tmp3_ = contacts_eds_source_registry;
+#line 174 "../src/contacts-app.vala"
+                       _tmp4_ = e_store;
+#line 174 "../src/contacts-app.vala"
+                       _tmp5_ = edsf_persona_store_get_source (_tmp4_);
+#line 174 "../src/contacts-app.vala"
+                       _tmp6_ = _tmp5_;
+#line 174 "../src/contacts-app.vala"
+                       e_source_registry_set_default_address_book (_tmp3_, _tmp6_);
+#line 175 "../src/contacts-app.vala"
+                       _tmp7_ = g_settings_new ("org.freedesktop.folks");
+#line 175 "../src/contacts-app.vala"
+                       settings = _tmp7_;
+#line 176 "../src/contacts-app.vala"
+                       _tmp8_ = settings;
+#line 176 "../src/contacts-app.vala"
+                       _tmp9_ = e_store;
+#line 176 "../src/contacts-app.vala"
+                       _tmp10_ = folks_persona_store_get_id ((FolksPersonaStore*) _tmp9_);
+#line 176 "../src/contacts-app.vala"
+                       _tmp11_ = _tmp10_;
+#line 176 "../src/contacts-app.vala"
+                       _tmp12_ = g_strdup_printf ("eds:%s", _tmp11_);
+#line 176 "../src/contacts-app.vala"
+                       _tmp13_ = _tmp12_;
+#line 176 "../src/contacts-app.vala"
+                       g_settings_set_string (_tmp8_, "primary-store", _tmp13_);
+#line 176 "../src/contacts-app.vala"
+                       _g_free0 (_tmp13_);
+#line 173 "../src/contacts-app.vala"
+                       _g_object_unref0 (settings);
+#line 1160 "contacts-app.c"
+               }
+#line 171 "../src/contacts-app.vala"
+               _g_object_unref0 (e_store);
+#line 1164 "contacts-app.c"
+       }
+#line 180 "../src/contacts-app.vala"
+       _tmp14_ = self->priv->contacts_store;
+#line 180 "../src/contacts-app.vala"
+       _tmp15_ = contacts_store_get_backend_store (_tmp14_);
+#line 180 "../src/contacts-app.vala"
+       _tmp16_ = _tmp15_;
+#line 180 "../src/contacts-app.vala"
+       g_signal_handler_disconnect ((GObject*) _tmp16_, _data2_->stores_changed_id);
+#line 181 "../src/contacts-app.vala"
+       gtk_widget_destroy ((GtkWidget*) _data2_->dialog);
+#line 1176 "contacts-app.c"
+}
+
+static void
+___lambda64__gtk_dialog_response (GtkDialog* _sender,
+                                  gint response_id,
+                                  gpointer self)
+{
+#line 170 "../src/contacts-app.vala"
+       __lambda64_ (self, response_id);
+#line 1186 "contacts-app.c"
+}
+
+void
+contacts_app_change_address_book (ContactsApp* self)
+{
+       Block2Data* _data2_;
+       ContactsWindow* _tmp0_;
+       HdyDialog* _tmp1_;
+       GtkBox* content_area = NULL;
+       GtkBox* _tmp2_;
+       GtkBox* _tmp3_;
+       GtkWidget* _tmp4_;
+       GtkWidget* _tmp5_;
+       GtkStyleContext* _tmp6_;
+       GtkScrolledWindow* scrolled_window = NULL;
+       GtkScrolledWindow* _tmp7_;
+       HdyColumn* column = NULL;
+       HdyColumn* _tmp8_;
+       GtkBox* box = NULL;
+       GtkBox* _tmp9_;
+       GtkLabel* explanation_label = NULL;
+       GtkLabel* _tmp10_;
+       ContactsStore* _tmp11_;
+       ContactsAccountsList* _tmp12_;
+       gulong _tmp13_;
+       ContactsStore* _tmp14_;
+       FolksBackendStore* _tmp15_;
+       FolksBackendStore* _tmp16_;
+       gulong _tmp17_;
+#line 116 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 116 "../src/contacts-app.vala"
+       _data2_ = g_slice_new0 (Block2Data);
+#line 116 "../src/contacts-app.vala"
+       _data2_->_ref_count_ = 1;
+#line 116 "../src/contacts-app.vala"
+       _data2_->self = g_object_ref (self);
+#line 117 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->window;
+#line 117 "../src/contacts-app.vala"
+       _tmp1_ = (HdyDialog*) hdy_dialog_new ((GtkWindow*) G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, 
CONTACTS_TYPE_WINDOW, ContactsWindow));
+#line 117 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp1_);
+#line 117 "../src/contacts-app.vala"
+       _data2_->dialog = _tmp1_;
+#line 118 "../src/contacts-app.vala"
+       gtk_window_set_title ((GtkWindow*) _data2_->dialog, _ ("Change Address Book"));
+#line 119 "../src/contacts-app.vala"
+       gtk_dialog_add_buttons ((GtkDialog*) _data2_->dialog, _ ("Change"), GTK_RESPONSE_OK, _ ("Cancel"), 
GTK_RESPONSE_CANCEL, NULL, NULL);
+#line 123 "../src/contacts-app.vala"
+       _tmp2_ = gtk_dialog_get_content_area ((GtkDialog*) _data2_->dialog);
+#line 123 "../src/contacts-app.vala"
+       _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, gtk_box_get_type ()) ? ((GtkBox*) 
_tmp2_) : NULL);
+#line 123 "../src/contacts-app.vala"
+       content_area = _tmp3_;
+#line 124 "../src/contacts-app.vala"
+       gtk_container_set_border_width ((GtkContainer*) content_area, (guint) 0);
+#line 126 "../src/contacts-app.vala"
+       _tmp4_ = gtk_dialog_get_widget_for_response ((GtkDialog*) _data2_->dialog, (gint) GTK_RESPONSE_OK);
+#line 126 "../src/contacts-app.vala"
+       _tmp5_ = _g_object_ref0 (_tmp4_);
+#line 126 "../src/contacts-app.vala"
+       _data2_->ok_button = _tmp5_;
+#line 127 "../src/contacts-app.vala"
+       gtk_widget_set_sensitive (_data2_->ok_button, FALSE);
+#line 128 "../src/contacts-app.vala"
+       _tmp6_ = gtk_widget_get_style_context (_data2_->ok_button);
+#line 128 "../src/contacts-app.vala"
+       gtk_style_context_add_class (_tmp6_, "suggested-action");
+#line 130 "../src/contacts-app.vala"
+       _tmp7_ = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL);
+#line 130 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp7_);
+#line 130 "../src/contacts-app.vala"
+       scrolled_window = _tmp7_;
+#line 131 "../src/contacts-app.vala"
+       g_object_set ((GtkWidget*) scrolled_window, "expand", TRUE, NULL);
+#line 132 "../src/contacts-app.vala"
+       g_object_set (scrolled_window, "hscrollbar-policy", GTK_POLICY_NEVER, NULL);
+#line 133 "../src/contacts-app.vala"
+       gtk_scrolled_window_set_propagate_natural_height (scrolled_window, TRUE);
+#line 134 "../src/contacts-app.vala"
+       gtk_container_add ((GtkContainer*) content_area, (GtkWidget*) scrolled_window);
+#line 136 "../src/contacts-app.vala"
+       _tmp8_ = hdy_column_new ();
+#line 136 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp8_);
+#line 136 "../src/contacts-app.vala"
+       column = _tmp8_;
+#line 137 "../src/contacts-app.vala"
+       gtk_widget_set_margin_top ((GtkWidget*) column, 32);
+#line 138 "../src/contacts-app.vala"
+       gtk_widget_set_margin_bottom ((GtkWidget*) column, 32);
+#line 139 "../src/contacts-app.vala"
+       gtk_widget_set_margin_start ((GtkWidget*) column, 12);
+#line 140 "../src/contacts-app.vala"
+       gtk_widget_set_margin_end ((GtkWidget*) column, 12);
+#line 141 "../src/contacts-app.vala"
+       hdy_column_set_maximum_width (column, 400);
+#line 142 "../src/contacts-app.vala"
+       hdy_column_set_linear_growth_width (column, 400);
+#line 143 "../src/contacts-app.vala"
+       gtk_container_add ((GtkContainer*) scrolled_window, (GtkWidget*) column);
+#line 145 "../src/contacts-app.vala"
+       _tmp9_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+#line 145 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp9_);
+#line 145 "../src/contacts-app.vala"
+       box = _tmp9_;
+#line 146 "../src/contacts-app.vala"
+       gtk_widget_set_valign ((GtkWidget*) box, GTK_ALIGN_START);
+#line 147 "../src/contacts-app.vala"
+       gtk_container_add ((GtkContainer*) column, (GtkWidget*) box);
+#line 149 "../src/contacts-app.vala"
+       _tmp10_ = (GtkLabel*) gtk_label_new (_ ("New contacts will be added to the selected address book.\n" \
+"You are able to view and edit contacts from other address books."));
+#line 149 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp10_);
+#line 149 "../src/contacts-app.vala"
+       explanation_label = _tmp10_;
+#line 150 "../src/contacts-app.vala"
+       gtk_label_set_xalign (explanation_label, (gfloat) 0);
+#line 151 "../src/contacts-app.vala"
+       g_object_set (explanation_label, "wrap", TRUE, NULL);
+#line 152 "../src/contacts-app.vala"
+       gtk_container_add ((GtkContainer*) box, (GtkWidget*) explanation_label);
+#line 154 "../src/contacts-app.vala"
+       _tmp11_ = self->priv->contacts_store;
+#line 154 "../src/contacts-app.vala"
+       _tmp12_ = contacts_accounts_list_new (_tmp11_);
+#line 154 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp12_);
+#line 154 "../src/contacts-app.vala"
+       _data2_->acc = _tmp12_;
+#line 155 "../src/contacts-app.vala"
+       contacts_accounts_list_update_contents (_data2_->acc, TRUE);
+#line 157 "../src/contacts-app.vala"
+       _data2_->active_button_once = (gulong) 0;
+#line 158 "../src/contacts-app.vala"
+       _tmp13_ = g_signal_connect_data (_data2_->acc, "account-selected", (GCallback) 
___lambda62__contacts_accounts_list_account_selected, block2_data_ref (_data2_), (GClosureNotify) 
block2_data_unref, 0);
+#line 158 "../src/contacts-app.vala"
+       _data2_->active_button_once = _tmp13_;
+#line 163 "../src/contacts-app.vala"
+       _tmp14_ = self->priv->contacts_store;
+#line 163 "../src/contacts-app.vala"
+       _tmp15_ = contacts_store_get_backend_store (_tmp14_);
+#line 163 "../src/contacts-app.vala"
+       _tmp16_ = _tmp15_;
+#line 163 "../src/contacts-app.vala"
+       _tmp17_ = g_signal_connect_data (_tmp16_, "backend-available", (GCallback) 
___lambda63__folks_backend_store_backend_available, block2_data_ref (_data2_), (GClosureNotify) 
block2_data_unref, 0);
+#line 163 "../src/contacts-app.vala"
+       _data2_->stores_changed_id = _tmp17_;
+#line 167 "../src/contacts-app.vala"
+       gtk_container_add ((GtkContainer*) box, (GtkWidget*) _data2_->acc);
+#line 169 "../src/contacts-app.vala"
+       gtk_widget_show_all ((GtkWidget*) _data2_->dialog);
+#line 170 "../src/contacts-app.vala"
+       g_signal_connect_data ((GtkDialog*) _data2_->dialog, "response", (GCallback) 
___lambda64__gtk_dialog_response, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0);
+#line 116 "../src/contacts-app.vala"
+       _g_object_unref0 (explanation_label);
+#line 116 "../src/contacts-app.vala"
+       _g_object_unref0 (box);
+#line 116 "../src/contacts-app.vala"
+       _g_object_unref0 (column);
+#line 116 "../src/contacts-app.vala"
+       _g_object_unref0 (scrolled_window);
+#line 116 "../src/contacts-app.vala"
+       _g_object_unref0 (content_area);
+#line 116 "../src/contacts-app.vala"
+       block2_data_unref (_data2_);
+#line 116 "../src/contacts-app.vala"
+       _data2_ = NULL;
+#line 1358 "contacts-app.c"
+}
+
+void
+contacts_app_online_accounts (ContactsApp* self)
+{
+       GError* _inner_error0_ = NULL;
+#line 185 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 1367 "contacts-app.c"
+       {
+               GDBusProxy* proxy = NULL;
+               GDBusProxy* _tmp0_;
+               GVariantBuilder* builder = NULL;
+               GVariantType* _tmp1_;
+               GVariantType* _tmp2_;
+               GVariantBuilder* _tmp3_;
+               GVariantBuilder* _tmp4_;
+               GVariantBuilder* _tmp5_;
+               GVariant* _tmp6_;
+               GVariant* _tmp7_;
+               GVariant* param = NULL;
+               GVariant* _tmp8_;
+               GVariantType* _tmp9_;
+               GVariantType* _tmp10_;
+               GVariantBuilder* _tmp11_;
+               GVariant* _tmp12_;
+               GVariant* _tmp13_;
+               GVariant* _tmp14_;
+               GVariant** _tmp15_;
+               GVariant** _tmp16_;
+               gint _tmp16__length1;
+               GVariant* _tmp17_;
+               GVariantType* _tmp18_;
+               GVariantType* _tmp19_;
+               GVariant** _tmp20_;
+               GVariant** _tmp21_;
+               gint _tmp21__length1;
+               GVariant* _tmp22_;
+               GVariant** _tmp23_;
+               GVariant** _tmp24_;
+               gint _tmp24__length1;
+               GVariant* _tmp25_;
+               GVariant* _tmp26_;
+               GDBusProxy* _tmp27_;
+               GVariant* _tmp28_;
+               GVariant* _tmp29_;
+               GVariant* _tmp30_;
+#line 187 "../src/contacts-app.vala"
+               _tmp0_ = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, 
"org.gnome.ControlCenter", "/org/gnome/ControlCenter", "org.gtk.Actions", NULL, &_inner_error0_);
+#line 187 "../src/contacts-app.vala"
+               proxy = _tmp0_;
+#line 187 "../src/contacts-app.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1412 "contacts-app.c"
+                       goto __catch1_g_error;
+               }
+#line 194 "../src/contacts-app.vala"
+               _tmp1_ = g_variant_type_new ("av");
+#line 194 "../src/contacts-app.vala"
+               _tmp2_ = _tmp1_;
+#line 194 "../src/contacts-app.vala"
+               _tmp3_ = g_variant_builder_new (_tmp2_);
+#line 194 "../src/contacts-app.vala"
+               _tmp4_ = _tmp3_;
+#line 194 "../src/contacts-app.vala"
+               _g_variant_type_free0 (_tmp2_);
+#line 194 "../src/contacts-app.vala"
+               builder = _tmp4_;
+#line 195 "../src/contacts-app.vala"
+               _tmp5_ = builder;
+#line 195 "../src/contacts-app.vala"
+               _tmp6_ = g_variant_new_string ("");
+#line 195 "../src/contacts-app.vala"
+               g_variant_ref_sink (_tmp6_);
+#line 195 "../src/contacts-app.vala"
+               _tmp7_ = _tmp6_;
+#line 195 "../src/contacts-app.vala"
+               g_variant_builder_add (_tmp5_, "v", _tmp7_, NULL);
+#line 195 "../src/contacts-app.vala"
+               _g_variant_unref0 (_tmp7_);
+#line 196 "../src/contacts-app.vala"
+               _tmp8_ = g_variant_new_string ("launch-panel");
+#line 196 "../src/contacts-app.vala"
+               g_variant_ref_sink (_tmp8_);
+#line 196 "../src/contacts-app.vala"
+               _tmp9_ = g_variant_type_new ("v");
+#line 196 "../src/contacts-app.vala"
+               _tmp10_ = _tmp9_;
+#line 196 "../src/contacts-app.vala"
+               _tmp11_ = builder;
+#line 196 "../src/contacts-app.vala"
+               _tmp12_ = g_variant_new ("(sav)", "online-accounts", _tmp11_, NULL);
+#line 196 "../src/contacts-app.vala"
+               g_variant_ref_sink (_tmp12_);
+#line 196 "../src/contacts-app.vala"
+               _tmp13_ = _tmp12_;
+#line 196 "../src/contacts-app.vala"
+               _tmp14_ = g_variant_new ("v", _tmp13_, NULL);
+#line 196 "../src/contacts-app.vala"
+               g_variant_ref_sink (_tmp14_);
+#line 196 "../src/contacts-app.vala"
+               _tmp15_ = g_new0 (GVariant*, 1 + 1);
+#line 196 "../src/contacts-app.vala"
+               _tmp15_[0] = _tmp14_;
+#line 196 "../src/contacts-app.vala"
+               _tmp16_ = _tmp15_;
+#line 196 "../src/contacts-app.vala"
+               _tmp16__length1 = 1;
+#line 196 "../src/contacts-app.vala"
+               _tmp17_ = g_variant_new_array (_tmp10_, _tmp16_, 1);
+#line 196 "../src/contacts-app.vala"
+               g_variant_ref_sink (_tmp17_);
+#line 196 "../src/contacts-app.vala"
+               _tmp18_ = g_variant_type_new ("{sv}");
+#line 196 "../src/contacts-app.vala"
+               _tmp19_ = _tmp18_;
+#line 196 "../src/contacts-app.vala"
+               _tmp20_ = g_new0 (GVariant*, 0 + 1);
+#line 196 "../src/contacts-app.vala"
+               _tmp21_ = _tmp20_;
+#line 196 "../src/contacts-app.vala"
+               _tmp21__length1 = 0;
+#line 196 "../src/contacts-app.vala"
+               _tmp22_ = g_variant_new_array (_tmp19_, _tmp21_, 0);
+#line 196 "../src/contacts-app.vala"
+               g_variant_ref_sink (_tmp22_);
+#line 196 "../src/contacts-app.vala"
+               _tmp23_ = g_new0 (GVariant*, 3 + 1);
+#line 196 "../src/contacts-app.vala"
+               _tmp23_[0] = _tmp8_;
+#line 196 "../src/contacts-app.vala"
+               _tmp23_[1] = _tmp17_;
+#line 196 "../src/contacts-app.vala"
+               _tmp23_[2] = _tmp22_;
+#line 196 "../src/contacts-app.vala"
+               _tmp24_ = _tmp23_;
+#line 196 "../src/contacts-app.vala"
+               _tmp24__length1 = 3;
+#line 196 "../src/contacts-app.vala"
+               _tmp25_ = g_variant_new_tuple (_tmp24_, 3);
+#line 196 "../src/contacts-app.vala"
+               g_variant_ref_sink (_tmp25_);
+#line 196 "../src/contacts-app.vala"
+               _tmp26_ = _tmp25_;
+#line 196 "../src/contacts-app.vala"
+               _tmp24_ = (_vala_array_free (_tmp24_, _tmp24__length1, (GDestroyNotify) g_variant_unref), 
NULL);
+#line 196 "../src/contacts-app.vala"
+               _tmp21_ = (_vala_array_free (_tmp21_, _tmp21__length1, (GDestroyNotify) g_variant_unref), 
NULL);
+#line 196 "../src/contacts-app.vala"
+               _g_variant_type_free0 (_tmp19_);
+#line 196 "../src/contacts-app.vala"
+               _tmp16_ = (_vala_array_free (_tmp16_, _tmp16__length1, (GDestroyNotify) g_variant_unref), 
NULL);
+#line 196 "../src/contacts-app.vala"
+               _g_variant_unref0 (_tmp13_);
+#line 196 "../src/contacts-app.vala"
+               _g_variant_type_free0 (_tmp10_);
+#line 196 "../src/contacts-app.vala"
+               param = _tmp26_;
+#line 204 "../src/contacts-app.vala"
+               _tmp27_ = proxy;
+#line 204 "../src/contacts-app.vala"
+               _tmp28_ = param;
+#line 204 "../src/contacts-app.vala"
+               _tmp29_ = g_dbus_proxy_call_sync (_tmp27_, "Activate", _tmp28_, G_DBUS_CALL_FLAGS_NONE, -1, 
NULL, &_inner_error0_);
+#line 204 "../src/contacts-app.vala"
+               _tmp30_ = _tmp29_;
+#line 204 "../src/contacts-app.vala"
+               _g_variant_unref0 (_tmp30_);
+#line 204 "../src/contacts-app.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 204 "../src/contacts-app.vala"
+                       _g_variant_unref0 (param);
+#line 204 "../src/contacts-app.vala"
+                       _g_variant_builder_unref0 (builder);
+#line 204 "../src/contacts-app.vala"
+                       _g_object_unref0 (proxy);
+#line 1535 "contacts-app.c"
+                       goto __catch1_g_error;
+               }
+#line 186 "../src/contacts-app.vala"
+               _g_variant_unref0 (param);
+#line 186 "../src/contacts-app.vala"
+               _g_variant_builder_unref0 (builder);
+#line 186 "../src/contacts-app.vala"
+               _g_object_unref0 (proxy);
+#line 1544 "contacts-app.c"
+       }
+       goto __finally1;
+       __catch1_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp31_;
+               const gchar* _tmp32_;
+#line 186 "../src/contacts-app.vala"
+               e = _inner_error0_;
+#line 186 "../src/contacts-app.vala"
+               _inner_error0_ = NULL;
+#line 207 "../src/contacts-app.vala"
+               _tmp31_ = e;
+#line 207 "../src/contacts-app.vala"
+               _tmp32_ = _tmp31_->message;
+#line 207 "../src/contacts-app.vala"
+               g_warning ("contacts-app.vala:207: Couldn't open online-accounts: %s", _tmp32_);
+#line 186 "../src/contacts-app.vala"
+               _g_error_free0 (e);
+#line 1564 "contacts-app.c"
+       }
+       __finally1:
+#line 186 "../src/contacts-app.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 186 "../src/contacts-app.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 186 "../src/contacts-app.vala"
+               g_clear_error (&_inner_error0_);
+#line 186 "../src/contacts-app.vala"
+               return;
+#line 1575 "contacts-app.c"
+       }
+}
+
+void
+contacts_app_show_help (ContactsApp* self)
+{
+       GError* _inner_error0_ = NULL;
+#line 211 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 1585 "contacts-app.c"
+       {
+               ContactsWindow* _tmp0_;
+#line 213 "../src/contacts-app.vala"
+               _tmp0_ = self->priv->window;
+#line 213 "../src/contacts-app.vala"
+               gtk_show_uri_on_window ((GtkWindow*) _tmp0_, "help:gnome-help/contacts", 
gtk_get_current_event_time (), &_inner_error0_);
+#line 213 "../src/contacts-app.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1594 "contacts-app.c"
+                       goto __catch2_g_error;
+               }
+       }
+       goto __finally2;
+       __catch2_g_error:
+       {
+               GError* e1 = NULL;
+               GError* _tmp1_;
+               const gchar* _tmp2_;
+#line 212 "../src/contacts-app.vala"
+               e1 = _inner_error0_;
+#line 212 "../src/contacts-app.vala"
+               _inner_error0_ = NULL;
+#line 215 "../src/contacts-app.vala"
+               _tmp1_ = e1;
+#line 215 "../src/contacts-app.vala"
+               _tmp2_ = _tmp1_->message;
+#line 215 "../src/contacts-app.vala"
+               g_warning ("contacts-app.vala:215: Error showing help: %s", _tmp2_);
+#line 212 "../src/contacts-app.vala"
+               _g_error_free0 (e1);
+#line 1616 "contacts-app.c"
+       }
+       __finally2:
+#line 212 "../src/contacts-app.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 212 "../src/contacts-app.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 212 "../src/contacts-app.vala"
+               g_clear_error (&_inner_error0_);
+#line 212 "../src/contacts-app.vala"
+               return;
+#line 1627 "contacts-app.c"
+       }
+}
+
+void
+contacts_app_show_about (ContactsApp* self)
+{
+       gchar** authors = NULL;
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       gchar** _tmp4_;
+       gint authors_length1;
+       gint _authors_size_;
+       gchar** artists = NULL;
+       gchar* _tmp5_;
+       gchar** _tmp6_;
+       gint artists_length1;
+       gint _artists_size_;
+       ContactsWindow* _tmp7_;
+#line 219 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 220 "../src/contacts-app.vala"
+       _tmp0_ = g_strdup ("Alexander Larsson <alexl redhat com>");
+#line 220 "../src/contacts-app.vala"
+       _tmp1_ = g_strdup ("Erick Pérez Castellanos <erick red gmail com>");
+#line 220 "../src/contacts-app.vala"
+       _tmp2_ = g_strdup ("Niels De Graef <nielsdegraef gmail com>");
+#line 220 "../src/contacts-app.vala"
+       _tmp3_ = g_strdup ("Julian Sparber <jsparber gnome org>");
+#line 220 "../src/contacts-app.vala"
+       _tmp4_ = g_new0 (gchar*, 4 + 1);
+#line 220 "../src/contacts-app.vala"
+       _tmp4_[0] = _tmp0_;
+#line 220 "../src/contacts-app.vala"
+       _tmp4_[1] = _tmp1_;
+#line 220 "../src/contacts-app.vala"
+       _tmp4_[2] = _tmp2_;
+#line 220 "../src/contacts-app.vala"
+       _tmp4_[3] = _tmp3_;
+#line 220 "../src/contacts-app.vala"
+       authors = _tmp4_;
+#line 220 "../src/contacts-app.vala"
+       authors_length1 = 4;
+#line 220 "../src/contacts-app.vala"
+       _authors_size_ = authors_length1;
+#line 226 "../src/contacts-app.vala"
+       _tmp5_ = g_strdup ("Allan Day <allanpday gmail com>");
+#line 226 "../src/contacts-app.vala"
+       _tmp6_ = g_new0 (gchar*, 1 + 1);
+#line 226 "../src/contacts-app.vala"
+       _tmp6_[0] = _tmp5_;
+#line 226 "../src/contacts-app.vala"
+       artists = _tmp6_;
+#line 226 "../src/contacts-app.vala"
+       artists_length1 = 1;
+#line 226 "../src/contacts-app.vala"
+       _artists_size_ = artists_length1;
+#line 229 "../src/contacts-app.vala"
+       _tmp7_ = self->priv->window;
+#line 229 "../src/contacts-app.vala"
+       gtk_show_about_dialog ((GtkWindow*) _tmp7_, "artists", artists, "authors", authors, 
"translator-credits", _ ("translator-credits"), "program-name", _ ("GNOME Contacts"), "title", _ ("About 
GNOME Contacts"), "comments", _ ("Contact Management Application"), "copyright", _ ("© 2011 Red Hat, Inc.\n© 
2011-2018 The Contacts Developers"), "license-type", GTK_LICENSE_GPL_2_0, "logo-icon-name", APP_ID, 
"version", PACKAGE_VERSION, "website", "https://wiki.gnome.org/Apps/Contacts";, "wrap-license", TRUE, NULL);
+#line 219 "../src/contacts-app.vala"
+       artists = (_vala_array_free (artists, artists_length1, (GDestroyNotify) g_free), NULL);
+#line 219 "../src/contacts-app.vala"
+       authors = (_vala_array_free (authors, authors_length1, (GDestroyNotify) g_free), NULL);
+#line 1694 "contacts-app.c"
+}
+
+static void
+contacts_app_show_by_email_data_free (gpointer _data)
+{
+       ContactsAppShowByEmailData* _data_;
+       _data_ = _data;
+#line 22 "../src/contacts-app.vala"
+       _g_free0 (_data_->email_address);
+#line 22 "../src/contacts-app.vala"
+       _g_object_unref0 (_data_->self);
+#line 22 "../src/contacts-app.vala"
+       g_slice_free (ContactsAppShowByEmailData, _data_);
+#line 1708 "contacts-app.c"
+}
+
+void
+contacts_app_show_by_email (ContactsApp* self,
+                            const gchar* email_address,
+                            GAsyncReadyCallback _callback_,
+                            gpointer _user_data_)
+{
+       ContactsAppShowByEmailData* _data_;
+       ContactsApp* _tmp0_;
+       gchar* _tmp1_;
+#line 22 "../src/contacts-app.vala"
+       _data_ = g_slice_new0 (ContactsAppShowByEmailData);
+#line 22 "../src/contacts-app.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 22 "../src/contacts-app.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_app_show_by_email_data_free);
+#line 22 "../src/contacts-app.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 22 "../src/contacts-app.vala"
+       _data_->self = _tmp0_;
+#line 22 "../src/contacts-app.vala"
+       _tmp1_ = g_strdup (email_address);
+#line 22 "../src/contacts-app.vala"
+       _g_free0 (_data_->email_address);
+#line 22 "../src/contacts-app.vala"
+       _data_->email_address = _tmp1_;
+#line 22 "../src/contacts-app.vala"
+       contacts_app_show_by_email_co (_data_);
+#line 1738 "contacts-app.c"
+}
+
+void
+contacts_app_show_by_email_finish (ContactsApp* self,
+                                   GAsyncResult* _res_)
+{
+       ContactsAppShowByEmailData* _data_;
+#line 22 "../src/contacts-app.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 1748 "contacts-app.c"
+}
+
+static void
+contacts_app_show_by_email_ready (GObject* source_object,
+                                  GAsyncResult* _res_,
+                                  gpointer _user_data_)
+{
+       ContactsAppShowByEmailData* _data_;
+#line 246 "../src/contacts-app.vala"
+       _data_ = _user_data_;
+#line 246 "../src/contacts-app.vala"
+       _data_->_source_object_ = source_object;
+#line 246 "../src/contacts-app.vala"
+       _data_->_res_ = _res_;
+#line 246 "../src/contacts-app.vala"
+       contacts_app_show_by_email_co (_data_);
+#line 1765 "contacts-app.c"
+}
+
+static Block3Data*
+block3_data_ref (Block3Data* _data3_)
+{
+#line 247 "../src/contacts-app.vala"
+       g_atomic_int_inc (&_data3_->_ref_count_);
+#line 247 "../src/contacts-app.vala"
+       return _data3_;
+#line 1775 "contacts-app.c"
+}
+
+static void
+block3_data_unref (void * _userdata_)
+{
+       Block3Data* _data3_;
+       _data3_ = (Block3Data*) _userdata_;
+#line 247 "../src/contacts-app.vala"
+       if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) {
+#line 1785 "contacts-app.c"
+               ContactsApp* self;
+#line 247 "../src/contacts-app.vala"
+               self = _data3_->self;
+#line 247 "../src/contacts-app.vala"
+               _g_object_unref0 (_data3_->dialog);
+#line 247 "../src/contacts-app.vala"
+               _g_object_unref0 (self);
+#line 247 "../src/contacts-app.vala"
+               g_slice_free (Block3Data, _data3_);
+#line 1795 "contacts-app.c"
+       }
+}
+
+static void
+___lambda75_ (Block3Data* _data3_,
+              gint id)
+{
+       ContactsApp* self;
+       GtkMessageDialog* _tmp0_;
+#line 254 "../src/contacts-app.vala"
+       self = _data3_->self;
+#line 255 "../src/contacts-app.vala"
+       _tmp0_ = _data3_->dialog;
+#line 255 "../src/contacts-app.vala"
+       gtk_widget_destroy ((GtkWidget*) _tmp0_);
+#line 1811 "contacts-app.c"
+}
+
+static void
+____lambda75__gtk_dialog_response (GtkDialog* _sender,
+                                   gint response_id,
+                                   gpointer self)
+{
+#line 254 "../src/contacts-app.vala"
+       ___lambda75_ (self, response_id);
+#line 1821 "contacts-app.c"
+}
+
+static gboolean
+contacts_app_show_by_email_co (ContactsAppShowByEmailData* _data_)
+{
+#line 244 "../src/contacts-app.vala"
+       switch (_data_->_state_) {
+#line 244 "../src/contacts-app.vala"
+               case 0:
+#line 1831 "contacts-app.c"
+               goto _state_0;
+#line 244 "../src/contacts-app.vala"
+               case 1:
+#line 1835 "contacts-app.c"
+               goto _state_1;
+               default:
+#line 244 "../src/contacts-app.vala"
+               g_assert_not_reached ();
+#line 1840 "contacts-app.c"
+       }
+       _state_0:
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp0_ = g_strdup ("email-addresses");
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp1_ = g_new0 (gchar*, 1 + 1);
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp1_[0] = _data_->_tmp0_;
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp2_ = _data_->_tmp1_;
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp2__length1 = 1;
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp3_ = folks_simple_query_new (_data_->email_address, _data_->_tmp2_, 1);
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp4_ = _data_->_tmp3_;
+#line 245 "../src/contacts-app.vala"
+       _data_->_tmp2_ = (_vala_array_free (_data_->_tmp2_, _data_->_tmp2__length1, (GDestroyNotify) g_free), 
NULL);
+#line 245 "../src/contacts-app.vala"
+       _data_->query = _data_->_tmp4_;
+#line 246 "../src/contacts-app.vala"
+       _data_->_tmp5_ = _data_->self->priv->contacts_store;
+#line 246 "../src/contacts-app.vala"
+       _data_->_tmp6_ = _data_->query;
+#line 246 "../src/contacts-app.vala"
+       _data_->_state_ = 1;
+#line 246 "../src/contacts-app.vala"
+       contacts_store_find_contact (_data_->_tmp5_, (FolksQuery*) _data_->_tmp6_, 
contacts_app_show_by_email_ready, _data_);
+#line 246 "../src/contacts-app.vala"
+       return FALSE;
+#line 1871 "contacts-app.c"
+       _state_1:
+#line 246 "../src/contacts-app.vala"
+       _data_->_tmp7_ = contacts_store_find_contact_finish (_data_->_tmp5_, _data_->_res_);
+#line 246 "../src/contacts-app.vala"
+       _data_->individual = _data_->_tmp7_;
+#line 247 "../src/contacts-app.vala"
+       _data_->_tmp8_ = _data_->individual;
+#line 247 "../src/contacts-app.vala"
+       if (_data_->_tmp8_ != NULL) {
+#line 248 "../src/contacts-app.vala"
+               _data_->_tmp9_ = _data_->individual;
+#line 248 "../src/contacts-app.vala"
+               contacts_app_show_contact (_data_->self, _data_->_tmp9_);
+#line 1885 "contacts-app.c"
+       } else {
+#line 247 "../src/contacts-app.vala"
+               _data_->_data3_ = g_slice_new0 (Block3Data);
+#line 247 "../src/contacts-app.vala"
+               _data_->_data3_->_ref_count_ = 1;
+#line 247 "../src/contacts-app.vala"
+               _data_->_data3_->self = g_object_ref (_data_->self);
+#line 250 "../src/contacts-app.vala"
+               _data_->_tmp10_ = _data_->self->priv->window;
+#line 250 "../src/contacts-app.vala"
+               _data_->_tmp11_ = (GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) _data_->_tmp10_, 
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _ ("No contact with email address %s 
found"), _data_->email_address);
+#line 250 "../src/contacts-app.vala"
+               g_object_ref_sink (_data_->_tmp11_);
+#line 250 "../src/contacts-app.vala"
+               _data_->_data3_->dialog = _data_->_tmp11_;
+#line 252 "../src/contacts-app.vala"
+               _data_->_tmp12_ = _data_->_data3_->dialog;
+#line 252 "../src/contacts-app.vala"
+               gtk_window_set_title ((GtkWindow*) _data_->_tmp12_, _ ("Contact not found"));
+#line 253 "../src/contacts-app.vala"
+               _data_->_tmp13_ = _data_->_data3_->dialog;
+#line 253 "../src/contacts-app.vala"
+               gtk_widget_show ((GtkWidget*) _data_->_tmp13_);
+#line 254 "../src/contacts-app.vala"
+               _data_->_tmp14_ = _data_->_data3_->dialog;
+#line 254 "../src/contacts-app.vala"
+               g_signal_connect_data ((GtkDialog*) _data_->_tmp14_, "response", (GCallback) 
____lambda75__gtk_dialog_response, block3_data_ref (_data_->_data3_), (GClosureNotify) block3_data_unref, 0);
+#line 247 "../src/contacts-app.vala"
+               block3_data_unref (_data_->_data3_);
+#line 247 "../src/contacts-app.vala"
+               _data_->_data3_ = NULL;
+#line 1917 "contacts-app.c"
+       }
+#line 244 "../src/contacts-app.vala"
+       _g_object_unref0 (_data_->individual);
+#line 244 "../src/contacts-app.vala"
+       _g_object_unref0 (_data_->query);
+#line 244 "../src/contacts-app.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 244 "../src/contacts-app.vala"
+       if (_data_->_state_ != 0) {
+#line 244 "../src/contacts-app.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 244 "../src/contacts-app.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 1931 "contacts-app.c"
+               }
+       }
+#line 244 "../src/contacts-app.vala"
+       g_object_unref (_data_->_async_result);
+#line 244 "../src/contacts-app.vala"
+       return FALSE;
+#line 1938 "contacts-app.c"
+}
+
+static Block4Data*
+block4_data_ref (Block4Data* _data4_)
+{
+#line 260 "../src/contacts-app.vala"
+       g_atomic_int_inc (&_data4_->_ref_count_);
+#line 260 "../src/contacts-app.vala"
+       return _data4_;
+#line 1948 "contacts-app.c"
+}
+
+static void
+block4_data_unref (void * _userdata_)
+{
+       Block4Data* _data4_;
+       _data4_ = (Block4Data*) _userdata_;
+#line 260 "../src/contacts-app.vala"
+       if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
+#line 1958 "contacts-app.c"
+               ContactsApp* self;
+#line 260 "../src/contacts-app.vala"
+               self = _data4_->self;
+#line 260 "../src/contacts-app.vala"
+               _g_free0 (_data4_->query);
+#line 260 "../src/contacts-app.vala"
+               _g_object_unref0 (self);
+#line 260 "../src/contacts-app.vala"
+               g_slice_free (Block4Data, _data4_);
+#line 1968 "contacts-app.c"
+       }
+}
+
+static void
+___lambda76_ (Block4Data* _data4_)
+{
+       ContactsApp* self;
+       ContactsWindow* _tmp0_;
+#line 264 "../src/contacts-app.vala"
+       self = _data4_->self;
+#line 265 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->window;
+#line 265 "../src/contacts-app.vala"
+       contacts_window_show_search (_tmp0_, _data4_->query);
+#line 1983 "contacts-app.c"
+}
+
+static void
+____lambda76__contacts_store_quiescent (ContactsStore* _sender,
+                                        gpointer self)
+{
+#line 264 "../src/contacts-app.vala"
+       ___lambda76_ (self);
+#line 1992 "contacts-app.c"
+}
+
+void
+contacts_app_show_search (ContactsApp* self,
+                          const gchar* query)
+{
+       Block4Data* _data4_;
+       gchar* _tmp0_;
+       ContactsStore* _tmp1_;
+       gboolean _tmp2_;
+       gboolean _tmp3_;
+#line 260 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 260 "../src/contacts-app.vala"
+       g_return_if_fail (query != NULL);
+#line 260 "../src/contacts-app.vala"
+       _data4_ = g_slice_new0 (Block4Data);
+#line 260 "../src/contacts-app.vala"
+       _data4_->_ref_count_ = 1;
+#line 260 "../src/contacts-app.vala"
+       _data4_->self = g_object_ref (self);
+#line 260 "../src/contacts-app.vala"
+       _tmp0_ = g_strdup (query);
+#line 260 "../src/contacts-app.vala"
+       _g_free0 (_data4_->query);
+#line 260 "../src/contacts-app.vala"
+       _data4_->query = _tmp0_;
+#line 261 "../src/contacts-app.vala"
+       _tmp1_ = self->priv->contacts_store;
+#line 261 "../src/contacts-app.vala"
+       _tmp2_ = contacts_store_get_is_quiescent (_tmp1_);
+#line 261 "../src/contacts-app.vala"
+       _tmp3_ = _tmp2_;
+#line 261 "../src/contacts-app.vala"
+       if (_tmp3_) {
+#line 2028 "contacts-app.c"
+               ContactsWindow* _tmp4_;
+#line 262 "../src/contacts-app.vala"
+               _tmp4_ = self->priv->window;
+#line 262 "../src/contacts-app.vala"
+               contacts_window_show_search (_tmp4_, _data4_->query);
+#line 2034 "contacts-app.c"
+       } else {
+               ContactsStore* _tmp5_;
+#line 264 "../src/contacts-app.vala"
+               _tmp5_ = self->priv->contacts_store;
+#line 264 "../src/contacts-app.vala"
+               g_signal_connect_data (_tmp5_, "quiescent", (GCallback) 
____lambda76__contacts_store_quiescent, block4_data_ref (_data4_), (GClosureNotify) block4_data_unref, 
G_CONNECT_AFTER);
+#line 2041 "contacts-app.c"
+       }
+#line 260 "../src/contacts-app.vala"
+       block4_data_unref (_data4_);
+#line 260 "../src/contacts-app.vala"
+       _data4_ = NULL;
+#line 2047 "contacts-app.c"
+}
+
+static void
+contacts_app_create_actions (ContactsApp* self)
+{
+       gchar* _tmp0_;
+       gchar** _tmp1_;
+       gchar** _tmp2_;
+       gint _tmp2__length1;
+       gchar* _tmp3_;
+       gchar** _tmp4_;
+       gchar** _tmp5_;
+       gint _tmp5__length1;
+       gchar* _tmp6_;
+       gchar* _tmp7_;
+       gchar** _tmp8_;
+       gchar** _tmp9_;
+       gint _tmp9__length1;
+#line 270 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 271 "../src/contacts-app.vala"
+       g_action_map_add_action_entries ((GActionMap*) self, CONTACTS_APP_action_entries, (gint) G_N_ELEMENTS 
(CONTACTS_APP_action_entries), self);
+#line 273 "../src/contacts-app.vala"
+       _tmp0_ = g_strdup ("F1");
+#line 273 "../src/contacts-app.vala"
+       _tmp1_ = g_new0 (gchar*, 1 + 1);
+#line 273 "../src/contacts-app.vala"
+       _tmp1_[0] = _tmp0_;
+#line 273 "../src/contacts-app.vala"
+       _tmp2_ = _tmp1_;
+#line 273 "../src/contacts-app.vala"
+       _tmp2__length1 = 1;
+#line 273 "../src/contacts-app.vala"
+       gtk_application_set_accels_for_action ((GtkApplication*) self, "app.help", _tmp2_);
+#line 273 "../src/contacts-app.vala"
+       _tmp2_ = (_vala_array_free (_tmp2_, _tmp2__length1, (GDestroyNotify) g_free), NULL);
+#line 274 "../src/contacts-app.vala"
+       _tmp3_ = g_strdup ("<Primary>n");
+#line 274 "../src/contacts-app.vala"
+       _tmp4_ = g_new0 (gchar*, 1 + 1);
+#line 274 "../src/contacts-app.vala"
+       _tmp4_[0] = _tmp3_;
+#line 274 "../src/contacts-app.vala"
+       _tmp5_ = _tmp4_;
+#line 274 "../src/contacts-app.vala"
+       _tmp5__length1 = 1;
+#line 274 "../src/contacts-app.vala"
+       gtk_application_set_accels_for_action ((GtkApplication*) self, "app.new-contact", _tmp5_);
+#line 274 "../src/contacts-app.vala"
+       _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
+#line 275 "../src/contacts-app.vala"
+       _tmp6_ = g_strdup ("<Primary>F1");
+#line 275 "../src/contacts-app.vala"
+       _tmp7_ = g_strdup ("<Primary>question");
+#line 275 "../src/contacts-app.vala"
+       _tmp8_ = g_new0 (gchar*, 2 + 1);
+#line 275 "../src/contacts-app.vala"
+       _tmp8_[0] = _tmp6_;
+#line 275 "../src/contacts-app.vala"
+       _tmp8_[1] = _tmp7_;
+#line 275 "../src/contacts-app.vala"
+       _tmp9_ = _tmp8_;
+#line 275 "../src/contacts-app.vala"
+       _tmp9__length1 = 2;
+#line 275 "../src/contacts-app.vala"
+       gtk_application_set_accels_for_action ((GtkApplication*) self, "win.show-help-overlay", _tmp9_);
+#line 275 "../src/contacts-app.vala"
+       _tmp9_ = (_vala_array_free (_tmp9_, _tmp9__length1, (GDestroyNotify) g_free), NULL);
+#line 2116 "contacts-app.c"
+}
+
+static void
+contacts_app_create_window (ContactsApp* self)
+{
+       ContactsSettings* _tmp0_;
+       ContactsStore* _tmp1_;
+       ContactsWindow* _tmp2_;
+#line 278 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 279 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->settings;
+#line 279 "../src/contacts-app.vala"
+       _tmp1_ = self->priv->contacts_store;
+#line 279 "../src/contacts-app.vala"
+       _tmp2_ = contacts_window_new (_tmp0_, self, _tmp1_);
+#line 279 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp2_);
+#line 279 "../src/contacts-app.vala"
+       _g_object_unref0 (self->priv->window);
+#line 279 "../src/contacts-app.vala"
+       self->priv->window = _tmp2_;
+#line 2139 "contacts-app.c"
+}
+
+static Block5Data*
+block5_data_ref (Block5Data* _data5_)
+{
+#line 282 "../src/contacts-app.vala"
+       g_atomic_int_inc (&_data5_->_ref_count_);
+#line 282 "../src/contacts-app.vala"
+       return _data5_;
+#line 2149 "contacts-app.c"
+}
+
+static void
+block5_data_unref (void * _userdata_)
+{
+       Block5Data* _data5_;
+       _data5_ = (Block5Data*) _userdata_;
+#line 282 "../src/contacts-app.vala"
+       if (g_atomic_int_dec_and_test (&_data5_->_ref_count_)) {
+#line 2159 "contacts-app.c"
+               ContactsApp* self;
+#line 282 "../src/contacts-app.vala"
+               self = _data5_->self;
+#line 282 "../src/contacts-app.vala"
+               _g_object_unref0 (self);
+#line 282 "../src/contacts-app.vala"
+               g_slice_free (Block5Data, _data5_);
+#line 2167 "contacts-app.c"
+       }
+}
+
+static void
+__lambda65_ (Block5Data* _data5_)
+{
+       ContactsApp* self;
+       ContactsStore* _tmp0_;
+       ContactsWindow* _tmp1_;
+#line 287 "../src/contacts-app.vala"
+       self = _data5_->self;
+#line 288 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->contacts_store;
+#line 288 "../src/contacts-app.vala"
+       g_signal_handler_disconnect ((GObject*) _tmp0_, _data5_->id);
+#line 289 "../src/contacts-app.vala"
+       g_source_remove (_data5_->id2);
+#line 291 "../src/contacts-app.vala"
+       contacts_app_create_window (self);
+#line 292 "../src/contacts-app.vala"
+       _tmp1_ = self->priv->window;
+#line 292 "../src/contacts-app.vala"
+       gtk_widget_show ((GtkWidget*) _tmp1_);
+#line 294 "../src/contacts-app.vala"
+       contacts_app_schedule_window_finish_ui (self);
+#line 296 "../src/contacts-app.vala"
+       g_application_release ((GApplication*) self);
+#line 2195 "contacts-app.c"
+}
+
+static void
+___lambda65__contacts_store_prepared (ContactsStore* _sender,
+                                      gpointer self)
+{
+#line 287 "../src/contacts-app.vala"
+       __lambda65_ (self);
+#line 2204 "contacts-app.c"
+}
+
+static gboolean
+__lambda68_ (Block5Data* _data5_)
+{
+       ContactsApp* self;
+       ContactsStore* _tmp0_;
+       ContactsWindow* _tmp1_;
+       gboolean result = FALSE;
+#line 299 "../src/contacts-app.vala"
+       self = _data5_->self;
+#line 300 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->contacts_store;
+#line 300 "../src/contacts-app.vala"
+       g_signal_handler_disconnect ((GObject*) _tmp0_, _data5_->id);
+#line 302 "../src/contacts-app.vala"
+       contacts_app_create_window (self);
+#line 303 "../src/contacts-app.vala"
+       _tmp1_ = self->priv->window;
+#line 303 "../src/contacts-app.vala"
+       gtk_widget_show ((GtkWidget*) _tmp1_);
+#line 305 "../src/contacts-app.vala"
+       contacts_app_schedule_window_finish_ui (self);
+#line 307 "../src/contacts-app.vala"
+       g_application_release ((GApplication*) self);
+#line 308 "../src/contacts-app.vala"
+       result = FALSE;
+#line 308 "../src/contacts-app.vala"
+       return result;
+#line 2234 "contacts-app.c"
+}
+
+static gboolean
+___lambda68__gsource_func (gpointer self)
+{
+       gboolean result;
+       result = __lambda68_ (self);
+#line 299 "../src/contacts-app.vala"
+       return result;
+#line 2244 "contacts-app.c"
+}
+
+static void
+contacts_app_schedule_window_creation (ContactsApp* self)
+{
+       Block5Data* _data5_;
+       ContactsStore* _tmp0_;
+       gulong _tmp1_;
+#line 282 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 282 "../src/contacts-app.vala"
+       _data5_ = g_slice_new0 (Block5Data);
+#line 282 "../src/contacts-app.vala"
+       _data5_->_ref_count_ = 1;
+#line 282 "../src/contacts-app.vala"
+       _data5_->self = g_object_ref (self);
+#line 284 "../src/contacts-app.vala"
+       g_application_hold ((GApplication*) self);
+#line 285 "../src/contacts-app.vala"
+       _data5_->id = (gulong) 0;
+#line 286 "../src/contacts-app.vala"
+       _data5_->id2 = (guint) 0;
+#line 287 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->contacts_store;
+#line 287 "../src/contacts-app.vala"
+       _tmp1_ = g_signal_connect_data (_tmp0_, "prepared", (GCallback) ___lambda65__contacts_store_prepared, 
block5_data_ref (_data5_), (GClosureNotify) block5_data_unref, 0);
+#line 287 "../src/contacts-app.vala"
+       _data5_->id = _tmp1_;
+#line 299 "../src/contacts-app.vala"
+       _data5_->id2 = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 500, ___lambda68__gsource_func, 
block5_data_ref (_data5_), block5_data_unref);
+#line 311 "../src/contacts-app.vala"
+       self->priv->is_prepare_scheluded = TRUE;
+#line 282 "../src/contacts-app.vala"
+       block5_data_unref (_data5_);
+#line 282 "../src/contacts-app.vala"
+       _data5_ = NULL;
+#line 2281 "contacts-app.c"
+}
+
+static Block6Data*
+block6_data_ref (Block6Data* _data6_)
+{
+#line 314 "../src/contacts-app.vala"
+       g_atomic_int_inc (&_data6_->_ref_count_);
+#line 314 "../src/contacts-app.vala"
+       return _data6_;
+#line 2291 "contacts-app.c"
+}
+
+static void
+block6_data_unref (void * _userdata_)
+{
+       Block6Data* _data6_;
+       _data6_ = (Block6Data*) _userdata_;
+#line 314 "../src/contacts-app.vala"
+       if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) {
+#line 2301 "contacts-app.c"
+               ContactsApp* self;
+#line 314 "../src/contacts-app.vala"
+               self = _data6_->self;
+#line 314 "../src/contacts-app.vala"
+               _g_object_unref0 (self);
+#line 314 "../src/contacts-app.vala"
+               g_slice_free (Block6Data, _data6_);
+#line 2309 "contacts-app.c"
+       }
+}
+
+static void
+__lambda66_ (Block6Data* _data6_)
+{
+       ContactsApp* self;
+       ContactsStore* _tmp0_;
+       ContactsWindow* _tmp1_;
+#line 319 "../src/contacts-app.vala"
+       self = _data6_->self;
+#line 320 "../src/contacts-app.vala"
+       g_source_remove (_data6_->id2);
+#line 321 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->contacts_store;
+#line 321 "../src/contacts-app.vala"
+       g_signal_handler_disconnect ((GObject*) _tmp0_, _data6_->id);
+#line 323 "../src/contacts-app.vala"
+       g_debug ("contacts-app.vala:323: callign set_list_pane from quiescent.connect");
+#line 324 "../src/contacts-app.vala"
+       _tmp1_ = self->priv->window;
+#line 324 "../src/contacts-app.vala"
+       contacts_window_set_list_pane (_tmp1_);
+#line 2333 "contacts-app.c"
+}
+
+static void
+___lambda66__contacts_store_quiescent (ContactsStore* _sender,
+                                       gpointer self)
+{
+#line 319 "../src/contacts-app.vala"
+       __lambda66_ (self);
+#line 2342 "contacts-app.c"
+}
+
+static gboolean
+__lambda67_ (Block6Data* _data6_)
+{
+       ContactsApp* self;
+       ContactsStore* _tmp0_;
+       ContactsWindow* _tmp1_;
+       gboolean result = FALSE;
+#line 327 "../src/contacts-app.vala"
+       self = _data6_->self;
+#line 328 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->contacts_store;
+#line 328 "../src/contacts-app.vala"
+       g_signal_handler_disconnect ((GObject*) _tmp0_, _data6_->id);
+#line 330 "../src/contacts-app.vala"
+       g_debug ("contacts-app.vala:330: callign set_list_pane from 500.timeout");
+#line 331 "../src/contacts-app.vala"
+       _tmp1_ = self->priv->window;
+#line 331 "../src/contacts-app.vala"
+       contacts_window_set_list_pane (_tmp1_);
+#line 332 "../src/contacts-app.vala"
+       result = FALSE;
+#line 332 "../src/contacts-app.vala"
+       return result;
+#line 2368 "contacts-app.c"
+}
+
+static gboolean
+___lambda67__gsource_func (gpointer self)
+{
+       gboolean result;
+       result = __lambda67_ (self);
+#line 327 "../src/contacts-app.vala"
+       return result;
+#line 2378 "contacts-app.c"
+}
+
+static void
+contacts_app_schedule_window_finish_ui (ContactsApp* self)
+{
+       Block6Data* _data6_;
+       ContactsStore* _tmp0_;
+       gulong _tmp1_;
+#line 314 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 314 "../src/contacts-app.vala"
+       _data6_ = g_slice_new0 (Block6Data);
+#line 314 "../src/contacts-app.vala"
+       _data6_->_ref_count_ = 1;
+#line 314 "../src/contacts-app.vala"
+       _data6_->self = g_object_ref (self);
+#line 317 "../src/contacts-app.vala"
+       _data6_->id = (gulong) 0;
+#line 318 "../src/contacts-app.vala"
+       _data6_->id2 = (guint) 0;
+#line 319 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->contacts_store;
+#line 319 "../src/contacts-app.vala"
+       _tmp1_ = g_signal_connect_data (_tmp0_, "quiescent", (GCallback) 
___lambda66__contacts_store_quiescent, block6_data_ref (_data6_), (GClosureNotify) block6_data_unref, 0);
+#line 319 "../src/contacts-app.vala"
+       _data6_->id = _tmp1_;
+#line 327 "../src/contacts-app.vala"
+       _data6_->id2 = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 500, ___lambda67__gsource_func, 
block6_data_ref (_data6_), block6_data_unref);
+#line 335 "../src/contacts-app.vala"
+       self->priv->is_quiescent_scheduled = TRUE;
+#line 314 "../src/contacts-app.vala"
+       block6_data_unref (_data6_);
+#line 314 "../src/contacts-app.vala"
+       _data6_ = NULL;
+#line 2413 "contacts-app.c"
+}
+
+static void
+contacts_app_real_startup (GApplication* base)
+{
+       ContactsApp * self;
+       ContactsStore* _tmp0_;
+#line 338 "../src/contacts-app.vala"
+       self = (ContactsApp*) base;
+#line 339 "../src/contacts-app.vala"
+       if (!contacts_ensure_eds_accounts (TRUE)) {
+#line 340 "../src/contacts-app.vala"
+               g_application_quit ((GApplication*) self);
+#line 2427 "contacts-app.c"
+       }
+#line 342 "../src/contacts-app.vala"
+       _tmp0_ = contacts_store_new ();
+#line 342 "../src/contacts-app.vala"
+       _g_object_unref0 (self->priv->contacts_store);
+#line 342 "../src/contacts-app.vala"
+       self->priv->contacts_store = _tmp0_;
+#line 343 "../src/contacts-app.vala"
+       G_APPLICATION_CLASS (contacts_app_parent_class)->startup ((GApplication*) G_TYPE_CHECK_INSTANCE_CAST 
(self, gtk_application_get_type (), GtkApplication));
+#line 345 "../src/contacts-app.vala"
+       contacts_app_load_styling (self);
+#line 2439 "contacts-app.c"
+}
+
+void
+contacts_app_load_styling (ContactsApp* self)
+{
+       GtkCssProvider* provider = NULL;
+       GtkCssProvider* _tmp0_;
+       GdkScreen* _tmp1_;
+#line 348 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 349 "../src/contacts-app.vala"
+       _tmp0_ = gtk_css_provider_new ();
+#line 349 "../src/contacts-app.vala"
+       provider = _tmp0_;
+#line 350 "../src/contacts-app.vala"
+       gtk_css_provider_load_from_resource (provider, "/org/gnome/Contacts/ui/style.css");
+#line 351 "../src/contacts-app.vala"
+       _tmp1_ = gdk_screen_get_default ();
+#line 351 "../src/contacts-app.vala"
+       gtk_style_context_add_provider_for_screen (_tmp1_, (GtkStyleProvider*) provider, (guint) 
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+#line 348 "../src/contacts-app.vala"
+       _g_object_unref0 (provider);
+#line 2462 "contacts-app.c"
+}
+
+static void
+contacts_app_real_activate (GApplication* base)
+{
+       ContactsApp * self;
+       ContactsSettings* _tmp0_;
+       gboolean _tmp1_;
+       gboolean _tmp2_;
+#line 356 "../src/contacts-app.vala"
+       self = (ContactsApp*) base;
+#line 358 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->settings;
+#line 358 "../src/contacts-app.vala"
+       _tmp1_ = contacts_settings_get_did_initial_setup (_tmp0_);
+#line 358 "../src/contacts-app.vala"
+       _tmp2_ = _tmp1_;
+#line 358 "../src/contacts-app.vala"
+       if (_tmp2_) {
+#line 359 "../src/contacts-app.vala"
+               contacts_app_create_new_window (self);
+#line 2484 "contacts-app.c"
+       } else {
+#line 361 "../src/contacts-app.vala"
+               contacts_app_run_setup (self);
+#line 2488 "contacts-app.c"
+       }
+}
+
+static Block7Data*
+block7_data_ref (Block7Data* _data7_)
+{
+#line 364 "../src/contacts-app.vala"
+       g_atomic_int_inc (&_data7_->_ref_count_);
+#line 364 "../src/contacts-app.vala"
+       return _data7_;
+#line 2499 "contacts-app.c"
+}
+
+static void
+block7_data_unref (void * _userdata_)
+{
+       Block7Data* _data7_;
+       _data7_ = (Block7Data*) _userdata_;
+#line 364 "../src/contacts-app.vala"
+       if (g_atomic_int_dec_and_test (&_data7_->_ref_count_)) {
+#line 2509 "contacts-app.c"
+               ContactsApp* self;
+#line 364 "../src/contacts-app.vala"
+               self = _data7_->self;
+#line 364 "../src/contacts-app.vala"
+               _g_object_unref0 (_data7_->setup_window);
+#line 364 "../src/contacts-app.vala"
+               _g_object_unref0 (_data7_->change_book_action);
+#line 364 "../src/contacts-app.vala"
+               _g_object_unref0 (self);
+#line 364 "../src/contacts-app.vala"
+               g_slice_free (Block7Data, _data7_);
+#line 2521 "contacts-app.c"
+       }
+}
+
+static void
+__lambda73_ (Block7Data* _data7_,
+             EdsfPersonaStore* selected_store)
+{
+       ContactsApp* self;
+       ESourceRegistry* _tmp0_;
+       ESource* _tmp1_;
+       ESource* _tmp2_;
+       ContactsSettings* _tmp3_;
+#line 371 "../src/contacts-app.vala"
+       self = _data7_->self;
+#line 371 "../src/contacts-app.vala"
+       g_return_if_fail (selected_store != NULL);
+#line 372 "../src/contacts-app.vala"
+       gtk_widget_destroy ((GtkWidget*) _data7_->setup_window);
+#line 374 "../src/contacts-app.vala"
+       _tmp0_ = contacts_eds_source_registry;
+#line 374 "../src/contacts-app.vala"
+       _tmp1_ = edsf_persona_store_get_source (selected_store);
+#line 374 "../src/contacts-app.vala"
+       _tmp2_ = _tmp1_;
+#line 374 "../src/contacts-app.vala"
+       e_source_registry_set_default_address_book (_tmp0_, _tmp2_);
+#line 375 "../src/contacts-app.vala"
+       _tmp3_ = self->priv->settings;
+#line 375 "../src/contacts-app.vala"
+       contacts_settings_set_did_initial_setup (_tmp3_, TRUE);
+#line 377 "../src/contacts-app.vala"
+       g_simple_action_set_enabled (_data7_->change_book_action, TRUE);
+#line 378 "../src/contacts-app.vala"
+       contacts_app_create_new_window (self);
+#line 2556 "contacts-app.c"
+}
+
+static void
+___lambda73__contacts_setup_window_setup_done (ContactsSetupWindow* _sender,
+                                               EdsfPersonaStore* selected_address_book,
+                                               gpointer self)
+{
+#line 371 "../src/contacts-app.vala"
+       __lambda73_ (self, selected_address_book);
+#line 2566 "contacts-app.c"
+}
+
+static void
+contacts_app_run_setup (ContactsApp* self)
+{
+       Block7Data* _data7_;
+       GAction* _tmp0_;
+       GSimpleAction* _tmp1_;
+       ContactsStore* _tmp2_;
+       ContactsSetupWindow* _tmp3_;
+#line 364 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 364 "../src/contacts-app.vala"
+       _data7_ = g_slice_new0 (Block7Data);
+#line 364 "../src/contacts-app.vala"
+       _data7_->_ref_count_ = 1;
+#line 364 "../src/contacts-app.vala"
+       _data7_->self = g_object_ref (self);
+#line 366 "../src/contacts-app.vala"
+       _tmp0_ = g_action_map_lookup_action ((GActionMap*) self, "change-book");
+#line 366 "../src/contacts-app.vala"
+       _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, g_simple_action_get_type ()) ? 
((GSimpleAction*) _tmp0_) : NULL);
+#line 366 "../src/contacts-app.vala"
+       _data7_->change_book_action = _tmp1_;
+#line 367 "../src/contacts-app.vala"
+       g_simple_action_set_enabled (_data7_->change_book_action, FALSE);
+#line 370 "../src/contacts-app.vala"
+       _tmp2_ = self->priv->contacts_store;
+#line 370 "../src/contacts-app.vala"
+       _tmp3_ = contacts_setup_window_new (self, _tmp2_);
+#line 370 "../src/contacts-app.vala"
+       g_object_ref_sink (_tmp3_);
+#line 370 "../src/contacts-app.vala"
+       _data7_->setup_window = _tmp3_;
+#line 371 "../src/contacts-app.vala"
+       g_signal_connect_data (_data7_->setup_window, "setup-done", (GCallback) 
___lambda73__contacts_setup_window_setup_done, block7_data_ref (_data7_), (GClosureNotify) block7_data_unref, 
0);
+#line 380 "../src/contacts-app.vala"
+       gtk_widget_show ((GtkWidget*) _data7_->setup_window);
+#line 364 "../src/contacts-app.vala"
+       block7_data_unref (_data7_);
+#line 364 "../src/contacts-app.vala"
+       _data7_ = NULL;
+#line 2609 "contacts-app.c"
+}
+
+static void
+contacts_app_create_new_window (ContactsApp* self)
+{
+       ContactsWindow* _tmp0_;
+       ContactsStore* _tmp5_;
+       gboolean _tmp6_;
+       gboolean _tmp7_;
+       ContactsWindow* _tmp9_;
+#line 383 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 385 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->window;
+#line 385 "../src/contacts-app.vala"
+       if (_tmp0_ == NULL) {
+#line 2626 "contacts-app.c"
+               ContactsStore* _tmp1_;
+               gboolean _tmp2_;
+               gboolean _tmp3_;
+               ContactsWindow* _tmp4_;
+#line 386 "../src/contacts-app.vala"
+               _tmp1_ = self->priv->contacts_store;
+#line 386 "../src/contacts-app.vala"
+               _tmp2_ = contacts_store_get_is_prepared (_tmp1_);
+#line 386 "../src/contacts-app.vala"
+               _tmp3_ = _tmp2_;
+#line 386 "../src/contacts-app.vala"
+               if (!_tmp3_) {
+#line 387 "../src/contacts-app.vala"
+                       if (!self->priv->is_prepare_scheluded) {
+#line 388 "../src/contacts-app.vala"
+                               contacts_app_schedule_window_creation (self);
+#line 389 "../src/contacts-app.vala"
+                               return;
+#line 2645 "contacts-app.c"
+                       }
+               }
+#line 393 "../src/contacts-app.vala"
+               contacts_app_create_window (self);
+#line 394 "../src/contacts-app.vala"
+               _tmp4_ = self->priv->window;
+#line 394 "../src/contacts-app.vala"
+               gtk_widget_show ((GtkWidget*) _tmp4_);
+#line 2654 "contacts-app.c"
+       }
+#line 397 "../src/contacts-app.vala"
+       _tmp5_ = self->priv->contacts_store;
+#line 397 "../src/contacts-app.vala"
+       _tmp6_ = contacts_store_get_is_quiescent (_tmp5_);
+#line 397 "../src/contacts-app.vala"
+       _tmp7_ = _tmp6_;
+#line 397 "../src/contacts-app.vala"
+       if (_tmp7_) {
+#line 2664 "contacts-app.c"
+               ContactsWindow* _tmp8_;
+#line 398 "../src/contacts-app.vala"
+               g_debug ("contacts-app.vala:398: callign set_list_pane cause store is already qu" \
+"iescent");
+#line 399 "../src/contacts-app.vala"
+               _tmp8_ = self->priv->window;
+#line 399 "../src/contacts-app.vala"
+               contacts_window_set_list_pane (_tmp8_);
+#line 2672 "contacts-app.c"
+       } else {
+#line 400 "../src/contacts-app.vala"
+               if (!self->priv->is_quiescent_scheduled) {
+#line 401 "../src/contacts-app.vala"
+                       contacts_app_schedule_window_finish_ui (self);
+#line 2678 "contacts-app.c"
+               }
+       }
+#line 404 "../src/contacts-app.vala"
+       _tmp9_ = self->priv->window;
+#line 404 "../src/contacts-app.vala"
+       if (_tmp9_ != NULL) {
+#line 2685 "contacts-app.c"
+               ContactsWindow* _tmp10_;
+#line 405 "../src/contacts-app.vala"
+               _tmp10_ = self->priv->window;
+#line 405 "../src/contacts-app.vala"
+               gtk_window_present ((GtkWindow*) _tmp10_);
+#line 2691 "contacts-app.c"
+       }
+}
+
+void
+contacts_app_new_contact (ContactsApp* self)
+{
+       ContactsWindow* _tmp0_;
+#line 408 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 409 "../src/contacts-app.vala"
+       _tmp0_ = self->priv->window;
+#line 409 "../src/contacts-app.vala"
+       contacts_window_new_contact (_tmp0_);
+#line 2705 "contacts-app.c"
+}
+
+static gchar*
+_variant_get1 (GVariant* value)
+{
+#line 415 "../src/contacts-app.vala"
+       if (value && g_variant_is_of_type (value, G_VARIANT_TYPE_STRING)) {
+#line 415 "../src/contacts-app.vala"
+               return g_variant_dup_string (value, NULL);
+#line 2715 "contacts-app.c"
+       } else {
+#line 415 "../src/contacts-app.vala"
+               return NULL;
+#line 2719 "contacts-app.c"
+       }
+}
+
+static void
+contacts_app_on_show_contact (ContactsApp* self,
+                              GSimpleAction* action,
+                              GVariant* param)
+{
+       gchar* individual = NULL;
+       gchar* _tmp0_;
+       const gchar* _tmp1_;
+#line 412 "../src/contacts-app.vala"
+       g_return_if_fail (self != NULL);
+#line 412 "../src/contacts-app.vala"
+       g_return_if_fail (action != NULL);
+#line 413 "../src/contacts-app.vala"
+       g_application_activate ((GApplication*) self);
+#line 415 "../src/contacts-app.vala"
+       _tmp0_ = _variant_get1 (param);
+#line 415 "../src/contacts-app.vala"
+       individual = _tmp0_;
+#line 416 "../src/contacts-app.vala"
+       _tmp1_ = individual;
+#line 416 "../src/contacts-app.vala"
+       if (_tmp1_ != NULL) {
+#line 2745 "contacts-app.c"
+               const gchar* _tmp2_;
+#line 417 "../src/contacts-app.vala"
+               _tmp2_ = individual;
+#line 417 "../src/contacts-app.vala"
+               contacts_app_show_individual (self, _tmp2_, NULL, NULL);
+#line 2751 "contacts-app.c"
+       }
+#line 412 "../src/contacts-app.vala"
+       _g_free0 (individual);
+#line 2755 "contacts-app.c"
+}
+
+static void
+contacts_app_class_init (ContactsAppClass * klass,
+                         gpointer klass_data)
+{
+#line 22 "../src/contacts-app.vala"
+       contacts_app_parent_class = g_type_class_peek_parent (klass);
+#line 22 "../src/contacts-app.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsApp_private_offset);
+#line 22 "../src/contacts-app.vala"
+       ((GApplicationClass *) klass)->command_line = (gint (*) (GApplication*, GApplicationCommandLine*)) 
contacts_app_real_command_line;
+#line 22 "../src/contacts-app.vala"
+       ((GApplicationClass *) klass)->handle_local_options = (gint (*) (GApplication*, GVariantDict*)) 
contacts_app_real_handle_local_options;
+#line 22 "../src/contacts-app.vala"
+       ((GApplicationClass *) klass)->startup = (void (*) (GApplication*)) contacts_app_real_startup;
+#line 22 "../src/contacts-app.vala"
+       ((GApplicationClass *) klass)->activate = (void (*) (GApplication*)) contacts_app_real_activate;
+#line 22 "../src/contacts-app.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_app_finalize;
+#line 2776 "contacts-app.c"
+}
+
+static void
+contacts_app_instance_init (ContactsApp * self,
+                            gpointer klass)
+{
+#line 22 "../src/contacts-app.vala"
+       self->priv = contacts_app_get_instance_private (self);
+#line 29 "../src/contacts-app.vala"
+       self->priv->is_prepare_scheluded = FALSE;
+#line 30 "../src/contacts-app.vala"
+       self->priv->is_quiescent_scheduled = FALSE;
+#line 2789 "contacts-app.c"
+}
+
+static void
+contacts_app_finalize (GObject * obj)
+{
+       ContactsApp * self;
+#line 22 "../src/contacts-app.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_APP, ContactsApp);
+#line 23 "../src/contacts-app.vala"
+       _g_object_unref0 (self->priv->settings);
+#line 25 "../src/contacts-app.vala"
+       _g_object_unref0 (self->priv->contacts_store);
+#line 27 "../src/contacts-app.vala"
+       _g_object_unref0 (self->priv->window);
+#line 22 "../src/contacts-app.vala"
+       G_OBJECT_CLASS (contacts_app_parent_class)->finalize (obj);
+#line 2806 "contacts-app.c"
+}
+
+static GType
+contacts_app_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsAppClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_app_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof 
(ContactsApp), 0, (GInstanceInitFunc) contacts_app_instance_init, NULL };
+       GType contacts_app_type_id;
+       contacts_app_type_id = g_type_register_static (gtk_application_get_type (), "ContactsApp", 
&g_define_type_info, 0);
+       ContactsApp_private_offset = g_type_add_instance_private (contacts_app_type_id, sizeof 
(ContactsAppPrivate));
+       return contacts_app_type_id;
+}
+
+GType
+contacts_app_get_type (void)
+{
+       static volatile gsize contacts_app_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_app_type_id__volatile)) {
+               GType contacts_app_type_id;
+               contacts_app_type_id = contacts_app_get_type_once ();
+               g_once_init_leave (&contacts_app_type_id__volatile, contacts_app_type_id);
+       }
+       return contacts_app_type_id__volatile;
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c
new file mode 100644
index 0000000..80ebeca
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-avatar-selector.c
@@ -0,0 +1,1864 @@
+/* contacts-avatar-selector.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-avatar-selector.vala, do not modify */
+
+/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <libgnome-desktop/gnome-desktop-thumbnail.h>
+#include <folks/folks.h>
+#include <glib.h>
+#include <cheese/cheese-camera-device-monitor.h>
+#include <stdlib.h>
+#include <string.h>
+#include <cheese/cheese-camera-device.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <math.h>
+#include <float.h>
+#include <gio/gio.h>
+#include "contacts.h"
+#include <glib/gi18n-lib.h>
+#include <gee.h>
+
+#define CONTACTS_TYPE_AVATAR_SELECTOR (contacts_avatar_selector_get_type ())
+#define CONTACTS_AVATAR_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR_SELECTOR, 
ContactsAvatarSelector))
+#define CONTACTS_AVATAR_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_AVATAR_SELECTOR, ContactsAvatarSelectorClass))
+#define CONTACTS_IS_AVATAR_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR_SELECTOR))
+#define CONTACTS_IS_AVATAR_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_AVATAR_SELECTOR))
+#define CONTACTS_AVATAR_SELECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_AVATAR_SELECTOR, ContactsAvatarSelectorClass))
+
+typedef struct _ContactsAvatarSelector ContactsAvatarSelector;
+typedef struct _ContactsAvatarSelectorClass ContactsAvatarSelectorClass;
+typedef struct _ContactsAvatarSelectorPrivate ContactsAvatarSelectorPrivate;
+enum  {
+       CONTACTS_AVATAR_SELECTOR_0_PROPERTY,
+       CONTACTS_AVATAR_SELECTOR_NUM_PROPERTIES
+};
+static GParamSpec* contacts_avatar_selector_properties[CONTACTS_AVATAR_SELECTOR_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_thread_unref0(var) ((var == NULL) ? NULL : (var = (g_thread_unref (var), NULL)))
+#define _g_bytes_unref0(var) ((var == NULL) ? NULL : (var = (g_bytes_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _Block8Data Block8Data;
+
+#define CONTACTS_TYPE_AVATAR (contacts_avatar_get_type ())
+#define CONTACTS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR, ContactsAvatar))
+#define CONTACTS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+#define CONTACTS_IS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_IS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_AVATAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+
+typedef struct _ContactsAvatar ContactsAvatar;
+typedef struct _ContactsAvatarClass ContactsAvatarClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define CONTACTS_TYPE_CROP_CHEESE_DIALOG (contacts_crop_cheese_dialog_get_type ())
+#define CONTACTS_CROP_CHEESE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG, ContactsCropCheeseDialog))
+#define CONTACTS_CROP_CHEESE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG, ContactsCropCheeseDialogClass))
+#define CONTACTS_IS_CROP_CHEESE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG))
+#define CONTACTS_IS_CROP_CHEESE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG))
+#define CONTACTS_CROP_CHEESE_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG, ContactsCropCheeseDialogClass))
+
+typedef struct _ContactsCropCheeseDialog ContactsCropCheeseDialog;
+typedef struct _ContactsCropCheeseDialogClass ContactsCropCheeseDialogClass;
+
+#define CONTACTS_TYPE_WINDOW (contacts_window_get_type ())
+#define CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_WINDOW, ContactsWindow))
+#define CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+#define CONTACTS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+
+typedef struct _ContactsWindow ContactsWindow;
+typedef struct _ContactsWindowClass ContactsWindowClass;
+typedef struct _Block9Data Block9Data;
+enum  {
+       CONTACTS_AVATAR_SELECTOR_SET_AVATAR_SIGNAL,
+       CONTACTS_AVATAR_SELECTOR_NUM_SIGNALS
+};
+static guint contacts_avatar_selector_signals[CONTACTS_AVATAR_SELECTOR_NUM_SIGNALS] = {0};
+
+struct _ContactsAvatarSelector {
+       GtkPopover parent_instance;
+       ContactsAvatarSelectorPrivate * priv;
+};
+
+struct _ContactsAvatarSelectorClass {
+       GtkPopoverClass parent_class;
+};
+
+struct _ContactsAvatarSelectorPrivate {
+       GnomeDesktopThumbnailFactory* thumbnail_factory;
+       FolksIndividual* individual;
+       GtkFlowBox* personas_thumbnail_grid;
+       GtkFlowBox* stock_thumbnail_grid;
+       GtkButton* cheese_button;
+       gint num_cameras;
+       CheeseCameraDeviceMonitor* camera_monitor;
+};
+
+struct _Block8Data {
+       int _ref_count_;
+       ContactsAvatarSelector* self;
+       GdkPixbuf* source_pixbuf;
+};
+
+struct _Block9Data {
+       int _ref_count_;
+       ContactsAvatarSelector* self;
+       GtkFileChooserNative* chooser;
+};
+
+static gint ContactsAvatarSelector_private_offset;
+static gpointer contacts_avatar_selector_parent_class = NULL;
+
+GType contacts_avatar_selector_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatarSelector, g_object_unref)
+#define CONTACTS_AVATAR_SELECTOR_ICONS_SIZE 64
+#define CONTACTS_AVATAR_SELECTOR_MAIN_SIZE 128
+#define CONTACTS_AVATAR_SELECTOR_AVATAR_BUTTON_CSS_NAME "avatar-button"
+ContactsAvatarSelector* contacts_avatar_selector_new (GtkWidget* relative,
+                                                      FolksIndividual* individual);
+ContactsAvatarSelector* contacts_avatar_selector_construct (GType object_type,
+                                                            GtkWidget* relative,
+                                                            FolksIndividual* individual);
+static void contacts_avatar_selector_update_thumbnail_grids (ContactsAvatarSelector* self);
+static void __lambda15_ (ContactsAvatarSelector* self);
+static void ___lambda15__cheese_camera_device_monitor_added (CheeseCameraDeviceMonitor* _sender,
+                                                      CheeseCameraDevice* device,
+                                                      gpointer self);
+static void __lambda16_ (ContactsAvatarSelector* self);
+static void ___lambda16__cheese_camera_device_monitor_removed (CheeseCameraDeviceMonitor* _sender,
+                                                        const gchar* uuid,
+                                                        gpointer self);
+static void* __lambda17_ (ContactsAvatarSelector* self);
+static gpointer ___lambda17__gthread_func (gpointer self);
+static GdkPixbuf* contacts_avatar_selector_scale_pixbuf_for_avatar_use (ContactsAvatarSelector* self,
+                                                                 GdkPixbuf* pixbuf);
+static void contacts_avatar_selector_selected_pixbuf (ContactsAvatarSelector* self,
+                                               GdkPixbuf* pixbuf);
+static GtkFlowBoxChild* contacts_avatar_selector_create_thumbnail (ContactsAvatarSelector* self,
+                                                            GdkPixbuf* source_pixbuf);
+static Block8Data* block8_data_ref (Block8Data* _data8_);
+static void block8_data_unref (void * _userdata_);
+GType contacts_avatar_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatar, g_object_unref)
+ContactsAvatar* contacts_avatar_new (gint size,
+                                     FolksIndividual* individual);
+ContactsAvatar* contacts_avatar_construct (GType object_type,
+                                           gint size,
+                                           FolksIndividual* individual);
+void contacts_avatar_set_pixbuf (ContactsAvatar* self,
+                                 GdkPixbuf* a_pixbuf);
+static void __lambda14_ (Block8Data* _data8_);
+static void ___lambda14__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static GtkFlowBoxChild* contacts_avatar_selector_thumbnail_for_persona (ContactsAvatarSelector* self,
+                                                                 FolksPersona* persona);
+static GtkFlowBoxChild* contacts_avatar_selector_thumbnail_for_filename (ContactsAvatarSelector* self,
+                                                                  const gchar* filename);
+static void contacts_avatar_selector_on_cheese_clicked (ContactsAvatarSelector* self,
+                                                 GtkButton* button);
+GType contacts_crop_cheese_dialog_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsCropCheeseDialog, g_object_unref)
+GType contacts_window_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsWindow, g_object_unref)
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_new_for_cheese (GtkWindow* parent);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_construct_for_cheese (GType object_type,
+                                                                            GtkWindow* parent);
+static void __lambda19_ (ContactsAvatarSelector* self,
+                  GdkPixbuf* pix);
+static void ___lambda19__contacts_crop_cheese_dialog_picture_selected (ContactsCropCheeseDialog* _sender,
+                                                                GdkPixbuf* buf,
+                                                                gpointer self);
+static void _contacts_avatar_selector_on_cheese_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                     gpointer self);
+static void contacts_avatar_selector_on_file_clicked (ContactsAvatarSelector* self,
+                                               GtkButton* button);
+static Block9Data* block9_data_ref (Block9Data* _data9_);
+static void block9_data_unref (void * _userdata_);
+static void contacts_avatar_selector_update_preview (ContactsAvatarSelector* self,
+                                              GtkFileChooser* chooser);
+static void _contacts_avatar_selector_update_preview_gtk_file_chooser_update_preview (GtkFileChooser* 
_sender,
+                                                                               gpointer self);
+static void __lambda20_ (Block9Data* _data9_,
+                  gint response);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_new_for_crop (GtkWindow* parent,
+                                                                    GdkPixbuf* pixbuf);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_construct_for_crop (GType object_type,
+                                                                          GtkWindow* parent,
+                                                                          GdkPixbuf* pixbuf);
+static void ____lambda21_ (ContactsAvatarSelector* self,
+                    GdkPixbuf* pix);
+static void _____lambda21__contacts_crop_cheese_dialog_picture_selected (ContactsCropCheeseDialog* _sender,
+                                                                  GdkPixbuf* buf,
+                                                                  gpointer self);
+static void ___lambda20__gtk_native_dialog_response (GtkNativeDialog* _sender,
+                                              gint response_id,
+                                              gpointer self);
+static void _contacts_avatar_selector_on_file_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                   gpointer self);
+static void contacts_avatar_selector_finalize (GObject * obj);
+static GType contacts_avatar_selector_get_type_once (void);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+static inline gpointer
+contacts_avatar_selector_get_instance_private (ContactsAvatarSelector* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsAvatarSelector_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 59 "../src/contacts-avatar-selector.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 238 "contacts-avatar-selector.c"
+}
+
+static void
+__lambda15_ (ContactsAvatarSelector* self)
+{
+       gint _tmp0_;
+       GtkButton* _tmp1_;
+#line 70 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = self->priv->num_cameras;
+#line 70 "../src/contacts-avatar-selector.vala"
+       self->priv->num_cameras = _tmp0_ + 1;
+#line 71 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = self->priv->cheese_button;
+#line 71 "../src/contacts-avatar-selector.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp1_, self->priv->num_cameras > 0);
+#line 254 "contacts-avatar-selector.c"
+}
+
+static void
+___lambda15__cheese_camera_device_monitor_added (CheeseCameraDeviceMonitor* _sender,
+                                                 CheeseCameraDevice* device,
+                                                 gpointer self)
+{
+#line 69 "../src/contacts-avatar-selector.vala"
+       __lambda15_ ((ContactsAvatarSelector*) self);
+#line 264 "contacts-avatar-selector.c"
+}
+
+static void
+__lambda16_ (ContactsAvatarSelector* self)
+{
+       gint _tmp0_;
+       GtkButton* _tmp1_;
+#line 74 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = self->priv->num_cameras;
+#line 74 "../src/contacts-avatar-selector.vala"
+       self->priv->num_cameras = _tmp0_ - 1;
+#line 75 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = self->priv->cheese_button;
+#line 75 "../src/contacts-avatar-selector.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp1_, self->priv->num_cameras > 0);
+#line 280 "contacts-avatar-selector.c"
+}
+
+static void
+___lambda16__cheese_camera_device_monitor_removed (CheeseCameraDeviceMonitor* _sender,
+                                                   const gchar* uuid,
+                                                   gpointer self)
+{
+#line 73 "../src/contacts-avatar-selector.vala"
+       __lambda16_ ((ContactsAvatarSelector*) self);
+#line 290 "contacts-avatar-selector.c"
+}
+
+static void*
+__lambda17_ (ContactsAvatarSelector* self)
+{
+       CheeseCameraDeviceMonitor* _tmp0_;
+       void* result = NULL;
+#line 79 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = self->priv->camera_monitor;
+#line 79 "../src/contacts-avatar-selector.vala"
+       cheese_camera_device_monitor_coldplug (_tmp0_);
+#line 80 "../src/contacts-avatar-selector.vala"
+       result = NULL;
+#line 80 "../src/contacts-avatar-selector.vala"
+       return result;
+#line 306 "contacts-avatar-selector.c"
+}
+
+static gpointer
+___lambda17__gthread_func (gpointer self)
+{
+       gpointer result;
+       result = __lambda17_ ((ContactsAvatarSelector*) self);
+#line 78 "../src/contacts-avatar-selector.vala"
+       g_object_unref (self);
+#line 78 "../src/contacts-avatar-selector.vala"
+       return result;
+#line 318 "contacts-avatar-selector.c"
+}
+
+ContactsAvatarSelector*
+contacts_avatar_selector_construct (GType object_type,
+                                    GtkWidget* relative,
+                                    FolksIndividual* individual)
+{
+       ContactsAvatarSelector * self = NULL;
+       GnomeDesktopThumbnailFactory* _tmp0_;
+       FolksIndividual* _tmp1_;
+       GtkButton* _tmp2_;
+       GtkButton* _tmp3_;
+       CheeseCameraDeviceMonitor* _tmp4_;
+       CheeseCameraDeviceMonitor* _tmp5_;
+       CheeseCameraDeviceMonitor* _tmp6_;
+       GThread* _tmp7_;
+       GThread* _tmp8_;
+#line 56 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (relative != NULL, NULL);
+#line 56 "../src/contacts-avatar-selector.vala"
+       self = (ContactsAvatarSelector*) g_object_new (object_type, NULL);
+#line 57 "../src/contacts-avatar-selector.vala"
+       gtk_popover_set_relative_to ((GtkPopover*) self, relative);
+#line 58 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
+#line 58 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->thumbnail_factory);
+#line 58 "../src/contacts-avatar-selector.vala"
+       self->priv->thumbnail_factory = _tmp0_;
+#line 59 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = _g_object_ref0 (individual);
+#line 59 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->individual);
+#line 59 "../src/contacts-avatar-selector.vala"
+       self->priv->individual = _tmp1_;
+#line 61 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_update_thumbnail_grids (self);
+#line 64 "../src/contacts-avatar-selector.vala"
+       _tmp2_ = self->priv->cheese_button;
+#line 64 "../src/contacts-avatar-selector.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp2_, TRUE);
+#line 65 "../src/contacts-avatar-selector.vala"
+       _tmp3_ = self->priv->cheese_button;
+#line 65 "../src/contacts-avatar-selector.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp3_, FALSE);
+#line 68 "../src/contacts-avatar-selector.vala"
+       _tmp4_ = (CheeseCameraDeviceMonitor*) cheese_camera_device_monitor_new ();
+#line 68 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->camera_monitor);
+#line 68 "../src/contacts-avatar-selector.vala"
+       self->priv->camera_monitor = _tmp4_;
+#line 69 "../src/contacts-avatar-selector.vala"
+       _tmp5_ = self->priv->camera_monitor;
+#line 69 "../src/contacts-avatar-selector.vala"
+       g_signal_connect_object (_tmp5_, "added", (GCallback) 
___lambda15__cheese_camera_device_monitor_added, self, 0);
+#line 73 "../src/contacts-avatar-selector.vala"
+       _tmp6_ = self->priv->camera_monitor;
+#line 73 "../src/contacts-avatar-selector.vala"
+       g_signal_connect_object (_tmp6_, "removed", (GCallback) 
___lambda16__cheese_camera_device_monitor_removed, self, 0);
+#line 78 "../src/contacts-avatar-selector.vala"
+       _tmp7_ = g_thread_new ("camera-loader", ___lambda17__gthread_func, g_object_ref (self));
+#line 78 "../src/contacts-avatar-selector.vala"
+       _tmp8_ = _tmp7_;
+#line 78 "../src/contacts-avatar-selector.vala"
+       _g_thread_unref0 (_tmp8_);
+#line 56 "../src/contacts-avatar-selector.vala"
+       return self;
+#line 386 "contacts-avatar-selector.c"
+}
+
+ContactsAvatarSelector*
+contacts_avatar_selector_new (GtkWidget* relative,
+                              FolksIndividual* individual)
+{
+#line 56 "../src/contacts-avatar-selector.vala"
+       return contacts_avatar_selector_construct (CONTACTS_TYPE_AVATAR_SELECTOR, relative, individual);
+#line 395 "contacts-avatar-selector.c"
+}
+
+static GdkPixbuf*
+contacts_avatar_selector_scale_pixbuf_for_avatar_use (ContactsAvatarSelector* self,
+                                                      GdkPixbuf* pixbuf)
+{
+       gint w = 0;
+       gint h = 0;
+       gboolean _tmp0_ = FALSE;
+       GdkPixbuf* _tmp2_;
+       GdkPixbuf* result = NULL;
+#line 85 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 85 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (pixbuf != NULL, NULL);
+#line 86 "../src/contacts-avatar-selector.vala"
+       w = gdk_pixbuf_get_width (pixbuf);
+#line 87 "../src/contacts-avatar-selector.vala"
+       h = gdk_pixbuf_get_height (pixbuf);
+#line 89 "../src/contacts-avatar-selector.vala"
+       if (w <= CONTACTS_AVATAR_SELECTOR_MAIN_SIZE) {
+#line 89 "../src/contacts-avatar-selector.vala"
+               _tmp0_ = h <= CONTACTS_AVATAR_SELECTOR_MAIN_SIZE;
+#line 419 "contacts-avatar-selector.c"
+       } else {
+#line 89 "../src/contacts-avatar-selector.vala"
+               _tmp0_ = FALSE;
+#line 423 "contacts-avatar-selector.c"
+       }
+#line 89 "../src/contacts-avatar-selector.vala"
+       if (_tmp0_) {
+#line 427 "contacts-avatar-selector.c"
+               GdkPixbuf* _tmp1_;
+#line 90 "../src/contacts-avatar-selector.vala"
+               _tmp1_ = _g_object_ref0 (pixbuf);
+#line 90 "../src/contacts-avatar-selector.vala"
+               result = _tmp1_;
+#line 90 "../src/contacts-avatar-selector.vala"
+               return result;
+#line 435 "contacts-avatar-selector.c"
+       }
+#line 92 "../src/contacts-avatar-selector.vala"
+       if (w > h) {
+#line 93 "../src/contacts-avatar-selector.vala"
+               h = (gint) round ((gdouble) ((h * ((gfloat) CONTACTS_AVATAR_SELECTOR_MAIN_SIZE)) / w));
+#line 94 "../src/contacts-avatar-selector.vala"
+               w = CONTACTS_AVATAR_SELECTOR_MAIN_SIZE;
+#line 443 "contacts-avatar-selector.c"
+       } else {
+#line 96 "../src/contacts-avatar-selector.vala"
+               w = (gint) round ((gdouble) ((w * ((gfloat) CONTACTS_AVATAR_SELECTOR_MAIN_SIZE)) / h));
+#line 97 "../src/contacts-avatar-selector.vala"
+               h = CONTACTS_AVATAR_SELECTOR_MAIN_SIZE;
+#line 449 "contacts-avatar-selector.c"
+       }
+#line 100 "../src/contacts-avatar-selector.vala"
+       _tmp2_ = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_HYPER);
+#line 100 "../src/contacts-avatar-selector.vala"
+       result = _tmp2_;
+#line 100 "../src/contacts-avatar-selector.vala"
+       return result;
+#line 457 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_selected_pixbuf (ContactsAvatarSelector* self,
+                                          GdkPixbuf* pixbuf)
+{
+       GError* _inner_error0_ = NULL;
+#line 103 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (self != NULL);
+#line 103 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (pixbuf != NULL);
+#line 469 "contacts-avatar-selector.c"
+       {
+               guint8* buffer = NULL;
+               gint buffer_length1 = 0;
+               gint _buffer_size_ = 0;
+               guint8* _tmp0_ = NULL;
+               gsize _tmp1_ = 0;
+               GBytesIcon* icon = NULL;
+               GBytes* _tmp2_;
+               GBytes* _tmp3_;
+               GBytesIcon* _tmp4_;
+               GBytesIcon* _tmp5_;
+               GBytesIcon* _tmp6_;
+#line 106 "../src/contacts-avatar-selector.vala"
+               gdk_pixbuf_save_to_buffer (pixbuf, &_tmp0_, &_tmp1_, "png", &_inner_error0_, NULL, NULL);
+#line 106 "../src/contacts-avatar-selector.vala"
+               buffer = (g_free (buffer), NULL);
+#line 106 "../src/contacts-avatar-selector.vala"
+               buffer = _tmp0_;
+#line 106 "../src/contacts-avatar-selector.vala"
+               buffer_length1 = _tmp1_;
+#line 106 "../src/contacts-avatar-selector.vala"
+               _buffer_size_ = buffer_length1;
+#line 106 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 106 "../src/contacts-avatar-selector.vala"
+                       buffer = (g_free (buffer), NULL);
+#line 496 "contacts-avatar-selector.c"
+                       goto __catch4_g_error;
+               }
+#line 107 "../src/contacts-avatar-selector.vala"
+               _tmp2_ = g_bytes_new (buffer, buffer_length1);
+#line 107 "../src/contacts-avatar-selector.vala"
+               _tmp3_ = _tmp2_;
+#line 107 "../src/contacts-avatar-selector.vala"
+               _tmp4_ = (GBytesIcon*) g_bytes_icon_new (_tmp3_);
+#line 107 "../src/contacts-avatar-selector.vala"
+               _tmp5_ = _tmp4_;
+#line 107 "../src/contacts-avatar-selector.vala"
+               _g_bytes_unref0 (_tmp3_);
+#line 107 "../src/contacts-avatar-selector.vala"
+               icon = _tmp5_;
+#line 108 "../src/contacts-avatar-selector.vala"
+               _tmp6_ = icon;
+#line 108 "../src/contacts-avatar-selector.vala"
+               g_signal_emit (self, 
contacts_avatar_selector_signals[CONTACTS_AVATAR_SELECTOR_SET_AVATAR_SIGNAL], 0, (GIcon*) _tmp6_);
+#line 104 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (icon);
+#line 104 "../src/contacts-avatar-selector.vala"
+               buffer = (g_free (buffer), NULL);
+#line 519 "contacts-avatar-selector.c"
+       }
+       goto __finally4;
+       __catch4_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp7_;
+               const gchar* _tmp8_;
+               GtkWidget* _tmp9_;
+#line 104 "../src/contacts-avatar-selector.vala"
+               e = _inner_error0_;
+#line 104 "../src/contacts-avatar-selector.vala"
+               _inner_error0_ = NULL;
+#line 110 "../src/contacts-avatar-selector.vala"
+               _tmp7_ = e;
+#line 110 "../src/contacts-avatar-selector.vala"
+               _tmp8_ = _tmp7_->message;
+#line 110 "../src/contacts-avatar-selector.vala"
+               g_warning ("contacts-avatar-selector.vala:110: Failed to set avatar: %s", _tmp8_);
+#line 111 "../src/contacts-avatar-selector.vala"
+               _tmp9_ = gtk_widget_get_toplevel ((GtkWidget*) self);
+#line 111 "../src/contacts-avatar-selector.vala"
+               contacts_utils_show_error_dialog (_ ("Failed to set avatar."), G_TYPE_CHECK_INSTANCE_TYPE 
(_tmp9_, gtk_window_get_type ()) ? ((GtkWindow*) _tmp9_) : NULL);
+#line 104 "../src/contacts-avatar-selector.vala"
+               _g_error_free0 (e);
+#line 544 "contacts-avatar-selector.c"
+       }
+       __finally4:
+#line 104 "../src/contacts-avatar-selector.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 104 "../src/contacts-avatar-selector.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 104 "../src/contacts-avatar-selector.vala"
+               g_clear_error (&_inner_error0_);
+#line 104 "../src/contacts-avatar-selector.vala"
+               return;
+#line 555 "contacts-avatar-selector.c"
+       }
+}
+
+static Block8Data*
+block8_data_ref (Block8Data* _data8_)
+{
+#line 116 "../src/contacts-avatar-selector.vala"
+       g_atomic_int_inc (&_data8_->_ref_count_);
+#line 116 "../src/contacts-avatar-selector.vala"
+       return _data8_;
+#line 566 "contacts-avatar-selector.c"
+}
+
+static void
+block8_data_unref (void * _userdata_)
+{
+       Block8Data* _data8_;
+       _data8_ = (Block8Data*) _userdata_;
+#line 116 "../src/contacts-avatar-selector.vala"
+       if (g_atomic_int_dec_and_test (&_data8_->_ref_count_)) {
+#line 576 "contacts-avatar-selector.c"
+               ContactsAvatarSelector* self;
+#line 116 "../src/contacts-avatar-selector.vala"
+               self = _data8_->self;
+#line 116 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (_data8_->source_pixbuf);
+#line 116 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (self);
+#line 116 "../src/contacts-avatar-selector.vala"
+               g_slice_free (Block8Data, _data8_);
+#line 586 "contacts-avatar-selector.c"
+       }
+}
+
+static void
+__lambda14_ (Block8Data* _data8_)
+{
+       ContactsAvatarSelector* self;
+       GdkPixbuf* _tmp0_;
+       GdkPixbuf* _tmp1_;
+#line 124 "../src/contacts-avatar-selector.vala"
+       self = _data8_->self;
+#line 125 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = contacts_avatar_selector_scale_pixbuf_for_avatar_use (self, _data8_->source_pixbuf);
+#line 125 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = _tmp0_;
+#line 125 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_selected_pixbuf (self, _tmp1_);
+#line 125 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (_tmp1_);
+#line 126 "../src/contacts-avatar-selector.vala"
+       gtk_popover_popdown ((GtkPopover*) self);
+#line 608 "contacts-avatar-selector.c"
+}
+
+static void
+___lambda14__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 124 "../src/contacts-avatar-selector.vala"
+       __lambda14_ (self);
+#line 617 "contacts-avatar-selector.c"
+}
+
+static GtkFlowBoxChild*
+contacts_avatar_selector_create_thumbnail (ContactsAvatarSelector* self,
+                                           GdkPixbuf* source_pixbuf)
+{
+       Block8Data* _data8_;
+       GdkPixbuf* _tmp0_;
+       ContactsAvatar* avatar = NULL;
+       ContactsAvatar* _tmp1_;
+       GdkPixbuf* pixbuf = NULL;
+       GdkPixbuf* _tmp2_;
+       GtkButton* button = NULL;
+       GtkButton* _tmp3_;
+       GtkStyleContext* _tmp4_;
+       GtkFlowBoxChild* child = NULL;
+       GtkFlowBoxChild* _tmp5_;
+       GtkFlowBoxChild* result = NULL;
+#line 116 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 116 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (source_pixbuf != NULL, NULL);
+#line 116 "../src/contacts-avatar-selector.vala"
+       _data8_ = g_slice_new0 (Block8Data);
+#line 116 "../src/contacts-avatar-selector.vala"
+       _data8_->_ref_count_ = 1;
+#line 116 "../src/contacts-avatar-selector.vala"
+       _data8_->self = g_object_ref (self);
+#line 116 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = _g_object_ref0 (source_pixbuf);
+#line 116 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (_data8_->source_pixbuf);
+#line 116 "../src/contacts-avatar-selector.vala"
+       _data8_->source_pixbuf = _tmp0_;
+#line 117 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = contacts_avatar_new (CONTACTS_AVATAR_SELECTOR_ICONS_SIZE, NULL);
+#line 117 "../src/contacts-avatar-selector.vala"
+       g_object_ref_sink (_tmp1_);
+#line 117 "../src/contacts-avatar-selector.vala"
+       avatar = _tmp1_;
+#line 118 "../src/contacts-avatar-selector.vala"
+       _tmp2_ = gdk_pixbuf_scale_simple (_data8_->source_pixbuf, CONTACTS_AVATAR_SELECTOR_ICONS_SIZE, 
CONTACTS_AVATAR_SELECTOR_ICONS_SIZE, GDK_INTERP_HYPER);
+#line 118 "../src/contacts-avatar-selector.vala"
+       pixbuf = _tmp2_;
+#line 119 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_set_pixbuf (avatar, pixbuf);
+#line 121 "../src/contacts-avatar-selector.vala"
+       _tmp3_ = (GtkButton*) gtk_button_new ();
+#line 121 "../src/contacts-avatar-selector.vala"
+       g_object_ref_sink (_tmp3_);
+#line 121 "../src/contacts-avatar-selector.vala"
+       button = _tmp3_;
+#line 122 "../src/contacts-avatar-selector.vala"
+       _tmp4_ = gtk_widget_get_style_context ((GtkWidget*) button);
+#line 122 "../src/contacts-avatar-selector.vala"
+       gtk_style_context_add_class (_tmp4_, CONTACTS_AVATAR_SELECTOR_AVATAR_BUTTON_CSS_NAME);
+#line 123 "../src/contacts-avatar-selector.vala"
+       gtk_button_set_image (button, (GtkWidget*) avatar);
+#line 124 "../src/contacts-avatar-selector.vala"
+       g_signal_connect_data (button, "clicked", (GCallback) ___lambda14__gtk_button_clicked, 
block8_data_ref (_data8_), (GClosureNotify) block8_data_unref, 0);
+#line 128 "../src/contacts-avatar-selector.vala"
+       _tmp5_ = (GtkFlowBoxChild*) gtk_flow_box_child_new ();
+#line 128 "../src/contacts-avatar-selector.vala"
+       g_object_ref_sink (_tmp5_);
+#line 128 "../src/contacts-avatar-selector.vala"
+       child = _tmp5_;
+#line 129 "../src/contacts-avatar-selector.vala"
+       gtk_container_add ((GtkContainer*) child, (GtkWidget*) button);
+#line 130 "../src/contacts-avatar-selector.vala"
+       gtk_widget_set_halign ((GtkWidget*) child, GTK_ALIGN_START);
+#line 132 "../src/contacts-avatar-selector.vala"
+       result = child;
+#line 132 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (button);
+#line 132 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (pixbuf);
+#line 132 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (avatar);
+#line 132 "../src/contacts-avatar-selector.vala"
+       block8_data_unref (_data8_);
+#line 132 "../src/contacts-avatar-selector.vala"
+       _data8_ = NULL;
+#line 132 "../src/contacts-avatar-selector.vala"
+       return result;
+#line 702 "contacts-avatar-selector.c"
+}
+
+static GtkFlowBoxChild*
+contacts_avatar_selector_thumbnail_for_persona (ContactsAvatarSelector* self,
+                                                FolksPersona* persona)
+{
+       FolksAvatarDetails* details = NULL;
+       FolksAvatarDetails* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       FolksAvatarDetails* _tmp2_;
+       GError* _inner_error0_ = NULL;
+       GtkFlowBoxChild* result = NULL;
+#line 135 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 135 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (persona != NULL, NULL);
+#line 136 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_AVATAR_DETAILS) ? 
((FolksAvatarDetails*) persona) : NULL);
+#line 136 "../src/contacts-avatar-selector.vala"
+       details = _tmp0_;
+#line 137 "../src/contacts-avatar-selector.vala"
+       _tmp2_ = details;
+#line 137 "../src/contacts-avatar-selector.vala"
+       if (_tmp2_ == NULL) {
+#line 137 "../src/contacts-avatar-selector.vala"
+               _tmp1_ = TRUE;
+#line 729 "contacts-avatar-selector.c"
+       } else {
+               FolksAvatarDetails* _tmp3_;
+               GLoadableIcon* _tmp4_;
+               GLoadableIcon* _tmp5_;
+#line 137 "../src/contacts-avatar-selector.vala"
+               _tmp3_ = details;
+#line 137 "../src/contacts-avatar-selector.vala"
+               _tmp4_ = folks_avatar_details_get_avatar (_tmp3_);
+#line 137 "../src/contacts-avatar-selector.vala"
+               _tmp5_ = _tmp4_;
+#line 137 "../src/contacts-avatar-selector.vala"
+               _tmp1_ = _tmp5_ == NULL;
+#line 742 "contacts-avatar-selector.c"
+       }
+#line 137 "../src/contacts-avatar-selector.vala"
+       if (_tmp1_) {
+#line 138 "../src/contacts-avatar-selector.vala"
+               result = NULL;
+#line 138 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (details);
+#line 138 "../src/contacts-avatar-selector.vala"
+               return result;
+#line 752 "contacts-avatar-selector.c"
+       }
+       {
+               GInputStream* stream = NULL;
+               FolksAvatarDetails* _tmp6_;
+               GLoadableIcon* _tmp7_;
+               GLoadableIcon* _tmp8_;
+               GInputStream* _tmp9_;
+               GdkPixbuf* _tmp10_ = NULL;
+               GInputStream* _tmp11_;
+               GdkPixbuf* _tmp12_;
+               GtkFlowBoxChild* _tmp13_;
+#line 141 "../src/contacts-avatar-selector.vala"
+               _tmp6_ = details;
+#line 141 "../src/contacts-avatar-selector.vala"
+               _tmp7_ = folks_avatar_details_get_avatar (_tmp6_);
+#line 141 "../src/contacts-avatar-selector.vala"
+               _tmp8_ = _tmp7_;
+#line 141 "../src/contacts-avatar-selector.vala"
+               _tmp9_ = g_loadable_icon_load (_tmp8_, CONTACTS_AVATAR_SELECTOR_MAIN_SIZE, NULL, NULL, 
&_inner_error0_);
+#line 141 "../src/contacts-avatar-selector.vala"
+               stream = _tmp9_;
+#line 141 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 776 "contacts-avatar-selector.c"
+                       goto __catch5_g_error;
+               }
+#line 142 "../src/contacts-avatar-selector.vala"
+               _tmp11_ = stream;
+#line 142 "../src/contacts-avatar-selector.vala"
+               _tmp12_ = gdk_pixbuf_new_from_stream (_tmp11_, NULL, &_inner_error0_);
+#line 142 "../src/contacts-avatar-selector.vala"
+               _tmp10_ = _tmp12_;
+#line 142 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 142 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (stream);
+#line 789 "contacts-avatar-selector.c"
+                       goto __catch5_g_error;
+               }
+#line 142 "../src/contacts-avatar-selector.vala"
+               _tmp13_ = contacts_avatar_selector_create_thumbnail (self, _tmp10_);
+#line 142 "../src/contacts-avatar-selector.vala"
+               result = _tmp13_;
+#line 142 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (_tmp10_);
+#line 142 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (stream);
+#line 142 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (details);
+#line 142 "../src/contacts-avatar-selector.vala"
+               return result;
+#line 804 "contacts-avatar-selector.c"
+       }
+       goto __finally5;
+       __catch5_g_error:
+       {
+               const gchar* _tmp14_;
+               const gchar* _tmp15_;
+#line 140 "../src/contacts-avatar-selector.vala"
+               g_clear_error (&_inner_error0_);
+#line 140 "../src/contacts-avatar-selector.vala"
+               _inner_error0_ = NULL;
+#line 144 "../src/contacts-avatar-selector.vala"
+               _tmp14_ = folks_persona_get_display_id (persona);
+#line 144 "../src/contacts-avatar-selector.vala"
+               _tmp15_ = _tmp14_;
+#line 144 "../src/contacts-avatar-selector.vala"
+               g_debug ("contacts-avatar-selector.vala:144: Couldn't create frame for persona \"" \
+"%s\".", _tmp15_);
+#line 821 "contacts-avatar-selector.c"
+       }
+       __finally5:
+#line 140 "../src/contacts-avatar-selector.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 140 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (details);
+#line 140 "../src/contacts-avatar-selector.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 140 "../src/contacts-avatar-selector.vala"
+               g_clear_error (&_inner_error0_);
+#line 140 "../src/contacts-avatar-selector.vala"
+               return NULL;
+#line 834 "contacts-avatar-selector.c"
+       }
+#line 147 "../src/contacts-avatar-selector.vala"
+       result = NULL;
+#line 147 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (details);
+#line 147 "../src/contacts-avatar-selector.vala"
+       return result;
+#line 842 "contacts-avatar-selector.c"
+}
+
+static GtkFlowBoxChild*
+contacts_avatar_selector_thumbnail_for_filename (ContactsAvatarSelector* self,
+                                                 const gchar* filename)
+{
+       GError* _inner_error0_ = NULL;
+       GtkFlowBoxChild* result = NULL;
+#line 150 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 150 "../src/contacts-avatar-selector.vala"
+       g_return_val_if_fail (filename != NULL, NULL);
+#line 855 "contacts-avatar-selector.c"
+       {
+               GdkPixbuf* _tmp0_ = NULL;
+               GdkPixbuf* _tmp1_;
+               GtkFlowBoxChild* _tmp2_;
+#line 152 "../src/contacts-avatar-selector.vala"
+               _tmp1_ = gdk_pixbuf_new_from_file (filename, &_inner_error0_);
+#line 152 "../src/contacts-avatar-selector.vala"
+               _tmp0_ = _tmp1_;
+#line 152 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 866 "contacts-avatar-selector.c"
+                       goto __catch6_g_error;
+               }
+#line 152 "../src/contacts-avatar-selector.vala"
+               _tmp2_ = contacts_avatar_selector_create_thumbnail (self, _tmp0_);
+#line 152 "../src/contacts-avatar-selector.vala"
+               result = _tmp2_;
+#line 152 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (_tmp0_);
+#line 152 "../src/contacts-avatar-selector.vala"
+               return result;
+#line 877 "contacts-avatar-selector.c"
+       }
+       goto __finally6;
+       __catch6_g_error:
+       {
+#line 151 "../src/contacts-avatar-selector.vala"
+               g_clear_error (&_inner_error0_);
+#line 151 "../src/contacts-avatar-selector.vala"
+               _inner_error0_ = NULL;
+#line 154 "../src/contacts-avatar-selector.vala"
+               g_debug ("contacts-avatar-selector.vala:154: Couldn't create frame for file \"%s" \
+"\".", filename);
+#line 888 "contacts-avatar-selector.c"
+       }
+       __finally6:
+#line 151 "../src/contacts-avatar-selector.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 151 "../src/contacts-avatar-selector.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 151 "../src/contacts-avatar-selector.vala"
+               g_clear_error (&_inner_error0_);
+#line 151 "../src/contacts-avatar-selector.vala"
+               return NULL;
+#line 899 "contacts-avatar-selector.c"
+       }
+#line 157 "../src/contacts-avatar-selector.vala"
+       result = NULL;
+#line 157 "../src/contacts-avatar-selector.vala"
+       return result;
+#line 905 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_update_thumbnail_grids (ContactsAvatarSelector* self)
+{
+       FolksIndividual* _tmp0_;
+       GtkFlowBox* _tmp13_;
+       gchar** stock_files = NULL;
+       gint _tmp14_ = 0;
+       gchar** _tmp15_;
+       gint stock_files_length1;
+       gint _stock_files_size_;
+       gchar** _tmp16_;
+       gint _tmp16__length1;
+       GtkFlowBox* _tmp23_;
+#line 160 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (self != NULL);
+#line 161 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = self->priv->individual;
+#line 161 "../src/contacts-avatar-selector.vala"
+       if (_tmp0_ != NULL) {
+#line 927 "contacts-avatar-selector.c"
+               {
+                       GeeIterator* _p_it = NULL;
+                       FolksIndividual* _tmp1_;
+                       GeeSet* _tmp2_;
+                       GeeSet* _tmp3_;
+                       GeeIterator* _tmp4_;
+#line 162 "../src/contacts-avatar-selector.vala"
+                       _tmp1_ = self->priv->individual;
+#line 162 "../src/contacts-avatar-selector.vala"
+                       _tmp2_ = folks_individual_get_personas (_tmp1_);
+#line 162 "../src/contacts-avatar-selector.vala"
+                       _tmp3_ = _tmp2_;
+#line 162 "../src/contacts-avatar-selector.vala"
+                       _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 162 "../src/contacts-avatar-selector.vala"
+                       _p_it = _tmp4_;
+#line 162 "../src/contacts-avatar-selector.vala"
+                       while (TRUE) {
+#line 946 "contacts-avatar-selector.c"
+                               GeeIterator* _tmp5_;
+                               FolksPersona* p = NULL;
+                               GeeIterator* _tmp6_;
+                               gpointer _tmp7_;
+                               GtkFlowBoxChild* button = NULL;
+                               FolksPersona* _tmp8_;
+                               GtkFlowBoxChild* _tmp9_;
+                               GtkFlowBoxChild* _tmp10_;
+#line 162 "../src/contacts-avatar-selector.vala"
+                               _tmp5_ = _p_it;
+#line 162 "../src/contacts-avatar-selector.vala"
+                               if (!gee_iterator_next (_tmp5_)) {
+#line 162 "../src/contacts-avatar-selector.vala"
+                                       break;
+#line 961 "contacts-avatar-selector.c"
+                               }
+#line 162 "../src/contacts-avatar-selector.vala"
+                               _tmp6_ = _p_it;
+#line 162 "../src/contacts-avatar-selector.vala"
+                               _tmp7_ = gee_iterator_get (_tmp6_);
+#line 162 "../src/contacts-avatar-selector.vala"
+                               p = (FolksPersona*) _tmp7_;
+#line 163 "../src/contacts-avatar-selector.vala"
+                               _tmp8_ = p;
+#line 163 "../src/contacts-avatar-selector.vala"
+                               _tmp9_ = contacts_avatar_selector_thumbnail_for_persona (self, _tmp8_);
+#line 163 "../src/contacts-avatar-selector.vala"
+                               button = _tmp9_;
+#line 164 "../src/contacts-avatar-selector.vala"
+                               _tmp10_ = button;
+#line 164 "../src/contacts-avatar-selector.vala"
+                               if (_tmp10_ != NULL) {
+#line 979 "contacts-avatar-selector.c"
+                                       GtkFlowBox* _tmp11_;
+                                       GtkFlowBoxChild* _tmp12_;
+#line 165 "../src/contacts-avatar-selector.vala"
+                                       _tmp11_ = self->priv->personas_thumbnail_grid;
+#line 165 "../src/contacts-avatar-selector.vala"
+                                       _tmp12_ = button;
+#line 165 "../src/contacts-avatar-selector.vala"
+                                       gtk_container_add ((GtkContainer*) _tmp11_, (GtkWidget*) _tmp12_);
+#line 988 "contacts-avatar-selector.c"
+                               }
+#line 162 "../src/contacts-avatar-selector.vala"
+                               _g_object_unref0 (button);
+#line 162 "../src/contacts-avatar-selector.vala"
+                               _g_object_unref0 (p);
+#line 994 "contacts-avatar-selector.c"
+                       }
+#line 162 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (_p_it);
+#line 998 "contacts-avatar-selector.c"
+               }
+       }
+#line 168 "../src/contacts-avatar-selector.vala"
+       _tmp13_ = self->priv->personas_thumbnail_grid;
+#line 168 "../src/contacts-avatar-selector.vala"
+       gtk_widget_show_all ((GtkWidget*) _tmp13_);
+#line 170 "../src/contacts-avatar-selector.vala"
+       _tmp15_ = contacts_utils_get_stock_avatars (&_tmp14_);
+#line 170 "../src/contacts-avatar-selector.vala"
+       stock_files = _tmp15_;
+#line 170 "../src/contacts-avatar-selector.vala"
+       stock_files_length1 = _tmp14_;
+#line 170 "../src/contacts-avatar-selector.vala"
+       _stock_files_size_ = stock_files_length1;
+#line 171 "../src/contacts-avatar-selector.vala"
+       _tmp16_ = stock_files;
+#line 171 "../src/contacts-avatar-selector.vala"
+       _tmp16__length1 = stock_files_length1;
+#line 1017 "contacts-avatar-selector.c"
+       {
+               gchar** file_name_collection = NULL;
+               gint file_name_collection_length1 = 0;
+               gint _file_name_collection_size_ = 0;
+               gint file_name_it = 0;
+#line 171 "../src/contacts-avatar-selector.vala"
+               file_name_collection = _tmp16_;
+#line 171 "../src/contacts-avatar-selector.vala"
+               file_name_collection_length1 = _tmp16__length1;
+#line 171 "../src/contacts-avatar-selector.vala"
+               for (file_name_it = 0; file_name_it < file_name_collection_length1; file_name_it = 
file_name_it + 1) {
+#line 1029 "contacts-avatar-selector.c"
+                       gchar* _tmp17_;
+                       gchar* file_name = NULL;
+#line 171 "../src/contacts-avatar-selector.vala"
+                       _tmp17_ = g_strdup (file_name_collection[file_name_it]);
+#line 171 "../src/contacts-avatar-selector.vala"
+                       file_name = _tmp17_;
+#line 1036 "contacts-avatar-selector.c"
+                       {
+                               GtkFlowBoxChild* button = NULL;
+                               const gchar* _tmp18_;
+                               GtkFlowBoxChild* _tmp19_;
+                               GtkFlowBoxChild* _tmp20_;
+#line 172 "../src/contacts-avatar-selector.vala"
+                               _tmp18_ = file_name;
+#line 172 "../src/contacts-avatar-selector.vala"
+                               _tmp19_ = contacts_avatar_selector_thumbnail_for_filename (self, _tmp18_);
+#line 172 "../src/contacts-avatar-selector.vala"
+                               button = _tmp19_;
+#line 173 "../src/contacts-avatar-selector.vala"
+                               _tmp20_ = button;
+#line 173 "../src/contacts-avatar-selector.vala"
+                               if (_tmp20_ != NULL) {
+#line 1052 "contacts-avatar-selector.c"
+                                       GtkFlowBox* _tmp21_;
+                                       GtkFlowBoxChild* _tmp22_;
+#line 174 "../src/contacts-avatar-selector.vala"
+                                       _tmp21_ = self->priv->stock_thumbnail_grid;
+#line 174 "../src/contacts-avatar-selector.vala"
+                                       _tmp22_ = button;
+#line 174 "../src/contacts-avatar-selector.vala"
+                                       gtk_container_add ((GtkContainer*) _tmp21_, (GtkWidget*) _tmp22_);
+#line 1061 "contacts-avatar-selector.c"
+                               }
+#line 171 "../src/contacts-avatar-selector.vala"
+                               _g_object_unref0 (button);
+#line 171 "../src/contacts-avatar-selector.vala"
+                               _g_free0 (file_name);
+#line 1067 "contacts-avatar-selector.c"
+                       }
+               }
+       }
+#line 176 "../src/contacts-avatar-selector.vala"
+       _tmp23_ = self->priv->stock_thumbnail_grid;
+#line 176 "../src/contacts-avatar-selector.vala"
+       gtk_widget_show_all ((GtkWidget*) _tmp23_);
+#line 160 "../src/contacts-avatar-selector.vala"
+       stock_files = (_vala_array_free (stock_files, stock_files_length1, (GDestroyNotify) g_free), NULL);
+#line 1077 "contacts-avatar-selector.c"
+}
+
+static void
+__lambda19_ (ContactsAvatarSelector* self,
+             GdkPixbuf* pix)
+{
+       GdkPixbuf* _tmp0_;
+       GdkPixbuf* _tmp1_;
+#line 183 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (pix != NULL);
+#line 184 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = contacts_avatar_selector_scale_pixbuf_for_avatar_use (self, pix);
+#line 184 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = _tmp0_;
+#line 184 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_selected_pixbuf (self, _tmp1_);
+#line 184 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (_tmp1_);
+#line 1096 "contacts-avatar-selector.c"
+}
+
+static void
+___lambda19__contacts_crop_cheese_dialog_picture_selected (ContactsCropCheeseDialog* _sender,
+                                                           GdkPixbuf* buf,
+                                                           gpointer self)
+{
+#line 183 "../src/contacts-avatar-selector.vala"
+       __lambda19_ ((ContactsAvatarSelector*) self, buf);
+#line 1106 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_on_cheese_clicked (ContactsAvatarSelector* self,
+                                            GtkButton* button)
+{
+       ContactsCropCheeseDialog* dialog = NULL;
+       GtkWidget* _tmp0_;
+       ContactsCropCheeseDialog* _tmp1_;
+#line 180 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (self != NULL);
+#line 180 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (button != NULL);
+#line 181 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = gtk_widget_get_toplevel ((GtkWidget*) self);
+#line 181 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = contacts_crop_cheese_dialog_new_for_cheese ((GtkWindow*) G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, 
CONTACTS_TYPE_WINDOW, ContactsWindow));
+#line 181 "../src/contacts-avatar-selector.vala"
+       g_object_ref_sink (_tmp1_);
+#line 181 "../src/contacts-avatar-selector.vala"
+       dialog = _tmp1_;
+#line 182 "../src/contacts-avatar-selector.vala"
+       gtk_widget_show_all ((GtkWidget*) dialog);
+#line 183 "../src/contacts-avatar-selector.vala"
+       g_signal_connect_object (dialog, "picture-selected", (GCallback) 
___lambda19__contacts_crop_cheese_dialog_picture_selected, self, 0);
+#line 186 "../src/contacts-avatar-selector.vala"
+       gtk_popover_popdown ((GtkPopover*) self);
+#line 180 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (dialog);
+#line 1136 "contacts-avatar-selector.c"
+}
+
+static void
+_contacts_avatar_selector_on_cheese_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                gpointer self)
+{
+#line 30 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_on_cheese_clicked ((ContactsAvatarSelector*) self, _sender);
+#line 1145 "contacts-avatar-selector.c"
+}
+
+static Block9Data*
+block9_data_ref (Block9Data* _data9_)
+{
+#line 190 "../src/contacts-avatar-selector.vala"
+       g_atomic_int_inc (&_data9_->_ref_count_);
+#line 190 "../src/contacts-avatar-selector.vala"
+       return _data9_;
+#line 1155 "contacts-avatar-selector.c"
+}
+
+static void
+block9_data_unref (void * _userdata_)
+{
+       Block9Data* _data9_;
+       _data9_ = (Block9Data*) _userdata_;
+#line 190 "../src/contacts-avatar-selector.vala"
+       if (g_atomic_int_dec_and_test (&_data9_->_ref_count_)) {
+#line 1165 "contacts-avatar-selector.c"
+               ContactsAvatarSelector* self;
+#line 190 "../src/contacts-avatar-selector.vala"
+               self = _data9_->self;
+#line 190 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (_data9_->chooser);
+#line 190 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (self);
+#line 190 "../src/contacts-avatar-selector.vala"
+               g_slice_free (Block9Data, _data9_);
+#line 1175 "contacts-avatar-selector.c"
+       }
+}
+
+static void
+_contacts_avatar_selector_update_preview_gtk_file_chooser_update_preview (GtkFileChooser* _sender,
+                                                                          gpointer self)
+{
+#line 203 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_update_preview ((ContactsAvatarSelector*) self, _sender);
+#line 1185 "contacts-avatar-selector.c"
+}
+
+static void
+____lambda21_ (ContactsAvatarSelector* self,
+               GdkPixbuf* pix)
+{
+       GdkPixbuf* _tmp0_;
+       GdkPixbuf* _tmp1_;
+#line 222 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (pix != NULL);
+#line 223 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = contacts_avatar_selector_scale_pixbuf_for_avatar_use (self, pix);
+#line 223 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = _tmp0_;
+#line 223 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_selected_pixbuf (self, _tmp1_);
+#line 223 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (_tmp1_);
+#line 1204 "contacts-avatar-selector.c"
+}
+
+static void
+_____lambda21__contacts_crop_cheese_dialog_picture_selected (ContactsCropCheeseDialog* _sender,
+                                                             GdkPixbuf* buf,
+                                                             gpointer self)
+{
+#line 222 "../src/contacts-avatar-selector.vala"
+       ____lambda21_ ((ContactsAvatarSelector*) self, buf);
+#line 1214 "contacts-avatar-selector.c"
+}
+
+static void
+__lambda20_ (Block9Data* _data9_,
+             gint response)
+{
+       ContactsAvatarSelector* self;
+       GtkFileChooserNative* _tmp25_;
+       GError* _inner_error0_ = NULL;
+#line 209 "../src/contacts-avatar-selector.vala"
+       self = _data9_->self;
+#line 210 "../src/contacts-avatar-selector.vala"
+       if (response != ((gint) GTK_RESPONSE_ACCEPT)) {
+#line 1228 "contacts-avatar-selector.c"
+               GtkFileChooserNative* _tmp0_;
+#line 211 "../src/contacts-avatar-selector.vala"
+               _tmp0_ = _data9_->chooser;
+#line 211 "../src/contacts-avatar-selector.vala"
+               gtk_native_dialog_destroy ((GtkNativeDialog*) _tmp0_);
+#line 212 "../src/contacts-avatar-selector.vala"
+               return;
+#line 1236 "contacts-avatar-selector.c"
+       }
+       {
+               GFile* file = NULL;
+               GtkFileChooserNative* _tmp1_;
+               gchar* _tmp2_;
+               gchar* _tmp3_;
+               GFile* _tmp4_;
+               GFile* _tmp5_;
+               GFileInputStream* in_stream = NULL;
+               GFile* _tmp6_;
+               GFileInputStream* _tmp7_;
+               GdkPixbuf* pixbuf = NULL;
+               GFileInputStream* _tmp8_;
+               GdkPixbuf* _tmp9_;
+               GFileInputStream* _tmp10_;
+               gboolean _tmp11_ = FALSE;
+               GdkPixbuf* _tmp12_;
+#line 215 "../src/contacts-avatar-selector.vala"
+               _tmp1_ = _data9_->chooser;
+#line 215 "../src/contacts-avatar-selector.vala"
+               _tmp2_ = gtk_file_chooser_get_uri ((GtkFileChooser*) _tmp1_);
+#line 215 "../src/contacts-avatar-selector.vala"
+               _tmp3_ = _tmp2_;
+#line 215 "../src/contacts-avatar-selector.vala"
+               _tmp4_ = g_file_new_for_uri (_tmp3_);
+#line 215 "../src/contacts-avatar-selector.vala"
+               _tmp5_ = _tmp4_;
+#line 215 "../src/contacts-avatar-selector.vala"
+               _g_free0 (_tmp3_);
+#line 215 "../src/contacts-avatar-selector.vala"
+               file = _tmp5_;
+#line 216 "../src/contacts-avatar-selector.vala"
+               _tmp6_ = file;
+#line 216 "../src/contacts-avatar-selector.vala"
+               _tmp7_ = g_file_read (_tmp6_, NULL, &_inner_error0_);
+#line 216 "../src/contacts-avatar-selector.vala"
+               in_stream = _tmp7_;
+#line 216 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 216 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (file);
+#line 1278 "contacts-avatar-selector.c"
+                       goto __catch7_g_error;
+               }
+#line 217 "../src/contacts-avatar-selector.vala"
+               _tmp8_ = in_stream;
+#line 217 "../src/contacts-avatar-selector.vala"
+               _tmp9_ = gdk_pixbuf_new_from_stream ((GInputStream*) _tmp8_, NULL, &_inner_error0_);
+#line 217 "../src/contacts-avatar-selector.vala"
+               pixbuf = _tmp9_;
+#line 217 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 217 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (in_stream);
+#line 217 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (file);
+#line 1293 "contacts-avatar-selector.c"
+                       goto __catch7_g_error;
+               }
+#line 218 "../src/contacts-avatar-selector.vala"
+               _tmp10_ = in_stream;
+#line 218 "../src/contacts-avatar-selector.vala"
+               g_input_stream_close ((GInputStream*) _tmp10_, NULL, &_inner_error0_);
+#line 218 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 218 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (pixbuf);
+#line 218 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (in_stream);
+#line 218 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (file);
+#line 1308 "contacts-avatar-selector.c"
+                       goto __catch7_g_error;
+               }
+#line 219 "../src/contacts-avatar-selector.vala"
+               _tmp12_ = pixbuf;
+#line 219 "../src/contacts-avatar-selector.vala"
+               if (gdk_pixbuf_get_width (_tmp12_) > CONTACTS_AVATAR_SELECTOR_MAIN_SIZE) {
+#line 219 "../src/contacts-avatar-selector.vala"
+                       _tmp11_ = TRUE;
+#line 1317 "contacts-avatar-selector.c"
+               } else {
+                       GdkPixbuf* _tmp13_;
+#line 219 "../src/contacts-avatar-selector.vala"
+                       _tmp13_ = pixbuf;
+#line 219 "../src/contacts-avatar-selector.vala"
+                       _tmp11_ = gdk_pixbuf_get_height (_tmp13_) > CONTACTS_AVATAR_SELECTOR_MAIN_SIZE;
+#line 1324 "contacts-avatar-selector.c"
+               }
+#line 219 "../src/contacts-avatar-selector.vala"
+               if (_tmp11_) {
+#line 1328 "contacts-avatar-selector.c"
+                       ContactsCropCheeseDialog* dialog = NULL;
+                       GtkWidget* _tmp14_;
+                       GdkPixbuf* _tmp15_;
+                       ContactsCropCheeseDialog* _tmp16_;
+                       ContactsCropCheeseDialog* _tmp17_;
+                       ContactsCropCheeseDialog* _tmp18_;
+#line 220 "../src/contacts-avatar-selector.vala"
+                       _tmp14_ = gtk_widget_get_toplevel ((GtkWidget*) self);
+#line 220 "../src/contacts-avatar-selector.vala"
+                       _tmp15_ = pixbuf;
+#line 220 "../src/contacts-avatar-selector.vala"
+                       _tmp16_ = contacts_crop_cheese_dialog_new_for_crop ((GtkWindow*) 
G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, CONTACTS_TYPE_WINDOW, ContactsWindow), _tmp15_);
+#line 220 "../src/contacts-avatar-selector.vala"
+                       g_object_ref_sink (_tmp16_);
+#line 220 "../src/contacts-avatar-selector.vala"
+                       dialog = _tmp16_;
+#line 222 "../src/contacts-avatar-selector.vala"
+                       _tmp17_ = dialog;
+#line 222 "../src/contacts-avatar-selector.vala"
+                       g_signal_connect_object (_tmp17_, "picture-selected", (GCallback) 
_____lambda21__contacts_crop_cheese_dialog_picture_selected, self, 0);
+#line 225 "../src/contacts-avatar-selector.vala"
+                       _tmp18_ = dialog;
+#line 225 "../src/contacts-avatar-selector.vala"
+                       gtk_widget_show_all ((GtkWidget*) _tmp18_);
+#line 219 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (dialog);
+#line 1355 "contacts-avatar-selector.c"
+               } else {
+                       GdkPixbuf* _tmp19_;
+                       GdkPixbuf* _tmp20_;
+                       GdkPixbuf* _tmp21_;
+#line 227 "../src/contacts-avatar-selector.vala"
+                       _tmp19_ = pixbuf;
+#line 227 "../src/contacts-avatar-selector.vala"
+                       _tmp20_ = contacts_avatar_selector_scale_pixbuf_for_avatar_use (self, _tmp19_);
+#line 227 "../src/contacts-avatar-selector.vala"
+                       _tmp21_ = _tmp20_;
+#line 227 "../src/contacts-avatar-selector.vala"
+                       contacts_avatar_selector_selected_pixbuf (self, _tmp21_);
+#line 227 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (_tmp21_);
+#line 1370 "contacts-avatar-selector.c"
+               }
+#line 214 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (pixbuf);
+#line 214 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (in_stream);
+#line 214 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (file);
+#line 1378 "contacts-avatar-selector.c"
+       }
+       goto __finally7;
+       __catch7_g_error:
+       {
+               GError* e = NULL;
+               GError* _tmp22_;
+               const gchar* _tmp23_;
+               GtkWidget* _tmp24_;
+#line 214 "../src/contacts-avatar-selector.vala"
+               e = _inner_error0_;
+#line 214 "../src/contacts-avatar-selector.vala"
+               _inner_error0_ = NULL;
+#line 230 "../src/contacts-avatar-selector.vala"
+               _tmp22_ = e;
+#line 230 "../src/contacts-avatar-selector.vala"
+               _tmp23_ = _tmp22_->message;
+#line 230 "../src/contacts-avatar-selector.vala"
+               g_warning ("contacts-avatar-selector.vala:230: Failed to set avatar: %s", _tmp23_);
+#line 231 "../src/contacts-avatar-selector.vala"
+               _tmp24_ = gtk_widget_get_toplevel ((GtkWidget*) self);
+#line 231 "../src/contacts-avatar-selector.vala"
+               contacts_utils_show_error_dialog (_ ("Failed to set avatar."), G_TYPE_CHECK_INSTANCE_TYPE 
(_tmp24_, gtk_window_get_type ()) ? ((GtkWindow*) _tmp24_) : NULL);
+#line 214 "../src/contacts-avatar-selector.vala"
+               _g_error_free0 (e);
+#line 1403 "contacts-avatar-selector.c"
+       }
+       __finally7:
+#line 214 "../src/contacts-avatar-selector.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 214 "../src/contacts-avatar-selector.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 214 "../src/contacts-avatar-selector.vala"
+               g_clear_error (&_inner_error0_);
+#line 214 "../src/contacts-avatar-selector.vala"
+               return;
+#line 1414 "contacts-avatar-selector.c"
+       }
+#line 235 "../src/contacts-avatar-selector.vala"
+       _tmp25_ = _data9_->chooser;
+#line 235 "../src/contacts-avatar-selector.vala"
+       gtk_native_dialog_destroy ((GtkNativeDialog*) _tmp25_);
+#line 1420 "contacts-avatar-selector.c"
+}
+
+static void
+___lambda20__gtk_native_dialog_response (GtkNativeDialog* _sender,
+                                         gint response_id,
+                                         gpointer self)
+{
+#line 209 "../src/contacts-avatar-selector.vala"
+       __lambda20_ (self, response_id);
+#line 1430 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_on_file_clicked (ContactsAvatarSelector* self,
+                                          GtkButton* button)
+{
+       Block9Data* _data9_;
+       GtkWidget* _tmp0_;
+       GtkFileChooserNative* _tmp1_;
+       GtkFileChooserNative* _tmp2_;
+       GtkFileChooserNative* _tmp3_;
+       GtkImage* preview = NULL;
+       GtkImage* _tmp4_;
+       GtkImage* _tmp5_;
+       GtkFileChooserNative* _tmp6_;
+       GtkImage* _tmp7_;
+       GtkFileChooserNative* _tmp8_;
+       GtkImage* _tmp9_;
+       GtkFileChooserNative* _tmp10_;
+       gchar* folder = NULL;
+       const gchar* _tmp11_;
+       gchar* _tmp12_;
+       const gchar* _tmp13_;
+       GtkFileChooserNative* _tmp16_;
+       GtkFileChooserNative* _tmp17_;
+#line 190 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (self != NULL);
+#line 190 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (button != NULL);
+#line 190 "../src/contacts-avatar-selector.vala"
+       _data9_ = g_slice_new0 (Block9Data);
+#line 190 "../src/contacts-avatar-selector.vala"
+       _data9_->_ref_count_ = 1;
+#line 190 "../src/contacts-avatar-selector.vala"
+       _data9_->self = g_object_ref (self);
+#line 191 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = gtk_widget_get_toplevel ((GtkWidget*) self);
+#line 191 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = gtk_file_chooser_native_new (_ ("Browse for more pictures"), G_TYPE_CHECK_INSTANCE_CAST 
(_tmp0_, gtk_window_get_type (), GtkWindow), GTK_FILE_CHOOSER_ACTION_OPEN, _ ("_Open"), _ ("_Cancel"));
+#line 191 "../src/contacts-avatar-selector.vala"
+       _data9_->chooser = _tmp1_;
+#line 195 "../src/contacts-avatar-selector.vala"
+       _tmp2_ = _data9_->chooser;
+#line 195 "../src/contacts-avatar-selector.vala"
+       gtk_native_dialog_set_modal ((GtkNativeDialog*) _tmp2_, TRUE);
+#line 196 "../src/contacts-avatar-selector.vala"
+       _tmp3_ = _data9_->chooser;
+#line 196 "../src/contacts-avatar-selector.vala"
+       gtk_file_chooser_set_local_only ((GtkFileChooser*) _tmp3_, FALSE);
+#line 197 "../src/contacts-avatar-selector.vala"
+       _tmp4_ = (GtkImage*) gtk_image_new ();
+#line 197 "../src/contacts-avatar-selector.vala"
+       g_object_ref_sink (_tmp4_);
+#line 197 "../src/contacts-avatar-selector.vala"
+       preview = _tmp4_;
+#line 198 "../src/contacts-avatar-selector.vala"
+       _tmp5_ = preview;
+#line 198 "../src/contacts-avatar-selector.vala"
+       gtk_widget_set_size_request ((GtkWidget*) _tmp5_, CONTACTS_AVATAR_SELECTOR_MAIN_SIZE, -1);
+#line 199 "../src/contacts-avatar-selector.vala"
+       _tmp6_ = _data9_->chooser;
+#line 199 "../src/contacts-avatar-selector.vala"
+       _tmp7_ = preview;
+#line 199 "../src/contacts-avatar-selector.vala"
+       gtk_file_chooser_set_preview_widget ((GtkFileChooser*) _tmp6_, (GtkWidget*) _tmp7_);
+#line 200 "../src/contacts-avatar-selector.vala"
+       _tmp8_ = _data9_->chooser;
+#line 200 "../src/contacts-avatar-selector.vala"
+       gtk_file_chooser_set_use_preview_label ((GtkFileChooser*) _tmp8_, FALSE);
+#line 201 "../src/contacts-avatar-selector.vala"
+       _tmp9_ = preview;
+#line 201 "../src/contacts-avatar-selector.vala"
+       gtk_widget_show ((GtkWidget*) _tmp9_);
+#line 203 "../src/contacts-avatar-selector.vala"
+       _tmp10_ = _data9_->chooser;
+#line 203 "../src/contacts-avatar-selector.vala"
+       g_signal_connect_object ((GtkFileChooser*) _tmp10_, "update-preview", (GCallback) 
_contacts_avatar_selector_update_preview_gtk_file_chooser_update_preview, self, 0);
+#line 205 "../src/contacts-avatar-selector.vala"
+       _tmp11_ = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES);
+#line 205 "../src/contacts-avatar-selector.vala"
+       _tmp12_ = g_strdup (_tmp11_);
+#line 205 "../src/contacts-avatar-selector.vala"
+       folder = _tmp12_;
+#line 206 "../src/contacts-avatar-selector.vala"
+       _tmp13_ = folder;
+#line 206 "../src/contacts-avatar-selector.vala"
+       if (_tmp13_ != NULL) {
+#line 1518 "contacts-avatar-selector.c"
+               GtkFileChooserNative* _tmp14_;
+               const gchar* _tmp15_;
+#line 207 "../src/contacts-avatar-selector.vala"
+               _tmp14_ = _data9_->chooser;
+#line 207 "../src/contacts-avatar-selector.vala"
+               _tmp15_ = folder;
+#line 207 "../src/contacts-avatar-selector.vala"
+               gtk_file_chooser_set_current_folder ((GtkFileChooser*) _tmp14_, _tmp15_);
+#line 1527 "contacts-avatar-selector.c"
+       }
+#line 209 "../src/contacts-avatar-selector.vala"
+       _tmp16_ = _data9_->chooser;
+#line 209 "../src/contacts-avatar-selector.vala"
+       g_signal_connect_data ((GtkNativeDialog*) _tmp16_, "response", (GCallback) 
___lambda20__gtk_native_dialog_response, block9_data_ref (_data9_), (GClosureNotify) block9_data_unref, 0);
+#line 238 "../src/contacts-avatar-selector.vala"
+       _tmp17_ = _data9_->chooser;
+#line 238 "../src/contacts-avatar-selector.vala"
+       gtk_native_dialog_run ((GtkNativeDialog*) _tmp17_);
+#line 239 "../src/contacts-avatar-selector.vala"
+       gtk_popover_popdown ((GtkPopover*) self);
+#line 190 "../src/contacts-avatar-selector.vala"
+       _g_free0 (folder);
+#line 190 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (preview);
+#line 190 "../src/contacts-avatar-selector.vala"
+       block9_data_unref (_data9_);
+#line 190 "../src/contacts-avatar-selector.vala"
+       _data9_ = NULL;
+#line 1547 "contacts-avatar-selector.c"
+}
+
+static void
+_contacts_avatar_selector_on_file_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                              gpointer self)
+{
+#line 30 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_on_file_clicked ((ContactsAvatarSelector*) self, _sender);
+#line 1556 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_update_preview (ContactsAvatarSelector* self,
+                                         GtkFileChooser* chooser)
+{
+       gchar* uri = NULL;
+       gchar* _tmp0_;
+       const gchar* _tmp1_;
+       GError* _inner_error0_ = NULL;
+#line 242 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (self != NULL);
+#line 242 "../src/contacts-avatar-selector.vala"
+       g_return_if_fail (chooser != NULL);
+#line 243 "../src/contacts-avatar-selector.vala"
+       _tmp0_ = gtk_file_chooser_get_preview_uri (chooser);
+#line 243 "../src/contacts-avatar-selector.vala"
+       uri = _tmp0_;
+#line 244 "../src/contacts-avatar-selector.vala"
+       _tmp1_ = uri;
+#line 244 "../src/contacts-avatar-selector.vala"
+       if (_tmp1_ != NULL) {
+#line 1579 "contacts-avatar-selector.c"
+               GdkPixbuf* pixbuf = NULL;
+               GtkImage* preview = NULL;
+               GtkWidget* _tmp2_;
+               GtkImage* _tmp3_;
+               GFile* file = NULL;
+               const gchar* _tmp4_;
+               GFile* _tmp5_;
+               GdkPixbuf* _tmp19_;
+#line 245 "../src/contacts-avatar-selector.vala"
+               pixbuf = NULL;
+#line 247 "../src/contacts-avatar-selector.vala"
+               _tmp2_ = gtk_file_chooser_get_preview_widget (chooser);
+#line 247 "../src/contacts-avatar-selector.vala"
+               _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, gtk_image_get_type ()) ? 
((GtkImage*) _tmp2_) : NULL);
+#line 247 "../src/contacts-avatar-selector.vala"
+               preview = _tmp3_;
+#line 249 "../src/contacts-avatar-selector.vala"
+               _tmp4_ = uri;
+#line 249 "../src/contacts-avatar-selector.vala"
+               _tmp5_ = g_file_new_for_uri (_tmp4_);
+#line 249 "../src/contacts-avatar-selector.vala"
+               file = _tmp5_;
+#line 1602 "contacts-avatar-selector.c"
+               {
+                       GFileInfo* file_info = NULL;
+                       GFile* _tmp6_;
+                       GFileInfo* _tmp7_;
+                       GFileInfo* _tmp8_;
+#line 251 "../src/contacts-avatar-selector.vala"
+                       _tmp6_ = file;
+#line 251 "../src/contacts-avatar-selector.vala"
+                       _tmp7_ = g_file_query_info (_tmp6_, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, 
G_FILE_QUERY_INFO_NONE, NULL, &_inner_error0_);
+#line 251 "../src/contacts-avatar-selector.vala"
+                       file_info = _tmp7_;
+#line 251 "../src/contacts-avatar-selector.vala"
+                       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 1616 "contacts-avatar-selector.c"
+                               goto __catch8_g_error;
+                       }
+#line 253 "../src/contacts-avatar-selector.vala"
+                       _tmp8_ = file_info;
+#line 253 "../src/contacts-avatar-selector.vala"
+                       if (_tmp8_ != NULL) {
+#line 1623 "contacts-avatar-selector.c"
+                               gchar* mime_type = NULL;
+                               GFileInfo* _tmp9_;
+                               const gchar* _tmp10_;
+                               gchar* _tmp11_;
+                               const gchar* _tmp12_;
+#line 254 "../src/contacts-avatar-selector.vala"
+                               _tmp9_ = file_info;
+#line 254 "../src/contacts-avatar-selector.vala"
+                               _tmp10_ = g_file_info_get_content_type (_tmp9_);
+#line 254 "../src/contacts-avatar-selector.vala"
+                               _tmp11_ = g_strdup (_tmp10_);
+#line 254 "../src/contacts-avatar-selector.vala"
+                               mime_type = _tmp11_;
+#line 256 "../src/contacts-avatar-selector.vala"
+                               _tmp12_ = mime_type;
+#line 256 "../src/contacts-avatar-selector.vala"
+                               if (_tmp12_ != NULL) {
+#line 1641 "contacts-avatar-selector.c"
+                                       GnomeDesktopThumbnailFactory* _tmp13_;
+                                       const gchar* _tmp14_;
+                                       const gchar* _tmp15_;
+                                       GdkPixbuf* _tmp16_;
+                                       GdkPixbuf* _tmp17_;
+#line 257 "../src/contacts-avatar-selector.vala"
+                                       _tmp13_ = self->priv->thumbnail_factory;
+#line 257 "../src/contacts-avatar-selector.vala"
+                                       _tmp14_ = uri;
+#line 257 "../src/contacts-avatar-selector.vala"
+                                       _tmp15_ = mime_type;
+#line 257 "../src/contacts-avatar-selector.vala"
+                                       _tmp16_ = gnome_desktop_thumbnail_factory_generate_thumbnail 
(_tmp13_, _tmp14_, _tmp15_);
+#line 257 "../src/contacts-avatar-selector.vala"
+                                       _tmp17_ = _g_object_ref0 (_tmp16_);
+#line 257 "../src/contacts-avatar-selector.vala"
+                                       _g_object_unref0 (pixbuf);
+#line 257 "../src/contacts-avatar-selector.vala"
+                                       pixbuf = _tmp17_;
+#line 1661 "contacts-avatar-selector.c"
+                               }
+#line 253 "../src/contacts-avatar-selector.vala"
+                               _g_free0 (mime_type);
+#line 1665 "contacts-avatar-selector.c"
+                       }
+#line 250 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (file_info);
+#line 1669 "contacts-avatar-selector.c"
+               }
+               goto __finally8;
+               __catch8_g_error:
+               {
+#line 250 "../src/contacts-avatar-selector.vala"
+                       g_clear_error (&_inner_error0_);
+#line 250 "../src/contacts-avatar-selector.vala"
+                       _inner_error0_ = NULL;
+#line 1678 "contacts-avatar-selector.c"
+               }
+               __finally8:
+#line 250 "../src/contacts-avatar-selector.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 250 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (file);
+#line 250 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (preview);
+#line 250 "../src/contacts-avatar-selector.vala"
+                       _g_object_unref0 (pixbuf);
+#line 250 "../src/contacts-avatar-selector.vala"
+                       _g_free0 (uri);
+#line 250 "../src/contacts-avatar-selector.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 250 "../src/contacts-avatar-selector.vala"
+                       g_clear_error (&_inner_error0_);
+#line 250 "../src/contacts-avatar-selector.vala"
+                       return;
+#line 1697 "contacts-avatar-selector.c"
+               }
+#line 262 "../src/contacts-avatar-selector.vala"
+               if (G_TYPE_CHECK_INSTANCE_TYPE (chooser, gtk_dialog_get_type ())) {
+#line 1701 "contacts-avatar-selector.c"
+                       GdkPixbuf* _tmp18_;
+#line 263 "../src/contacts-avatar-selector.vala"
+                       _tmp18_ = pixbuf;
+#line 263 "../src/contacts-avatar-selector.vala"
+                       gtk_dialog_set_response_sensitive (G_TYPE_CHECK_INSTANCE_CAST (chooser, 
gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_ACCEPT, _tmp18_ != NULL);
+#line 1707 "contacts-avatar-selector.c"
+               }
+#line 265 "../src/contacts-avatar-selector.vala"
+               _tmp19_ = pixbuf;
+#line 265 "../src/contacts-avatar-selector.vala"
+               if (_tmp19_ != NULL) {
+#line 1713 "contacts-avatar-selector.c"
+                       GtkImage* _tmp20_;
+                       GdkPixbuf* _tmp21_;
+#line 266 "../src/contacts-avatar-selector.vala"
+                       _tmp20_ = preview;
+#line 266 "../src/contacts-avatar-selector.vala"
+                       _tmp21_ = pixbuf;
+#line 266 "../src/contacts-avatar-selector.vala"
+                       gtk_image_set_from_pixbuf (_tmp20_, _tmp21_);
+#line 1722 "contacts-avatar-selector.c"
+               } else {
+                       GtkImage* _tmp22_;
+#line 268 "../src/contacts-avatar-selector.vala"
+                       _tmp22_ = preview;
+#line 268 "../src/contacts-avatar-selector.vala"
+                       gtk_image_set_from_icon_name (_tmp22_, "dialog-question", (GtkIconSize) 
GTK_ICON_SIZE_DIALOG);
+#line 1729 "contacts-avatar-selector.c"
+               }
+#line 244 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (file);
+#line 244 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (preview);
+#line 244 "../src/contacts-avatar-selector.vala"
+               _g_object_unref0 (pixbuf);
+#line 1737 "contacts-avatar-selector.c"
+       }
+#line 271 "../src/contacts-avatar-selector.vala"
+       gtk_file_chooser_set_preview_widget_active (chooser, TRUE);
+#line 242 "../src/contacts-avatar-selector.vala"
+       _g_free0 (uri);
+#line 1743 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_class_init (ContactsAvatarSelectorClass * klass,
+                                     gpointer klass_data)
+{
+#line 30 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_parent_class = g_type_class_peek_parent (klass);
+#line 30 "../src/contacts-avatar-selector.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsAvatarSelector_private_offset);
+#line 30 "../src/contacts-avatar-selector.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_avatar_selector_finalize;
+#line 30 "../src/contacts-avatar-selector.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-avatar-selector.ui");
+#line 1758 "contacts-avatar-selector.c"
+       /**
+          * Fired after the user has definitely chosen a new avatar.
+          */
+#line 30 "../src/contacts-avatar-selector.vala"
+       contacts_avatar_selector_signals[CONTACTS_AVATAR_SELECTOR_SET_AVATAR_SIGNAL] = g_signal_new 
("set-avatar", CONTACTS_TYPE_AVATAR_SELECTOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, g_icon_get_type ());
+#line 30 "../src/contacts-avatar-selector.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "personas_thumbnail_grid", 
FALSE, ContactsAvatarSelector_private_offset + G_STRUCT_OFFSET (ContactsAvatarSelectorPrivate, 
personas_thumbnail_grid));
+#line 30 "../src/contacts-avatar-selector.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "stock_thumbnail_grid", FALSE, 
ContactsAvatarSelector_private_offset + G_STRUCT_OFFSET (ContactsAvatarSelectorPrivate, 
stock_thumbnail_grid));
+#line 30 "../src/contacts-avatar-selector.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "cheese_button", FALSE, 
ContactsAvatarSelector_private_offset + G_STRUCT_OFFSET (ContactsAvatarSelectorPrivate, cheese_button));
+#line 30 "../src/contacts-avatar-selector.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_cheese_clicked", 
G_CALLBACK(_contacts_avatar_selector_on_cheese_clicked_gtk_button_clicked));
+#line 30 "../src/contacts-avatar-selector.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_file_clicked", 
G_CALLBACK(_contacts_avatar_selector_on_file_clicked_gtk_button_clicked));
+#line 1774 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_instance_init (ContactsAvatarSelector * self,
+                                        gpointer klass)
+{
+#line 30 "../src/contacts-avatar-selector.vala"
+       self->priv = contacts_avatar_selector_get_instance_private (self);
+#line 30 "../src/contacts-avatar-selector.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 1785 "contacts-avatar-selector.c"
+}
+
+static void
+contacts_avatar_selector_finalize (GObject * obj)
+{
+       ContactsAvatarSelector * self;
+#line 30 "../src/contacts-avatar-selector.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_AVATAR_SELECTOR, ContactsAvatarSelector);
+#line 36 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->thumbnail_factory);
+#line 37 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->individual);
+#line 40 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->personas_thumbnail_grid);
+#line 42 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->stock_thumbnail_grid);
+#line 46 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->cheese_button);
+#line 48 "../src/contacts-avatar-selector.vala"
+       _g_object_unref0 (self->priv->camera_monitor);
+#line 30 "../src/contacts-avatar-selector.vala"
+       G_OBJECT_CLASS (contacts_avatar_selector_parent_class)->finalize (obj);
+#line 1808 "contacts-avatar-selector.c"
+}
+
+/**
+ * The AvatarSelector can be used to choose the avatar for a contact.
+ * This can be done by either choosing a stock thumbnail, an image file
+ * provided by the user, or -if cheese is enabled- by using a webcam.
+ *
+ * After a user has initially chosen an avatar, we provide a cropping tool.
+ */
+static GType
+contacts_avatar_selector_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsAvatarSelectorClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_avatar_selector_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsAvatarSelector), 0, (GInstanceInitFunc) contacts_avatar_selector_instance_init, 
NULL };
+       GType contacts_avatar_selector_type_id;
+       contacts_avatar_selector_type_id = g_type_register_static (gtk_popover_get_type (), 
"ContactsAvatarSelector", &g_define_type_info, 0);
+       ContactsAvatarSelector_private_offset = g_type_add_instance_private 
(contacts_avatar_selector_type_id, sizeof (ContactsAvatarSelectorPrivate));
+       return contacts_avatar_selector_type_id;
+}
+
+GType
+contacts_avatar_selector_get_type (void)
+{
+       static volatile gsize contacts_avatar_selector_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_avatar_selector_type_id__volatile)) {
+               GType contacts_avatar_selector_type_id;
+               contacts_avatar_selector_type_id = contacts_avatar_selector_get_type_once ();
+               g_once_init_leave (&contacts_avatar_selector_type_id__volatile, 
contacts_avatar_selector_type_id);
+       }
+       return contacts_avatar_selector_type_id__volatile;
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-avatar.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-avatar.c
new file mode 100644
index 0000000..acb3487
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-avatar.c
@@ -0,0 +1,1192 @@
+/* contacts-avatar.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-avatar.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <glib.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <folks/folks.h>
+#include <cairo.h>
+#include <gio/gio.h>
+#include <gdk/gdk.h>
+#include <float.h>
+#include <math.h>
+#include "contacts.h"
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+#define CONTACTS_TYPE_AVATAR (contacts_avatar_get_type ())
+#define CONTACTS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR, ContactsAvatar))
+#define CONTACTS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+#define CONTACTS_IS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_IS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_AVATAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+
+typedef struct _ContactsAvatar ContactsAvatar;
+typedef struct _ContactsAvatarClass ContactsAvatarClass;
+typedef struct _ContactsAvatarPrivate ContactsAvatarPrivate;
+enum  {
+       CONTACTS_AVATAR_0_PROPERTY,
+       CONTACTS_AVATAR_NUM_PROPERTIES
+};
+static GParamSpec* contacts_avatar_properties[CONTACTS_AVATAR_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _ContactsAvatarLoadAvatarData ContactsAvatarLoadAvatarData;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, 
__LINE__, G_STRFUNC, msg);
+#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, 
G_STRFUNC, msg); return; }
+#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning 
(G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
+#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, 
__LINE__, G_STRFUNC, msg);
+
+struct _ContactsAvatar {
+       GtkDrawingArea parent_instance;
+       ContactsAvatarPrivate * priv;
+};
+
+struct _ContactsAvatarClass {
+       GtkDrawingAreaClass parent_class;
+};
+
+struct _ContactsAvatarPrivate {
+       gint size;
+       GdkPixbuf* pixbuf;
+       GdkPixbuf* cache;
+       FolksIndividual* individual;
+       gboolean avatar_loaded;
+};
+
+struct _ContactsAvatarLoadAvatarData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsAvatar* self;
+       FolksIndividual* _tmp0_;
+       GInputStream* stream;
+       FolksIndividual* _tmp1_;
+       GLoadableIcon* _tmp2_;
+       GLoadableIcon* _tmp3_;
+       GInputStream* _tmp4_;
+       GdkPixbuf* _tmp5_;
+       GInputStream* _tmp6_;
+       GdkPixbuf* _tmp7_;
+       GdkPixbuf* _tmp8_;
+       GError* e;
+       FolksIndividual* _tmp9_;
+       const gchar* _tmp10_;
+       const gchar* _tmp11_;
+       GError* _tmp12_;
+       const gchar* _tmp13_;
+       GError* _inner_error0_;
+};
+
+static gint ContactsAvatar_private_offset;
+static gpointer contacts_avatar_parent_class = NULL;
+
+GType contacts_avatar_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatar, g_object_unref)
+ContactsAvatar* contacts_avatar_new (gint size,
+                                     FolksIndividual* individual);
+ContactsAvatar* contacts_avatar_construct (GType object_type,
+                                           gint size,
+                                           FolksIndividual* individual);
+static void ___lambda5_ (ContactsAvatar* self,
+                  GObject* s,
+                  GParamSpec* p);
+static void contacts_avatar_load_avatar (ContactsAvatar* self,
+                                  GAsyncReadyCallback _callback_,
+                                  gpointer _user_data_);
+static void contacts_avatar_load_avatar_finish (ContactsAvatar* self,
+                                         GAsyncResult* _res_);
+static void ____lambda5__g_object_notify (GObject* _sender,
+                                   GParamSpec* pspec,
+                                   gpointer self);
+void contacts_avatar_set_pixbuf (ContactsAvatar* self,
+                                 GdkPixbuf* a_pixbuf);
+static void contacts_avatar_load_avatar_data_free (gpointer _data);
+static gboolean contacts_avatar_load_avatar_co (ContactsAvatarLoadAvatarData* _data_);
+static void contacts_avatar_load_avatar_ready (GObject* source_object,
+                                        GAsyncResult* _res_,
+                                        gpointer _user_data_);
+static gboolean contacts_avatar_real_draw (GtkWidget* base,
+                                    cairo_t* cr);
+static GdkPixbuf* contacts_avatar_create_contact_avatar (ContactsAvatar* self);
+static GdkPixbuf* contacts_avatar_create_fallback (ContactsAvatar* self);
+static void contacts_avatar_draw_cached_avatar (ContactsAvatar* self,
+                                         cairo_t* cr);
+static gchar* contacts_avatar_find_display_name (ContactsAvatar* self);
+static gchar* contacts_avatar_look_up_alias_for_display_name (ContactsAvatar* self,
+                                                       FolksPersona* p);
+static gchar* contacts_avatar_look_up_name_details_for_display_name (ContactsAvatar* self,
+                                                              FolksPersona* p);
+static void contacts_avatar_finalize (GObject * obj);
+static GType contacts_avatar_get_type_once (void);
+
+static inline gpointer
+contacts_avatar_get_instance_private (ContactsAvatar* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsAvatar_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 37 "../src/contacts-avatar.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 156 "contacts-avatar.c"
+}
+
+static void
+___lambda5_ (ContactsAvatar* self,
+             GObject* s,
+             GParamSpec* p)
+{
+#line 39 "../src/contacts-avatar.vala"
+       g_return_if_fail (s != NULL);
+#line 39 "../src/contacts-avatar.vala"
+       g_return_if_fail (p != NULL);
+#line 40 "../src/contacts-avatar.vala"
+       contacts_avatar_load_avatar (self, NULL, NULL);
+#line 170 "contacts-avatar.c"
+}
+
+static void
+____lambda5__g_object_notify (GObject* _sender,
+                              GParamSpec* pspec,
+                              gpointer self)
+{
+#line 39 "../src/contacts-avatar.vala"
+       ___lambda5_ ((ContactsAvatar*) self, _sender, pspec);
+#line 180 "contacts-avatar.c"
+}
+
+ContactsAvatar*
+contacts_avatar_construct (GType object_type,
+                           gint size,
+                           FolksIndividual* individual)
+{
+       ContactsAvatar * self = NULL;
+       FolksIndividual* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+#line 36 "../src/contacts-avatar.vala"
+       self = (ContactsAvatar*) g_object_new (object_type, NULL);
+#line 37 "../src/contacts-avatar.vala"
+       _tmp0_ = _g_object_ref0 (individual);
+#line 37 "../src/contacts-avatar.vala"
+       _g_object_unref0 (self->priv->individual);
+#line 37 "../src/contacts-avatar.vala"
+       self->priv->individual = _tmp0_;
+#line 38 "../src/contacts-avatar.vala"
+       if (individual != NULL) {
+#line 39 "../src/contacts-avatar.vala"
+               g_signal_connect_object ((GObject*) individual, "notify::avatar", (GCallback) 
____lambda5__g_object_notify, self, 0);
+#line 203 "contacts-avatar.c"
+       }
+#line 44 "../src/contacts-avatar.vala"
+       self->priv->size = size;
+#line 45 "../src/contacts-avatar.vala"
+       gtk_widget_set_size_request ((GtkWidget*) self, size, size);
+#line 48 "../src/contacts-avatar.vala"
+       if (individual == NULL) {
+#line 48 "../src/contacts-avatar.vala"
+               _tmp1_ = TRUE;
+#line 213 "contacts-avatar.c"
+       } else {
+               GLoadableIcon* _tmp2_;
+               GLoadableIcon* _tmp3_;
+#line 48 "../src/contacts-avatar.vala"
+               _tmp2_ = folks_avatar_details_get_avatar ((FolksAvatarDetails*) individual);
+#line 48 "../src/contacts-avatar.vala"
+               _tmp3_ = _tmp2_;
+#line 48 "../src/contacts-avatar.vala"
+               _tmp1_ = _tmp3_ == NULL;
+#line 223 "contacts-avatar.c"
+       }
+#line 48 "../src/contacts-avatar.vala"
+       self->priv->avatar_loaded = _tmp1_;
+#line 50 "../src/contacts-avatar.vala"
+       gtk_widget_show ((GtkWidget*) self);
+#line 36 "../src/contacts-avatar.vala"
+       return self;
+#line 231 "contacts-avatar.c"
+}
+
+ContactsAvatar*
+contacts_avatar_new (gint size,
+                     FolksIndividual* individual)
+{
+#line 36 "../src/contacts-avatar.vala"
+       return contacts_avatar_construct (CONTACTS_TYPE_AVATAR, size, individual);
+#line 240 "contacts-avatar.c"
+}
+
+/**
+   * Manually set the avatar to the given pixbuf, even if the contact has an avatar.
+   */
+void
+contacts_avatar_set_pixbuf (ContactsAvatar* self,
+                            GdkPixbuf* a_pixbuf)
+{
+       GdkPixbuf* _tmp0_;
+#line 56 "../src/contacts-avatar.vala"
+       g_return_if_fail (self != NULL);
+#line 57 "../src/contacts-avatar.vala"
+       _g_object_unref0 (self->priv->cache);
+#line 57 "../src/contacts-avatar.vala"
+       self->priv->cache = NULL;
+#line 58 "../src/contacts-avatar.vala"
+       _tmp0_ = _g_object_ref0 (a_pixbuf);
+#line 58 "../src/contacts-avatar.vala"
+       _g_object_unref0 (self->priv->pixbuf);
+#line 58 "../src/contacts-avatar.vala"
+       self->priv->pixbuf = _tmp0_;
+#line 59 "../src/contacts-avatar.vala"
+       gtk_widget_queue_draw ((GtkWidget*) self);
+#line 265 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_load_avatar_data_free (gpointer _data)
+{
+       ContactsAvatarLoadAvatarData* _data_;
+       _data_ = _data;
+#line 26 "../src/contacts-avatar.vala"
+       _g_object_unref0 (_data_->self);
+#line 26 "../src/contacts-avatar.vala"
+       g_slice_free (ContactsAvatarLoadAvatarData, _data_);
+#line 277 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_load_avatar (ContactsAvatar* self,
+                             GAsyncReadyCallback _callback_,
+                             gpointer _user_data_)
+{
+       ContactsAvatarLoadAvatarData* _data_;
+       ContactsAvatar* _tmp0_;
+#line 26 "../src/contacts-avatar.vala"
+       _data_ = g_slice_new0 (ContactsAvatarLoadAvatarData);
+#line 26 "../src/contacts-avatar.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 26 "../src/contacts-avatar.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_avatar_load_avatar_data_free);
+#line 26 "../src/contacts-avatar.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 26 "../src/contacts-avatar.vala"
+       _data_->self = _tmp0_;
+#line 26 "../src/contacts-avatar.vala"
+       contacts_avatar_load_avatar_co (_data_);
+#line 299 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_load_avatar_finish (ContactsAvatar* self,
+                                    GAsyncResult* _res_)
+{
+       ContactsAvatarLoadAvatarData* _data_;
+#line 26 "../src/contacts-avatar.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 309 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_load_avatar_ready (GObject* source_object,
+                                   GAsyncResult* _res_,
+                                   gpointer _user_data_)
+{
+       ContactsAvatarLoadAvatarData* _data_;
+#line 67 "../src/contacts-avatar.vala"
+       _data_ = _user_data_;
+#line 67 "../src/contacts-avatar.vala"
+       _data_->_source_object_ = source_object;
+#line 67 "../src/contacts-avatar.vala"
+       _data_->_res_ = _res_;
+#line 67 "../src/contacts-avatar.vala"
+       contacts_avatar_load_avatar_co (_data_);
+#line 326 "contacts-avatar.c"
+}
+
+static gboolean
+contacts_avatar_load_avatar_co (ContactsAvatarLoadAvatarData* _data_)
+{
+#line 62 "../src/contacts-avatar.vala"
+       switch (_data_->_state_) {
+#line 62 "../src/contacts-avatar.vala"
+               case 0:
+#line 336 "contacts-avatar.c"
+               goto _state_0;
+#line 62 "../src/contacts-avatar.vala"
+               case 1:
+#line 340 "contacts-avatar.c"
+               goto _state_1;
+#line 62 "../src/contacts-avatar.vala"
+               case 2:
+#line 344 "contacts-avatar.c"
+               goto _state_2;
+               default:
+#line 62 "../src/contacts-avatar.vala"
+               g_assert_not_reached ();
+#line 349 "contacts-avatar.c"
+       }
+       _state_0:
+#line 63 "../src/contacts-avatar.vala"
+       _data_->_tmp0_ = _data_->self->priv->individual;
+#line 63 "../src/contacts-avatar.vala"
+       _vala_assert (_data_->_tmp0_ != NULL, "this.individual != null");
+#line 65 "../src/contacts-avatar.vala"
+       _data_->self->priv->avatar_loaded = TRUE;
+#line 358 "contacts-avatar.c"
+       {
+#line 67 "../src/contacts-avatar.vala"
+               _data_->_tmp1_ = _data_->self->priv->individual;
+#line 67 "../src/contacts-avatar.vala"
+               _data_->_tmp2_ = folks_avatar_details_get_avatar ((FolksAvatarDetails*) _data_->_tmp1_);
+#line 67 "../src/contacts-avatar.vala"
+               _data_->_tmp3_ = _data_->_tmp2_;
+#line 67 "../src/contacts-avatar.vala"
+               _data_->_state_ = 1;
+#line 67 "../src/contacts-avatar.vala"
+               g_loadable_icon_load_async (_data_->_tmp3_, _data_->self->priv->size, NULL, 
contacts_avatar_load_avatar_ready, _data_);
+#line 67 "../src/contacts-avatar.vala"
+               return FALSE;
+#line 372 "contacts-avatar.c"
+               _state_1:
+#line 67 "../src/contacts-avatar.vala"
+               _data_->_tmp4_ = g_loadable_icon_load_finish (_data_->_tmp3_, _data_->_res_, NULL, 
&_data_->_inner_error0_);
+#line 67 "../src/contacts-avatar.vala"
+               _data_->stream = _data_->_tmp4_;
+#line 67 "../src/contacts-avatar.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 380 "contacts-avatar.c"
+                       goto __catch3_g_error;
+               }
+#line 68 "../src/contacts-avatar.vala"
+               _g_object_unref0 (_data_->self->priv->cache);
+#line 68 "../src/contacts-avatar.vala"
+               _data_->self->priv->cache = NULL;
+#line 69 "../src/contacts-avatar.vala"
+               _data_->_tmp6_ = _data_->stream;
+#line 69 "../src/contacts-avatar.vala"
+               _data_->_state_ = 2;
+#line 69 "../src/contacts-avatar.vala"
+               gdk_pixbuf_new_from_stream_at_scale_async (_data_->_tmp6_, _data_->self->priv->size, 
_data_->self->priv->size, TRUE, NULL, contacts_avatar_load_avatar_ready, _data_);
+#line 69 "../src/contacts-avatar.vala"
+               return FALSE;
+#line 395 "contacts-avatar.c"
+               _state_2:
+#line 69 "../src/contacts-avatar.vala"
+               _data_->_tmp7_ = (GdkPixbuf*) gdk_pixbuf_new_from_stream_finish (_data_->_res_, 
&_data_->_inner_error0_);
+#line 69 "../src/contacts-avatar.vala"
+               _data_->_tmp5_ = _data_->_tmp7_;
+#line 69 "../src/contacts-avatar.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 69 "../src/contacts-avatar.vala"
+                       _g_object_unref0 (_data_->stream);
+#line 405 "contacts-avatar.c"
+                       goto __catch3_g_error;
+               }
+#line 69 "../src/contacts-avatar.vala"
+               _data_->_tmp8_ = _data_->_tmp5_;
+#line 69 "../src/contacts-avatar.vala"
+               _data_->_tmp5_ = NULL;
+#line 69 "../src/contacts-avatar.vala"
+               _g_object_unref0 (_data_->self->priv->pixbuf);
+#line 69 "../src/contacts-avatar.vala"
+               _data_->self->priv->pixbuf = _data_->_tmp8_;
+#line 70 "../src/contacts-avatar.vala"
+               gtk_widget_queue_draw ((GtkWidget*) _data_->self);
+#line 66 "../src/contacts-avatar.vala"
+               _g_object_unref0 (_data_->_tmp5_);
+#line 66 "../src/contacts-avatar.vala"
+               _g_object_unref0 (_data_->stream);
+#line 422 "contacts-avatar.c"
+       }
+       goto __finally3;
+       __catch3_g_error:
+       {
+#line 66 "../src/contacts-avatar.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 66 "../src/contacts-avatar.vala"
+               _data_->_inner_error0_ = NULL;
+#line 72 "../src/contacts-avatar.vala"
+               _data_->_tmp9_ = _data_->self->priv->individual;
+#line 72 "../src/contacts-avatar.vala"
+               _data_->_tmp10_ = folks_individual_get_display_name (_data_->_tmp9_);
+#line 72 "../src/contacts-avatar.vala"
+               _data_->_tmp11_ = _data_->_tmp10_;
+#line 72 "../src/contacts-avatar.vala"
+               _data_->_tmp12_ = _data_->e;
+#line 72 "../src/contacts-avatar.vala"
+               _data_->_tmp13_ = _data_->_tmp12_->message;
+#line 72 "../src/contacts-avatar.vala"
+               g_debug ("contacts-avatar.vala:72: Couldn't load avatar of contact %s. Reason: %" \
+"s", _data_->_tmp11_, _data_->_tmp13_);
+#line 66 "../src/contacts-avatar.vala"
+               _g_error_free0 (_data_->e);
+#line 445 "contacts-avatar.c"
+       }
+       __finally3:
+#line 66 "../src/contacts-avatar.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 66 "../src/contacts-avatar.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 66 "../src/contacts-avatar.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 66 "../src/contacts-avatar.vala"
+               g_object_unref (_data_->_async_result);
+#line 66 "../src/contacts-avatar.vala"
+               return FALSE;
+#line 458 "contacts-avatar.c"
+       }
+#line 62 "../src/contacts-avatar.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 62 "../src/contacts-avatar.vala"
+       if (_data_->_state_ != 0) {
+#line 62 "../src/contacts-avatar.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 62 "../src/contacts-avatar.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 468 "contacts-avatar.c"
+               }
+       }
+#line 62 "../src/contacts-avatar.vala"
+       g_object_unref (_data_->_async_result);
+#line 62 "../src/contacts-avatar.vala"
+       return FALSE;
+#line 475 "contacts-avatar.c"
+}
+
+static gboolean
+contacts_avatar_real_draw (GtkWidget* base,
+                           cairo_t* cr)
+{
+       ContactsAvatar * self;
+       GdkPixbuf* _tmp0_;
+       gboolean result = FALSE;
+#line 76 "../src/contacts-avatar.vala"
+       self = (ContactsAvatar*) base;
+#line 76 "../src/contacts-avatar.vala"
+       g_return_val_if_fail (cr != NULL, FALSE);
+#line 78 "../src/contacts-avatar.vala"
+       if (!self->priv->avatar_loaded) {
+#line 79 "../src/contacts-avatar.vala"
+               contacts_avatar_load_avatar (self, NULL, NULL);
+#line 493 "contacts-avatar.c"
+       }
+#line 81 "../src/contacts-avatar.vala"
+       _tmp0_ = self->priv->cache;
+#line 81 "../src/contacts-avatar.vala"
+       if (_tmp0_ != NULL) {
+#line 499 "contacts-avatar.c"
+       } else {
+               GdkPixbuf* _tmp1_;
+#line 83 "../src/contacts-avatar.vala"
+               _tmp1_ = self->priv->pixbuf;
+#line 83 "../src/contacts-avatar.vala"
+               if (_tmp1_ != NULL) {
+#line 506 "contacts-avatar.c"
+                       GdkPixbuf* _tmp2_;
+#line 84 "../src/contacts-avatar.vala"
+                       _tmp2_ = contacts_avatar_create_contact_avatar (self);
+#line 84 "../src/contacts-avatar.vala"
+                       _g_object_unref0 (self->priv->cache);
+#line 84 "../src/contacts-avatar.vala"
+                       self->priv->cache = _tmp2_;
+#line 514 "contacts-avatar.c"
+               } else {
+                       GdkPixbuf* _tmp3_;
+#line 86 "../src/contacts-avatar.vala"
+                       _tmp3_ = contacts_avatar_create_fallback (self);
+#line 86 "../src/contacts-avatar.vala"
+                       _g_object_unref0 (self->priv->cache);
+#line 86 "../src/contacts-avatar.vala"
+                       self->priv->cache = _tmp3_;
+#line 523 "contacts-avatar.c"
+               }
+       }
+#line 88 "../src/contacts-avatar.vala"
+       contacts_avatar_draw_cached_avatar (self, cr);
+#line 90 "../src/contacts-avatar.vala"
+       result = TRUE;
+#line 90 "../src/contacts-avatar.vala"
+       return result;
+#line 532 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_draw_cached_avatar (ContactsAvatar* self,
+                                    cairo_t* cr)
+{
+       GdkPixbuf* _tmp0_;
+#line 93 "../src/contacts-avatar.vala"
+       g_return_if_fail (self != NULL);
+#line 93 "../src/contacts-avatar.vala"
+       g_return_if_fail (cr != NULL);
+#line 94 "../src/contacts-avatar.vala"
+       _tmp0_ = self->priv->cache;
+#line 94 "../src/contacts-avatar.vala"
+       gdk_cairo_set_source_pixbuf (cr, _tmp0_, (gdouble) 0, (gdouble) 0);
+#line 95 "../src/contacts-avatar.vala"
+       cairo_paint (cr);
+#line 550 "contacts-avatar.c"
+}
+
+static GdkPixbuf*
+contacts_avatar_create_contact_avatar (ContactsAvatar* self)
+{
+       GdkPixbuf* _tmp0_;
+       GdkPixbuf* _tmp1_;
+       GdkPixbuf* result = NULL;
+#line 98 "../src/contacts-avatar.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 99 "../src/contacts-avatar.vala"
+       _tmp0_ = self->priv->pixbuf;
+#line 99 "../src/contacts-avatar.vala"
+       _tmp1_ = contacts_avatar_utils_round_image (_tmp0_);
+#line 99 "../src/contacts-avatar.vala"
+       result = _tmp1_;
+#line 99 "../src/contacts-avatar.vala"
+       return result;
+#line 569 "contacts-avatar.c"
+}
+
+static GdkPixbuf*
+contacts_avatar_create_fallback (ContactsAvatar* self)
+{
+       gchar* name = NULL;
+       gchar* _tmp0_;
+       gboolean show_label = FALSE;
+       FolksIndividual* _tmp1_;
+       GdkPixbuf* pixbuf = NULL;
+       const gchar* _tmp8_;
+       GdkPixbuf* _tmp9_;
+       GdkPixbuf* _tmp10_;
+       GdkPixbuf* _tmp11_;
+       GdkPixbuf* result = NULL;
+#line 102 "../src/contacts-avatar.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 103 "../src/contacts-avatar.vala"
+       _tmp0_ = g_strdup ("");
+#line 103 "../src/contacts-avatar.vala"
+       name = _tmp0_;
+#line 104 "../src/contacts-avatar.vala"
+       show_label = FALSE;
+#line 105 "../src/contacts-avatar.vala"
+       _tmp1_ = self->priv->individual;
+#line 105 "../src/contacts-avatar.vala"
+       if (_tmp1_ != NULL) {
+#line 597 "contacts-avatar.c"
+               gchar* _tmp2_;
+               const gchar* _tmp3_;
+#line 106 "../src/contacts-avatar.vala"
+               _tmp2_ = contacts_avatar_find_display_name (self);
+#line 106 "../src/contacts-avatar.vala"
+               _g_free0 (name);
+#line 106 "../src/contacts-avatar.vala"
+               name = _tmp2_;
+#line 110 "../src/contacts-avatar.vala"
+               _tmp3_ = name;
+#line 110 "../src/contacts-avatar.vala"
+               if (g_strcmp0 (_tmp3_, "") == 0) {
+#line 610 "contacts-avatar.c"
+                       FolksIndividual* _tmp4_;
+                       const gchar* _tmp5_;
+                       const gchar* _tmp6_;
+                       gchar* _tmp7_;
+#line 111 "../src/contacts-avatar.vala"
+                       _tmp4_ = self->priv->individual;
+#line 111 "../src/contacts-avatar.vala"
+                       _tmp5_ = folks_individual_get_display_name (_tmp4_);
+#line 111 "../src/contacts-avatar.vala"
+                       _tmp6_ = _tmp5_;
+#line 111 "../src/contacts-avatar.vala"
+                       _tmp7_ = g_strdup (_tmp6_);
+#line 111 "../src/contacts-avatar.vala"
+                       _g_free0 (name);
+#line 111 "../src/contacts-avatar.vala"
+                       name = _tmp7_;
+#line 627 "contacts-avatar.c"
+               } else {
+#line 113 "../src/contacts-avatar.vala"
+                       show_label = TRUE;
+#line 631 "contacts-avatar.c"
+               }
+       }
+#line 116 "../src/contacts-avatar.vala"
+       _tmp8_ = name;
+#line 116 "../src/contacts-avatar.vala"
+       _tmp9_ = contacts_avatar_utils_generate_user_picture (_tmp8_, self->priv->size, show_label);
+#line 116 "../src/contacts-avatar.vala"
+       pixbuf = _tmp9_;
+#line 117 "../src/contacts-avatar.vala"
+       _tmp10_ = pixbuf;
+#line 117 "../src/contacts-avatar.vala"
+       _tmp11_ = contacts_avatar_utils_round_image (_tmp10_);
+#line 117 "../src/contacts-avatar.vala"
+       _g_object_unref0 (pixbuf);
+#line 117 "../src/contacts-avatar.vala"
+       pixbuf = _tmp11_;
+#line 119 "../src/contacts-avatar.vala"
+       result = pixbuf;
+#line 119 "../src/contacts-avatar.vala"
+       _g_free0 (name);
+#line 119 "../src/contacts-avatar.vala"
+       return result;
+#line 654 "contacts-avatar.c"
+}
+
+static gchar*
+contacts_avatar_find_display_name (ContactsAvatar* self)
+{
+       gchar* name = NULL;
+       gchar* _tmp0_;
+       FolksPersona* primary_persona = NULL;
+       FolksPersona* _tmp15_;
+       gchar* _tmp16_;
+       const gchar* _tmp17_;
+       const gchar* _tmp27_;
+       gchar* result = NULL;
+#line 126 "../src/contacts-avatar.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 127 "../src/contacts-avatar.vala"
+       _tmp0_ = g_strdup ("");
+#line 127 "../src/contacts-avatar.vala"
+       name = _tmp0_;
+#line 128 "../src/contacts-avatar.vala"
+       primary_persona = NULL;
+#line 676 "contacts-avatar.c"
+       {
+               GeeIterator* _p_it = NULL;
+               FolksIndividual* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+#line 129 "../src/contacts-avatar.vala"
+               _tmp1_ = self->priv->individual;
+#line 129 "../src/contacts-avatar.vala"
+               _tmp2_ = folks_individual_get_personas (_tmp1_);
+#line 129 "../src/contacts-avatar.vala"
+               _tmp3_ = _tmp2_;
+#line 129 "../src/contacts-avatar.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 129 "../src/contacts-avatar.vala"
+               _p_it = _tmp4_;
+#line 129 "../src/contacts-avatar.vala"
+               while (TRUE) {
+#line 695 "contacts-avatar.c"
+                       GeeIterator* _tmp5_;
+                       FolksPersona* p = NULL;
+                       GeeIterator* _tmp6_;
+                       gpointer _tmp7_;
+                       FolksPersona* _tmp8_;
+                       FolksPersonaStore* _tmp9_;
+                       FolksPersonaStore* _tmp10_;
+                       gboolean _tmp11_;
+                       gboolean _tmp12_;
+#line 129 "../src/contacts-avatar.vala"
+                       _tmp5_ = _p_it;
+#line 129 "../src/contacts-avatar.vala"
+                       if (!gee_iterator_next (_tmp5_)) {
+#line 129 "../src/contacts-avatar.vala"
+                               break;
+#line 711 "contacts-avatar.c"
+                       }
+#line 129 "../src/contacts-avatar.vala"
+                       _tmp6_ = _p_it;
+#line 129 "../src/contacts-avatar.vala"
+                       _tmp7_ = gee_iterator_get (_tmp6_);
+#line 129 "../src/contacts-avatar.vala"
+                       p = (FolksPersona*) _tmp7_;
+#line 130 "../src/contacts-avatar.vala"
+                       _tmp8_ = p;
+#line 130 "../src/contacts-avatar.vala"
+                       _tmp9_ = folks_persona_get_store (_tmp8_);
+#line 130 "../src/contacts-avatar.vala"
+                       _tmp10_ = _tmp9_;
+#line 130 "../src/contacts-avatar.vala"
+                       _tmp11_ = folks_persona_store_get_is_primary_store (_tmp10_);
+#line 130 "../src/contacts-avatar.vala"
+                       _tmp12_ = _tmp11_;
+#line 130 "../src/contacts-avatar.vala"
+                       if (_tmp12_) {
+#line 731 "contacts-avatar.c"
+                               FolksPersona* _tmp13_;
+                               FolksPersona* _tmp14_;
+#line 131 "../src/contacts-avatar.vala"
+                               _tmp13_ = p;
+#line 131 "../src/contacts-avatar.vala"
+                               _tmp14_ = _g_object_ref0 (_tmp13_);
+#line 131 "../src/contacts-avatar.vala"
+                               _g_object_unref0 (primary_persona);
+#line 131 "../src/contacts-avatar.vala"
+                               primary_persona = _tmp14_;
+#line 132 "../src/contacts-avatar.vala"
+                               _g_object_unref0 (p);
+#line 132 "../src/contacts-avatar.vala"
+                               break;
+#line 746 "contacts-avatar.c"
+                       }
+#line 129 "../src/contacts-avatar.vala"
+                       _g_object_unref0 (p);
+#line 750 "contacts-avatar.c"
+               }
+#line 129 "../src/contacts-avatar.vala"
+               _g_object_unref0 (_p_it);
+#line 754 "contacts-avatar.c"
+       }
+#line 135 "../src/contacts-avatar.vala"
+       _tmp15_ = primary_persona;
+#line 135 "../src/contacts-avatar.vala"
+       _tmp16_ = contacts_avatar_look_up_alias_for_display_name (self, _tmp15_);
+#line 135 "../src/contacts-avatar.vala"
+       _g_free0 (name);
+#line 135 "../src/contacts-avatar.vala"
+       name = _tmp16_;
+#line 136 "../src/contacts-avatar.vala"
+       _tmp17_ = name;
+#line 136 "../src/contacts-avatar.vala"
+       if (g_strcmp0 (_tmp17_, "") == 0) {
+#line 768 "contacts-avatar.c"
+               {
+                       GeeIterator* _p_it = NULL;
+                       FolksIndividual* _tmp18_;
+                       GeeSet* _tmp19_;
+                       GeeSet* _tmp20_;
+                       GeeIterator* _tmp21_;
+#line 137 "../src/contacts-avatar.vala"
+                       _tmp18_ = self->priv->individual;
+#line 137 "../src/contacts-avatar.vala"
+                       _tmp19_ = folks_individual_get_personas (_tmp18_);
+#line 137 "../src/contacts-avatar.vala"
+                       _tmp20_ = _tmp19_;
+#line 137 "../src/contacts-avatar.vala"
+                       _tmp21_ = gee_iterable_iterator ((GeeIterable*) _tmp20_);
+#line 137 "../src/contacts-avatar.vala"
+                       _p_it = _tmp21_;
+#line 137 "../src/contacts-avatar.vala"
+                       while (TRUE) {
+#line 787 "contacts-avatar.c"
+                               GeeIterator* _tmp22_;
+                               FolksPersona* p = NULL;
+                               GeeIterator* _tmp23_;
+                               gpointer _tmp24_;
+                               FolksPersona* _tmp25_;
+                               gchar* _tmp26_;
+#line 137 "../src/contacts-avatar.vala"
+                               _tmp22_ = _p_it;
+#line 137 "../src/contacts-avatar.vala"
+                               if (!gee_iterator_next (_tmp22_)) {
+#line 137 "../src/contacts-avatar.vala"
+                                       break;
+#line 800 "contacts-avatar.c"
+                               }
+#line 137 "../src/contacts-avatar.vala"
+                               _tmp23_ = _p_it;
+#line 137 "../src/contacts-avatar.vala"
+                               _tmp24_ = gee_iterator_get (_tmp23_);
+#line 137 "../src/contacts-avatar.vala"
+                               p = (FolksPersona*) _tmp24_;
+#line 138 "../src/contacts-avatar.vala"
+                               _tmp25_ = p;
+#line 138 "../src/contacts-avatar.vala"
+                               _tmp26_ = contacts_avatar_look_up_alias_for_display_name (self, _tmp25_);
+#line 138 "../src/contacts-avatar.vala"
+                               _g_free0 (name);
+#line 138 "../src/contacts-avatar.vala"
+                               name = _tmp26_;
+#line 137 "../src/contacts-avatar.vala"
+                               _g_object_unref0 (p);
+#line 818 "contacts-avatar.c"
+                       }
+#line 137 "../src/contacts-avatar.vala"
+                       _g_object_unref0 (_p_it);
+#line 822 "contacts-avatar.c"
+               }
+       }
+#line 141 "../src/contacts-avatar.vala"
+       _tmp27_ = name;
+#line 141 "../src/contacts-avatar.vala"
+       if (g_strcmp0 (_tmp27_, "") == 0) {
+#line 829 "contacts-avatar.c"
+               {
+                       GeeIterator* _p_it = NULL;
+                       FolksIndividual* _tmp28_;
+                       GeeSet* _tmp29_;
+                       GeeSet* _tmp30_;
+                       GeeIterator* _tmp31_;
+#line 142 "../src/contacts-avatar.vala"
+                       _tmp28_ = self->priv->individual;
+#line 142 "../src/contacts-avatar.vala"
+                       _tmp29_ = folks_individual_get_personas (_tmp28_);
+#line 142 "../src/contacts-avatar.vala"
+                       _tmp30_ = _tmp29_;
+#line 142 "../src/contacts-avatar.vala"
+                       _tmp31_ = gee_iterable_iterator ((GeeIterable*) _tmp30_);
+#line 142 "../src/contacts-avatar.vala"
+                       _p_it = _tmp31_;
+#line 142 "../src/contacts-avatar.vala"
+                       while (TRUE) {
+#line 848 "contacts-avatar.c"
+                               GeeIterator* _tmp32_;
+                               FolksPersona* p = NULL;
+                               GeeIterator* _tmp33_;
+                               gpointer _tmp34_;
+                               FolksPersona* _tmp35_;
+                               gchar* _tmp36_;
+#line 142 "../src/contacts-avatar.vala"
+                               _tmp32_ = _p_it;
+#line 142 "../src/contacts-avatar.vala"
+                               if (!gee_iterator_next (_tmp32_)) {
+#line 142 "../src/contacts-avatar.vala"
+                                       break;
+#line 861 "contacts-avatar.c"
+                               }
+#line 142 "../src/contacts-avatar.vala"
+                               _tmp33_ = _p_it;
+#line 142 "../src/contacts-avatar.vala"
+                               _tmp34_ = gee_iterator_get (_tmp33_);
+#line 142 "../src/contacts-avatar.vala"
+                               p = (FolksPersona*) _tmp34_;
+#line 143 "../src/contacts-avatar.vala"
+                               _tmp35_ = p;
+#line 143 "../src/contacts-avatar.vala"
+                               _tmp36_ = contacts_avatar_look_up_name_details_for_display_name (self, 
_tmp35_);
+#line 143 "../src/contacts-avatar.vala"
+                               _g_free0 (name);
+#line 143 "../src/contacts-avatar.vala"
+                               name = _tmp36_;
+#line 142 "../src/contacts-avatar.vala"
+                               _g_object_unref0 (p);
+#line 879 "contacts-avatar.c"
+                       }
+#line 142 "../src/contacts-avatar.vala"
+                       _g_object_unref0 (_p_it);
+#line 883 "contacts-avatar.c"
+               }
+       }
+#line 146 "../src/contacts-avatar.vala"
+       result = name;
+#line 146 "../src/contacts-avatar.vala"
+       _g_object_unref0 (primary_persona);
+#line 146 "../src/contacts-avatar.vala"
+       return result;
+#line 892 "contacts-avatar.c"
+}
+
+static gchar*
+contacts_avatar_look_up_alias_for_display_name (ContactsAvatar* self,
+                                                FolksPersona* p)
+{
+       FolksAliasDetails* a = NULL;
+       FolksAliasDetails* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       FolksAliasDetails* _tmp2_;
+       gchar* _tmp10_;
+       gchar* result = NULL;
+#line 149 "../src/contacts-avatar.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 150 "../src/contacts-avatar.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, FOLKS_TYPE_ALIAS_DETAILS) ? 
((FolksAliasDetails*) p) : NULL);
+#line 150 "../src/contacts-avatar.vala"
+       a = _tmp0_;
+#line 151 "../src/contacts-avatar.vala"
+       _tmp2_ = a;
+#line 151 "../src/contacts-avatar.vala"
+       if (_tmp2_ != NULL) {
+#line 915 "contacts-avatar.c"
+               FolksAliasDetails* _tmp3_;
+               const gchar* _tmp4_;
+               const gchar* _tmp5_;
+#line 151 "../src/contacts-avatar.vala"
+               _tmp3_ = a;
+#line 151 "../src/contacts-avatar.vala"
+               _tmp4_ = folks_alias_details_get_alias (_tmp3_);
+#line 151 "../src/contacts-avatar.vala"
+               _tmp5_ = _tmp4_;
+#line 151 "../src/contacts-avatar.vala"
+               _tmp1_ = _tmp5_ != NULL;
+#line 927 "contacts-avatar.c"
+       } else {
+#line 151 "../src/contacts-avatar.vala"
+               _tmp1_ = FALSE;
+#line 931 "contacts-avatar.c"
+       }
+#line 151 "../src/contacts-avatar.vala"
+       if (_tmp1_) {
+#line 935 "contacts-avatar.c"
+               FolksAliasDetails* _tmp6_;
+               const gchar* _tmp7_;
+               const gchar* _tmp8_;
+               gchar* _tmp9_;
+#line 152 "../src/contacts-avatar.vala"
+               _tmp6_ = a;
+#line 152 "../src/contacts-avatar.vala"
+               _tmp7_ = folks_alias_details_get_alias (_tmp6_);
+#line 152 "../src/contacts-avatar.vala"
+               _tmp8_ = _tmp7_;
+#line 152 "../src/contacts-avatar.vala"
+               _tmp9_ = g_strdup (_tmp8_);
+#line 152 "../src/contacts-avatar.vala"
+               result = _tmp9_;
+#line 152 "../src/contacts-avatar.vala"
+               _g_object_unref0 (a);
+#line 152 "../src/contacts-avatar.vala"
+               return result;
+#line 954 "contacts-avatar.c"
+       }
+#line 154 "../src/contacts-avatar.vala"
+       _tmp10_ = g_strdup ("");
+#line 154 "../src/contacts-avatar.vala"
+       result = _tmp10_;
+#line 154 "../src/contacts-avatar.vala"
+       _g_object_unref0 (a);
+#line 154 "../src/contacts-avatar.vala"
+       return result;
+#line 964 "contacts-avatar.c"
+}
+
+static gchar*
+contacts_avatar_look_up_name_details_for_display_name (ContactsAvatar* self,
+                                                       FolksPersona* p)
+{
+       FolksNameDetails* n = NULL;
+       FolksNameDetails* _tmp0_;
+       FolksNameDetails* _tmp1_;
+       gchar* _tmp27_;
+       gchar* result = NULL;
+#line 157 "../src/contacts-avatar.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 158 "../src/contacts-avatar.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, FOLKS_TYPE_NAME_DETAILS) ? 
((FolksNameDetails*) p) : NULL);
+#line 158 "../src/contacts-avatar.vala"
+       n = _tmp0_;
+#line 159 "../src/contacts-avatar.vala"
+       _tmp1_ = n;
+#line 159 "../src/contacts-avatar.vala"
+       if (_tmp1_ != NULL) {
+#line 986 "contacts-avatar.c"
+               gboolean _tmp2_ = FALSE;
+               FolksNameDetails* _tmp3_;
+               const gchar* _tmp4_;
+               const gchar* _tmp5_;
+#line 160 "../src/contacts-avatar.vala"
+               _tmp3_ = n;
+#line 160 "../src/contacts-avatar.vala"
+               _tmp4_ = folks_name_details_get_full_name (_tmp3_);
+#line 160 "../src/contacts-avatar.vala"
+               _tmp5_ = _tmp4_;
+#line 160 "../src/contacts-avatar.vala"
+               if (_tmp5_ != NULL) {
+#line 999 "contacts-avatar.c"
+                       FolksNameDetails* _tmp6_;
+                       const gchar* _tmp7_;
+                       const gchar* _tmp8_;
+#line 160 "../src/contacts-avatar.vala"
+                       _tmp6_ = n;
+#line 160 "../src/contacts-avatar.vala"
+                       _tmp7_ = folks_name_details_get_full_name (_tmp6_);
+#line 160 "../src/contacts-avatar.vala"
+                       _tmp8_ = _tmp7_;
+#line 160 "../src/contacts-avatar.vala"
+                       _tmp2_ = g_strcmp0 (_tmp8_, "") != 0;
+#line 1011 "contacts-avatar.c"
+               } else {
+#line 160 "../src/contacts-avatar.vala"
+                       _tmp2_ = FALSE;
+#line 1015 "contacts-avatar.c"
+               }
+#line 160 "../src/contacts-avatar.vala"
+               if (_tmp2_) {
+#line 1019 "contacts-avatar.c"
+                       FolksNameDetails* _tmp9_;
+                       const gchar* _tmp10_;
+                       const gchar* _tmp11_;
+                       gchar* _tmp12_;
+#line 161 "../src/contacts-avatar.vala"
+                       _tmp9_ = n;
+#line 161 "../src/contacts-avatar.vala"
+                       _tmp10_ = folks_name_details_get_full_name (_tmp9_);
+#line 161 "../src/contacts-avatar.vala"
+                       _tmp11_ = _tmp10_;
+#line 161 "../src/contacts-avatar.vala"
+                       _tmp12_ = g_strdup (_tmp11_);
+#line 161 "../src/contacts-avatar.vala"
+                       result = _tmp12_;
+#line 161 "../src/contacts-avatar.vala"
+                       _g_object_unref0 (n);
+#line 161 "../src/contacts-avatar.vala"
+                       return result;
+#line 1038 "contacts-avatar.c"
+               } else {
+                       FolksNameDetails* _tmp13_;
+                       FolksStructuredName* _tmp14_;
+                       FolksStructuredName* _tmp15_;
+#line 162 "../src/contacts-avatar.vala"
+                       _tmp13_ = n;
+#line 162 "../src/contacts-avatar.vala"
+                       _tmp14_ = folks_name_details_get_structured_name (_tmp13_);
+#line 162 "../src/contacts-avatar.vala"
+                       _tmp15_ = _tmp14_;
+#line 162 "../src/contacts-avatar.vala"
+                       if (_tmp15_ != NULL) {
+#line 1051 "contacts-avatar.c"
+                               FolksNameDetails* _tmp16_;
+                               FolksStructuredName* _tmp17_;
+                               FolksStructuredName* _tmp18_;
+                               gchar* _tmp19_;
+#line 163 "../src/contacts-avatar.vala"
+                               _tmp16_ = n;
+#line 163 "../src/contacts-avatar.vala"
+                               _tmp17_ = folks_name_details_get_structured_name (_tmp16_);
+#line 163 "../src/contacts-avatar.vala"
+                               _tmp18_ = _tmp17_;
+#line 163 "../src/contacts-avatar.vala"
+                               _tmp19_ = folks_structured_name_to_string (_tmp18_);
+#line 163 "../src/contacts-avatar.vala"
+                               result = _tmp19_;
+#line 163 "../src/contacts-avatar.vala"
+                               _g_object_unref0 (n);
+#line 163 "../src/contacts-avatar.vala"
+                               return result;
+#line 1070 "contacts-avatar.c"
+                       } else {
+                               FolksNameDetails* _tmp20_;
+                               const gchar* _tmp21_;
+                               const gchar* _tmp22_;
+#line 164 "../src/contacts-avatar.vala"
+                               _tmp20_ = n;
+#line 164 "../src/contacts-avatar.vala"
+                               _tmp21_ = folks_name_details_get_nickname (_tmp20_);
+#line 164 "../src/contacts-avatar.vala"
+                               _tmp22_ = _tmp21_;
+#line 164 "../src/contacts-avatar.vala"
+                               if (g_strcmp0 (_tmp22_, "") != 0) {
+#line 1083 "contacts-avatar.c"
+                                       FolksNameDetails* _tmp23_;
+                                       const gchar* _tmp24_;
+                                       const gchar* _tmp25_;
+                                       gchar* _tmp26_;
+#line 165 "../src/contacts-avatar.vala"
+                                       _tmp23_ = n;
+#line 165 "../src/contacts-avatar.vala"
+                                       _tmp24_ = folks_name_details_get_nickname (_tmp23_);
+#line 165 "../src/contacts-avatar.vala"
+                                       _tmp25_ = _tmp24_;
+#line 165 "../src/contacts-avatar.vala"
+                                       _tmp26_ = g_strdup (_tmp25_);
+#line 165 "../src/contacts-avatar.vala"
+                                       result = _tmp26_;
+#line 165 "../src/contacts-avatar.vala"
+                                       _g_object_unref0 (n);
+#line 165 "../src/contacts-avatar.vala"
+                                       return result;
+#line 1102 "contacts-avatar.c"
+                               }
+                       }
+               }
+       }
+#line 168 "../src/contacts-avatar.vala"
+       _tmp27_ = g_strdup ("");
+#line 168 "../src/contacts-avatar.vala"
+       result = _tmp27_;
+#line 168 "../src/contacts-avatar.vala"
+       _g_object_unref0 (n);
+#line 168 "../src/contacts-avatar.vala"
+       return result;
+#line 1115 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_class_init (ContactsAvatarClass * klass,
+                            gpointer klass_data)
+{
+#line 26 "../src/contacts-avatar.vala"
+       contacts_avatar_parent_class = g_type_class_peek_parent (klass);
+#line 26 "../src/contacts-avatar.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsAvatar_private_offset);
+#line 26 "../src/contacts-avatar.vala"
+       ((GtkWidgetClass *) klass)->draw = (gboolean (*) (GtkWidget*, cairo_t*)) contacts_avatar_real_draw;
+#line 26 "../src/contacts-avatar.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_avatar_finalize;
+#line 1130 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_instance_init (ContactsAvatar * self,
+                               gpointer klass)
+{
+#line 26 "../src/contacts-avatar.vala"
+       self->priv = contacts_avatar_get_instance_private (self);
+#line 28 "../src/contacts-avatar.vala"
+       self->priv->pixbuf = NULL;
+#line 29 "../src/contacts-avatar.vala"
+       self->priv->cache = NULL;
+#line 31 "../src/contacts-avatar.vala"
+       self->priv->individual = NULL;
+#line 34 "../src/contacts-avatar.vala"
+       self->priv->avatar_loaded = FALSE;
+#line 1147 "contacts-avatar.c"
+}
+
+static void
+contacts_avatar_finalize (GObject * obj)
+{
+       ContactsAvatar * self;
+#line 26 "../src/contacts-avatar.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_AVATAR, ContactsAvatar);
+#line 28 "../src/contacts-avatar.vala"
+       _g_object_unref0 (self->priv->pixbuf);
+#line 29 "../src/contacts-avatar.vala"
+       _g_object_unref0 (self->priv->cache);
+#line 31 "../src/contacts-avatar.vala"
+       _g_object_unref0 (self->priv->individual);
+#line 26 "../src/contacts-avatar.vala"
+       G_OBJECT_CLASS (contacts_avatar_parent_class)->finalize (obj);
+#line 1164 "contacts-avatar.c"
+}
+
+/**
+ * The Avatar of a Contact is responsible for showing an {@link Folks.Individual}'s
+ * avatar, or a fallback if it's not available.
+ */
+static GType
+contacts_avatar_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsAvatarClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_avatar_class_init, (GClassFinalizeFunc) NULL, NULL, 
sizeof (ContactsAvatar), 0, (GInstanceInitFunc) contacts_avatar_instance_init, NULL };
+       GType contacts_avatar_type_id;
+       contacts_avatar_type_id = g_type_register_static (gtk_drawing_area_get_type (), "ContactsAvatar", 
&g_define_type_info, 0);
+       ContactsAvatar_private_offset = g_type_add_instance_private (contacts_avatar_type_id, sizeof 
(ContactsAvatarPrivate));
+       return contacts_avatar_type_id;
+}
+
+GType
+contacts_avatar_get_type (void)
+{
+       static volatile gsize contacts_avatar_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_avatar_type_id__volatile)) {
+               GType contacts_avatar_type_id;
+               contacts_avatar_type_id = contacts_avatar_get_type_once ();
+               g_once_init_leave (&contacts_avatar_type_id__volatile, contacts_avatar_type_id);
+       }
+       return contacts_avatar_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c
new file mode 100644
index 0000000..d4724ab
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-editor.c
@@ -0,0 +1,9114 @@
+/* contacts-contact-editor.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-contact-editor.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <folks/folks.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include "contacts.h"
+#include <gee.h>
+#include <gio/gio.h>
+#include <float.h>
+#include <math.h>
+#include <atk/atk.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+#define CONTACTS_TYPE_ADDRESS_EDITOR (contacts_address_editor_get_type ())
+#define CONTACTS_ADDRESS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_ADDRESS_EDITOR, 
ContactsAddressEditor))
+#define CONTACTS_ADDRESS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_ADDRESS_EDITOR, ContactsAddressEditorClass))
+#define CONTACTS_IS_ADDRESS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_ADDRESS_EDITOR))
+#define CONTACTS_IS_ADDRESS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_ADDRESS_EDITOR))
+#define CONTACTS_ADDRESS_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_ADDRESS_EDITOR, ContactsAddressEditorClass))
+
+typedef struct _ContactsAddressEditor ContactsAddressEditor;
+typedef struct _ContactsAddressEditorClass ContactsAddressEditorClass;
+typedef struct _ContactsAddressEditorPrivate ContactsAddressEditorPrivate;
+enum  {
+       CONTACTS_ADDRESS_EDITOR_0_PROPERTY,
+       CONTACTS_ADDRESS_EDITOR_NUM_PROPERTIES
+};
+static GParamSpec* contacts_address_editor_properties[CONTACTS_ADDRESS_EDITOR_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+enum  {
+       CONTACTS_ADDRESS_EDITOR_CHANGED_SIGNAL,
+       CONTACTS_ADDRESS_EDITOR_NUM_SIGNALS
+};
+static guint contacts_address_editor_signals[CONTACTS_ADDRESS_EDITOR_NUM_SIGNALS] = {0};
+
+#define CONTACTS_TYPE_CONTACT_FORM (contacts_contact_form_get_type ())
+#define CONTACTS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactForm))
+#define CONTACTS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+#define CONTACTS_IS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_IS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_CONTACT_FORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+
+typedef struct _ContactsContactForm ContactsContactForm;
+typedef struct _ContactsContactFormClass ContactsContactFormClass;
+typedef struct _ContactsContactFormPrivate ContactsContactFormPrivate;
+
+#define CONTACTS_TYPE_CONTACT_EDITOR (contacts_contact_editor_get_type ())
+#define CONTACTS_CONTACT_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_EDITOR, 
ContactsContactEditor))
+#define CONTACTS_CONTACT_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditorClass))
+#define CONTACTS_IS_CONTACT_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_EDITOR))
+#define CONTACTS_IS_CONTACT_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_CONTACT_EDITOR))
+#define CONTACTS_CONTACT_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditorClass))
+
+typedef struct _ContactsContactEditor ContactsContactEditor;
+typedef struct _ContactsContactEditorClass ContactsContactEditorClass;
+typedef struct _ContactsContactEditorPrivate ContactsContactEditorPrivate;
+
+#define CONTACTS_TYPE_AVATAR (contacts_avatar_get_type ())
+#define CONTACTS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR, ContactsAvatar))
+#define CONTACTS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+#define CONTACTS_IS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_IS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_AVATAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+
+typedef struct _ContactsAvatar ContactsAvatar;
+typedef struct _ContactsAvatarClass ContactsAvatarClass;
+
+#define CONTACTS_CONTACT_EDITOR_TYPE_FIELD (contacts_contact_editor_field_get_type ())
+typedef struct _ContactsContactEditorField ContactsContactEditorField;
+
+#define CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA (contacts_contact_editor_row_data_get_type ())
+typedef struct _ContactsContactEditorRowData ContactsContactEditorRowData;
+enum  {
+       CONTACTS_CONTACT_EDITOR_0_PROPERTY,
+       CONTACTS_CONTACT_EDITOR_HAS_BIRTHDAY_ROW_PROPERTY,
+       CONTACTS_CONTACT_EDITOR_HAS_NICKNAME_ROW_PROPERTY,
+       CONTACTS_CONTACT_EDITOR_HAS_NOTES_ROW_PROPERTY,
+       CONTACTS_CONTACT_EDITOR_NUM_PROPERTIES
+};
+static GParamSpec* contacts_contact_editor_properties[CONTACTS_CONTACT_EDITOR_NUM_PROPERTIES];
+
+#define CONTACTS_TYPE_TYPECOMBO (contacts_typecombo_get_type ())
+#define CONTACTS_TYPECOMBO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPECOMBO, 
ContactsTypeCombo))
+#define CONTACTS_TYPECOMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_TYPECOMBO, 
ContactsTypeComboClass))
+#define CONTACTS_IS_TYPECOMBO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPECOMBO))
+#define CONTACTS_IS_TYPECOMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_TYPECOMBO))
+#define CONTACTS_TYPECOMBO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_TYPECOMBO, 
ContactsTypeComboClass))
+
+typedef struct _ContactsTypeCombo ContactsTypeCombo;
+typedef struct _ContactsTypeComboClass ContactsTypeComboClass;
+#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL)))
+typedef struct _Block10Data Block10Data;
+typedef struct _Block11Data Block11Data;
+typedef struct _Block12Data Block12Data;
+typedef void (*ContactsContactEditorAdjustingDateFn) (gpointer user_data);
+typedef struct _Block13Data Block13Data;
+typedef struct _Block14Data Block14Data;
+#define _contacts_contact_editor_field_free0(var) ((var == NULL) ? NULL : (var = 
(contacts_contact_editor_field_free (var), NULL)))
+#define _contacts_contact_editor_row_data_free0(var) ((var == NULL) ? NULL : (var = 
(contacts_contact_editor_row_data_free (var), NULL)))
+
+#define CONTACTS_CONTACT_EDITOR_TYPE_PROPERTY_DATA (contacts_contact_editor_property_data_get_type ())
+typedef struct _ContactsContactEditorPropertyData ContactsContactEditorPropertyData;
+
+#define CONTACTS_TYPE_AVATAR_SELECTOR (contacts_avatar_selector_get_type ())
+#define CONTACTS_AVATAR_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR_SELECTOR, 
ContactsAvatarSelector))
+#define CONTACTS_AVATAR_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_AVATAR_SELECTOR, ContactsAvatarSelectorClass))
+#define CONTACTS_IS_AVATAR_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR_SELECTOR))
+#define CONTACTS_IS_AVATAR_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_AVATAR_SELECTOR))
+#define CONTACTS_AVATAR_SELECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_AVATAR_SELECTOR, ContactsAvatarSelectorClass))
+
+typedef struct _ContactsAvatarSelector ContactsAvatarSelector;
+typedef struct _ContactsAvatarSelectorClass ContactsAvatarSelectorClass;
+
+struct _ContactsAddressEditor {
+       GtkBox parent_instance;
+       ContactsAddressEditorPrivate * priv;
+       GtkEntry* entries[7];
+       FolksPostalAddressFieldDetails* details;
+};
+
+struct _ContactsAddressEditorClass {
+       GtkBoxClass parent_class;
+};
+
+struct _ContactsContactForm {
+       GtkGrid parent_instance;
+       ContactsContactFormPrivate * priv;
+       FolksIndividual* individual;
+       ContactsStore* store;
+       GtkGrid* container_grid;
+       gint last_row;
+};
+
+struct _ContactsContactFormClass {
+       GtkGridClass parent_class;
+};
+
+struct _ContactsContactEditor {
+       ContactsContactForm parent_instance;
+       ContactsContactEditorPrivate * priv;
+       GtkButton* linked_button;
+       GtkButton* remove_button;
+};
+
+struct _ContactsContactEditorClass {
+       ContactsContactFormClass parent_class;
+};
+
+struct _ContactsContactEditorRowData {
+       FolksAbstractFieldDetails* details;
+};
+
+struct _ContactsContactEditorField {
+       gboolean changed;
+       GeeHashMap* rows;
+};
+
+struct _ContactsContactEditorPrivate {
+       GtkWidget* focus_widget;
+       GtkEntry* name_entry;
+       ContactsAvatar* avatar;
+       GtkMenuButton* add_detail_button;
+       GeeHashMap* writable_personas;
+       gboolean _has_birthday_row;
+       gboolean _has_nickname_row;
+       gboolean _has_notes_row;
+};
+
+struct _Block10Data {
+       int _ref_count_;
+       ContactsContactEditor* self;
+       ContactsTypeCombo* combo;
+       GtkEntry* value_entry;
+       GtkButton* delete_button;
+};
+
+struct _Block11Data {
+       int _ref_count_;
+       ContactsContactEditor* self;
+       GtkEntry* value_entry;
+       GtkButton* delete_button;
+};
+
+struct _Block12Data {
+       int _ref_count_;
+       ContactsContactEditor* self;
+       GtkScrolledWindow* sw;
+       GtkButton* delete_button;
+};
+
+struct _Block13Data {
+       int _ref_count_;
+       ContactsContactEditor* self;
+       GtkSpinButton* day_spin;
+       GtkComboBoxText* month_combo;
+       GtkSpinButton* year_spin;
+       GtkButton* delete_button;
+       ContactsContactEditorAdjustingDateFn fn;
+       gpointer fn_target;
+       GDestroyNotify fn_target_destroy_notify;
+};
+
+struct _Block14Data {
+       int _ref_count_;
+       ContactsContactEditor* self;
+       ContactsTypeCombo* combo;
+       ContactsAddressEditor* value_address;
+       GtkButton* delete_button;
+};
+
+struct _ContactsContactEditorPropertyData {
+       FolksPersona* persona;
+       GValue value;
+};
+
+static gpointer contacts_address_editor_parent_class = NULL;
+extern gchar** contacts_address_editor_postal_element_names;
+extern gint contacts_address_editor_postal_element_names_length1;
+gchar** contacts_address_editor_postal_element_names = NULL;
+gint contacts_address_editor_postal_element_names_length1 = 0;
+static gint ContactsContactEditor_private_offset;
+static gpointer contacts_contact_editor_parent_class = NULL;
+
+GType contacts_address_editor_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAddressEditor, g_object_unref)
+ContactsAddressEditor* contacts_address_editor_new (FolksPostalAddressFieldDetails* _details);
+ContactsAddressEditor* contacts_address_editor_construct (GType object_type,
+                                                          FolksPostalAddressFieldDetails* _details);
+static void _____lambda37_ (ContactsAddressEditor* self);
+static void ______lambda37__gtk_editable_changed (GtkEditable* _sender,
+                                           gpointer self);
+static void contacts_address_editor_real_grab_focus (GtkWidget* base);
+static void contacts_address_editor_finalize (GObject * obj);
+static GType contacts_address_editor_get_type_once (void);
+GType contacts_contact_form_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactForm, g_object_unref)
+GType contacts_contact_editor_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactEditor, g_object_unref)
+GType contacts_avatar_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatar, g_object_unref)
+static GType contacts_contact_editor_field_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+static GType contacts_contact_editor_row_data_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+static ContactsContactEditorRowData* contacts_contact_editor_row_data_dup (const 
ContactsContactEditorRowData* self);
+static void contacts_contact_editor_row_data_free (ContactsContactEditorRowData* self);
+static void contacts_contact_editor_row_data_copy (const ContactsContactEditorRowData* self,
+                                            ContactsContactEditorRowData* dest);
+static void contacts_contact_editor_row_data_destroy (ContactsContactEditorRowData* self);
+static ContactsContactEditorField* contacts_contact_editor_field_dup (const ContactsContactEditorField* 
self);
+static void contacts_contact_editor_field_free (ContactsContactEditorField* self);
+static void contacts_contact_editor_field_copy (const ContactsContactEditorField* self,
+                                         ContactsContactEditorField* dest);
+static void contacts_contact_editor_field_destroy (ContactsContactEditorField* self);
+ContactsContactEditor* contacts_contact_editor_new (FolksIndividual* individual,
+                                                    ContactsStore* store,
+                                                    GActionGroup* editor_actions);
+ContactsContactEditor* contacts_contact_editor_construct (GType object_type,
+                                                          FolksIndividual* individual,
+                                                          ContactsStore* store,
+                                                          GActionGroup* editor_actions);
+ContactsContactForm* contacts_contact_form_construct (GType object_type);
+static void contacts_contact_editor_create_avatar_button (ContactsContactEditor* self);
+static void contacts_contact_editor_create_name_entry (ContactsContactEditor* self);
+static void contacts_contact_editor_fill_in_contact (ContactsContactEditor* self);
+static void contacts_contact_editor_fill_in_empty (ContactsContactEditor* self);
+GtkLabel* contacts_contact_form_create_persona_store_label (ContactsContactForm* self,
+                                                            FolksPersona* p);
+gchar** contacts_contact_form_sort_persona_properties (ContactsContactForm* self,
+                                                       gchar** props,
+                                                       gint props_length1,
+                                                       gint* result_length1);
+static void contacts_contact_editor_add_edit_row (ContactsContactEditor* self,
+                                           FolksPersona* p,
+                                           const gchar* prop_name,
+                                           gint* row,
+                                           gboolean add_empty,
+                                           const gchar* type);
+void contacts_contact_editor_add_new_row_for_property (ContactsContactEditor* self,
+                                                       FolksPersona* persona,
+                                                       const gchar* prop_name,
+                                                       const gchar* type);
+static void contacts_contact_editor_get_value_from_emails (ContactsContactEditor* self,
+                                                    GeeHashMap* rows,
+                                                    GValue* result);
+GType contacts_typecombo_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeCombo, g_object_unref)
+ContactsTypeDescriptor* contacts_typecombo_get_active_descriptor (ContactsTypeCombo* self);
+static void contacts_contact_editor_get_value_from_phones (ContactsContactEditor* self,
+                                                    GeeHashMap* rows,
+                                                    GValue* result);
+static void contacts_contact_editor_get_value_from_urls (ContactsContactEditor* self,
+                                                  GeeHashMap* rows,
+                                                  GValue* result);
+static void contacts_contact_editor_get_value_from_nickname (ContactsContactEditor* self,
+                                                      GeeHashMap* rows,
+                                                      GValue* result);
+static void contacts_contact_editor_get_value_from_birthday (ContactsContactEditor* self,
+                                                      GeeHashMap* rows,
+                                                      GValue* result);
+static void contacts_contact_editor_get_value_from_notes (ContactsContactEditor* self,
+                                                   GeeHashMap* rows,
+                                                   GValue* result);
+static void contacts_contact_editor_get_value_from_addresses (ContactsContactEditor* self,
+                                                       GeeHashMap* rows,
+                                                       GValue* result);
+static void contacts_contact_editor_set_field_changed (ContactsContactEditor* self,
+                                                gint row);
+static void contacts_contact_editor_remove_row (ContactsContactEditor* self,
+                                         gint row);
+static void contacts_contact_editor_attach_row_with_entry (ContactsContactEditor* self,
+                                                    gint row,
+                                                    ContactsTypeSet* type_set,
+                                                    FolksAbstractFieldDetails* details,
+                                                    const gchar* value,
+                                                    const gchar* type);
+static Block10Data* block10_data_ref (Block10Data* _data10_);
+static void block10_data_unref (void * _userdata_);
+ContactsTypeCombo* contacts_typecombo_new (ContactsTypeSet* type_set);
+ContactsTypeCombo* contacts_typecombo_construct (GType object_type,
+                                                 ContactsTypeSet* type_set);
+void contacts_typecombo_set_active_from_field_details (ContactsTypeCombo* self,
+                                                       FolksAbstractFieldDetails* details);
+void contacts_typecombo_set_active_from_vcard_type (ContactsTypeCombo* self,
+                                                    const gchar* type);
+static void __lambda24_ (Block10Data* _data10_,
+                  GtkComboBox* c);
+static gint contacts_contact_editor_get_current_row (ContactsContactEditor* self,
+                                              GtkWidget* child);
+static void ___lambda24__gtk_combo_box_changed (GtkComboBox* _sender,
+                                         gpointer self);
+static void __lambda25_ (Block10Data* _data10_);
+static void ___lambda25__gtk_editable_changed (GtkEditable* _sender,
+                                        gpointer self);
+static void __lambda26_ (Block10Data* _data10_);
+static void ___lambda26__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void contacts_contact_editor_attach_row_with_entry_labeled (ContactsContactEditor* self,
+                                                            const gchar* title,
+                                                            FolksAbstractFieldDetails* details,
+                                                            const gchar* value,
+                                                            gint row);
+static Block11Data* block11_data_ref (Block11Data* _data11_);
+static void block11_data_unref (void * _userdata_);
+static void __lambda27_ (Block11Data* _data11_);
+static void ___lambda27__gtk_editable_changed (GtkEditable* _sender,
+                                        gpointer self);
+static void __lambda28_ (Block11Data* _data11_);
+static void ___lambda28__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void contacts_contact_editor_attach_row_with_text_labeled (ContactsContactEditor* self,
+                                                           const gchar* title,
+                                                           FolksAbstractFieldDetails* details,
+                                                           const gchar* value,
+                                                           gint row);
+static Block12Data* block12_data_ref (Block12Data* _data12_);
+static void block12_data_unref (void * _userdata_);
+static void __lambda35_ (Block12Data* _data12_);
+static void ___lambda35__gtk_text_buffer_changed (GtkTextBuffer* _sender,
+                                           gpointer self);
+static void __lambda36_ (Block12Data* _data12_);
+static void contacts_contact_editor_set_has_notes_row (ContactsContactEditor* self,
+                                                gboolean value);
+static void ___lambda36__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void contacts_contact_editor_attach_row_for_birthday (ContactsContactEditor* self,
+                                                      const gchar* title,
+                                                      FolksAbstractFieldDetails* details,
+                                                      GDateTime* birthday,
+                                                      gint row);
+static Block13Data* block13_data_ref (Block13Data* _data13_);
+static void block13_data_unref (void * _userdata_);
+static void __lambda30_ (Block13Data* _data13_);
+static gboolean _vala_int_array_contains (gint * stack,
+                                   gint stack_length,
+                                   const gint needle);
+static void ___lambda30__contacts_contact_editor_adjusting_date_fn (gpointer self);
+static void __lambda31_ (Block13Data* _data13_);
+static void ___lambda31__gtk_editable_changed (GtkEditable* _sender,
+                                        gpointer self);
+static void __lambda32_ (Block13Data* _data13_);
+static void ___lambda32__gtk_combo_box_changed (GtkComboBox* _sender,
+                                         gpointer self);
+static void __lambda33_ (Block13Data* _data13_);
+static void ___lambda33__gtk_editable_changed (GtkEditable* _sender,
+                                        gpointer self);
+static void __lambda34_ (Block13Data* _data13_);
+static void contacts_contact_editor_set_has_birthday_row (ContactsContactEditor* self,
+                                                   gboolean value);
+static void ___lambda34__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void contacts_contact_editor_attach_row_for_address (ContactsContactEditor* self,
+                                                     gint row,
+                                                     ContactsTypeSet* type_set,
+                                                     FolksPostalAddressFieldDetails* details,
+                                                     const gchar* type);
+static Block14Data* block14_data_ref (Block14Data* _data14_);
+static void block14_data_unref (void * _userdata_);
+static void __lambda38_ (Block14Data* _data14_);
+static void ___lambda38__gtk_combo_box_changed (GtkComboBox* _sender,
+                                         gpointer self);
+static void __lambda39_ (Block14Data* _data14_);
+static void ___lambda39__contacts_address_editor_changed (ContactsAddressEditor* _sender,
+                                                   gpointer self);
+static void __lambda40_ (Block14Data* _data14_);
+static void ___lambda40__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void contacts_contact_editor_set_has_nickname_row (ContactsContactEditor* self,
+                                                   gboolean value);
+static void ____lambda29_ (ContactsContactEditor* self);
+static void _____lambda29__gtk_button_clicked (GtkButton* _sender,
+                                        gpointer self);
+static void contacts_contact_editor_insert_row_at (ContactsContactEditor* self,
+                                            gint idx);
+static void contacts_contact_editor_on_container_grid_size_allocate (ContactsContactEditor* self,
+                                                              GtkAllocation* alloc);
+GType contacts_contact_editor_property_data_get_type (void) G_GNUC_CONST;
+ContactsContactEditorPropertyData* contacts_contact_editor_property_data_dup (const 
ContactsContactEditorPropertyData* self);
+void contacts_contact_editor_property_data_free (ContactsContactEditorPropertyData* self);
+void contacts_contact_editor_property_data_copy (const ContactsContactEditorPropertyData* self,
+                                                 ContactsContactEditorPropertyData* dest);
+void contacts_contact_editor_property_data_destroy (ContactsContactEditorPropertyData* self);
+GeeHashMap* contacts_contact_editor_properties_changed (ContactsContactEditor* self);
+#define PROFILE_SIZE 128
+ContactsAvatar* contacts_avatar_new (gint size,
+                                     FolksIndividual* individual);
+ContactsAvatar* contacts_avatar_construct (GType object_type,
+                                           gint size,
+                                           FolksIndividual* individual);
+static void contacts_contact_editor_on_avatar_button_clicked (ContactsContactEditor* self,
+                                                       GtkButton* avatar_button);
+static void _contacts_contact_editor_on_avatar_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                           gpointer self);
+GType contacts_avatar_selector_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatarSelector, g_object_unref)
+ContactsAvatarSelector* contacts_avatar_selector_new (GtkWidget* relative,
+                                                      FolksIndividual* individual);
+ContactsAvatarSelector* contacts_avatar_selector_construct (GType object_type,
+                                                            GtkWidget* relative,
+                                                            FolksIndividual* individual);
+static void __lambda22_ (ContactsContactEditor* self,
+                  GIcon* icon);
+void contacts_avatar_set_pixbuf (ContactsAvatar* self,
+                                 GdkPixbuf* a_pixbuf);
+static void ___lambda22__contacts_avatar_selector_set_avatar (ContactsAvatarSelector* _sender,
+                                                       GIcon* avatar_icon,
+                                                       gpointer self);
+gboolean contacts_contact_editor_avatar_changed (ContactsContactEditor* self);
+void contacts_contact_editor_get_avatar_value (ContactsContactEditor* self,
+                                               GValue* result);
+static void __lambda23_ (ContactsContactEditor* self);
+static void ___lambda23__gtk_editable_changed (GtkEditable* _sender,
+                                        gpointer self);
+gboolean contacts_contact_editor_name_changed (ContactsContactEditor* self);
+void contacts_contact_editor_get_full_name_value (ContactsContactEditor* self,
+                                                  GValue* result);
+gboolean contacts_contact_editor_get_has_birthday_row (ContactsContactEditor* self);
+gboolean contacts_contact_editor_get_has_nickname_row (ContactsContactEditor* self);
+gboolean contacts_contact_editor_get_has_notes_row (ContactsContactEditor* self);
+static GObject * contacts_contact_editor_constructor (GType type,
+                                               guint n_construct_properties,
+                                               GObjectConstructParam * construct_properties);
+static void _contacts_contact_editor_on_container_grid_size_allocate_gtk_widget_size_allocate (GtkWidget* 
_sender,
+                                                                                        GtkAllocation* 
allocation,
+                                                                                        gpointer self);
+static void contacts_contact_editor_finalize (GObject * obj);
+static GType contacts_contact_editor_get_type_once (void);
+static void _vala_contacts_contact_editor_get_property (GObject * object,
+                                                 guint property_id,
+                                                 GValue * value,
+                                                 GParamSpec * pspec);
+static void _vala_contacts_contact_editor_set_property (GObject * object,
+                                                 guint property_id,
+                                                 const GValue * value,
+                                                 GParamSpec * pspec);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+
+const gchar* CONTACTS_ADDRESS_EDITOR_postal_element_props[7] = {"street", "extension", "locality", "region", 
"postal_code", "po_box", "country"};
+static const gchar* CONTACTS_CONTACT_EDITOR_DEFAULT_PROPS_NEW_CONTACT[3] = {"email-addresses.personal", 
"phone-numbers.cell", "postal-addresses.home"};
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 35 "../src/contacts-contact-editor.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 514 "contacts-contact-editor.c"
+}
+
+static void
+_____lambda37_ (ContactsAddressEditor* self)
+{
+#line 52 "../src/contacts-contact-editor.vala"
+       g_signal_emit (self, contacts_address_editor_signals[CONTACTS_ADDRESS_EDITOR_CHANGED_SIGNAL], 0);
+#line 522 "contacts-contact-editor.c"
+}
+
+static void
+______lambda37__gtk_editable_changed (GtkEditable* _sender,
+                                      gpointer self)
+{
+#line 51 "../src/contacts-contact-editor.vala"
+       _____lambda37_ ((ContactsAddressEditor*) self);
+#line 531 "contacts-contact-editor.c"
+}
+
+ContactsAddressEditor*
+contacts_address_editor_construct (GType object_type,
+                                   FolksPostalAddressFieldDetails* _details)
+{
+       ContactsAddressEditor * self = NULL;
+       FolksPostalAddressFieldDetails* _tmp0_;
+#line 31 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (_details != NULL, NULL);
+#line 31 "../src/contacts-contact-editor.vala"
+       self = (ContactsAddressEditor*) g_object_new (object_type, NULL);
+#line 32 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) self, TRUE);
+#line 33 "../src/contacts-contact-editor.vala"
+       gtk_orientable_set_orientation ((GtkOrientable*) self, GTK_ORIENTATION_VERTICAL);
+#line 35 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _g_object_ref0 (_details);
+#line 35 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->details);
+#line 35 "../src/contacts-contact-editor.vala"
+       self->details = _tmp0_;
+#line 554 "contacts-contact-editor.c"
+       {
+               gint i = 0;
+#line 37 "../src/contacts-contact-editor.vala"
+               i = 0;
+#line 559 "contacts-contact-editor.c"
+               {
+                       gboolean _tmp1_ = FALSE;
+#line 37 "../src/contacts-contact-editor.vala"
+                       _tmp1_ = TRUE;
+#line 37 "../src/contacts-contact-editor.vala"
+                       while (TRUE) {
+#line 566 "contacts-contact-editor.c"
+                               gchar* postal_part = NULL;
+                               FolksPostalAddressFieldDetails* _tmp3_;
+                               gconstpointer _tmp4_;
+                               FolksPostalAddress* _tmp5_;
+                               const gchar* _tmp6_;
+                               gchar* _tmp7_ = NULL;
+                               GtkEntry* _tmp8_;
+                               GtkEntry* _tmp9_;
+                               GtkEntry* _tmp10_;
+                               gchar** _tmp11_;
+                               gint _tmp11__length1;
+                               const gchar* _tmp12_;
+                               const gchar* _tmp13_;
+                               GtkEntry* _tmp16_;
+                               GtkStyleContext* _tmp17_;
+                               GtkEntry* _tmp18_;
+                               GtkEntry* _tmp19_;
+#line 37 "../src/contacts-contact-editor.vala"
+                               if (!_tmp1_) {
+#line 586 "contacts-contact-editor.c"
+                                       gint _tmp2_;
+#line 37 "../src/contacts-contact-editor.vala"
+                                       _tmp2_ = i;
+#line 37 "../src/contacts-contact-editor.vala"
+                                       i = _tmp2_ + 1;
+#line 592 "contacts-contact-editor.c"
+                               }
+#line 37 "../src/contacts-contact-editor.vala"
+                               _tmp1_ = FALSE;
+#line 37 "../src/contacts-contact-editor.vala"
+                               if (!(i < 7)) {
+#line 37 "../src/contacts-contact-editor.vala"
+                                       break;
+#line 600 "contacts-contact-editor.c"
+                               }
+#line 39 "../src/contacts-contact-editor.vala"
+                               _tmp3_ = self->details;
+#line 39 "../src/contacts-contact-editor.vala"
+                               _tmp4_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp3_);
+#line 39 "../src/contacts-contact-editor.vala"
+                               _tmp5_ = _tmp4_;
+#line 39 "../src/contacts-contact-editor.vala"
+                               _tmp6_ = CONTACTS_ADDRESS_EDITOR_postal_element_props[i];
+#line 39 "../src/contacts-contact-editor.vala"
+                               g_object_get ((GObject*) ((FolksPostalAddress*) _tmp5_), _tmp6_, &_tmp7_, 
NULL);
+#line 39 "../src/contacts-contact-editor.vala"
+                               _g_free0 (postal_part);
+#line 39 "../src/contacts-contact-editor.vala"
+                               postal_part = _tmp7_;
+#line 41 "../src/contacts-contact-editor.vala"
+                               _tmp8_ = (GtkEntry*) gtk_entry_new ();
+#line 41 "../src/contacts-contact-editor.vala"
+                               g_object_ref_sink (_tmp8_);
+#line 41 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (self->entries[i]);
+#line 41 "../src/contacts-contact-editor.vala"
+                               self->entries[i] = _tmp8_;
+#line 42 "../src/contacts-contact-editor.vala"
+                               _tmp9_ = self->entries[i];
+#line 42 "../src/contacts-contact-editor.vala"
+                               gtk_widget_set_hexpand ((GtkWidget*) _tmp9_, TRUE);
+#line 43 "../src/contacts-contact-editor.vala"
+                               _tmp10_ = self->entries[i];
+#line 43 "../src/contacts-contact-editor.vala"
+                               _tmp11_ = contacts_address_editor_postal_element_names;
+#line 43 "../src/contacts-contact-editor.vala"
+                               _tmp11__length1 = contacts_address_editor_postal_element_names_length1;
+#line 43 "../src/contacts-contact-editor.vala"
+                               _tmp12_ = _tmp11_[i];
+#line 43 "../src/contacts-contact-editor.vala"
+                               g_object_set ((GObject*) _tmp10_, "placeholder-text", _tmp12_, NULL);
+#line 45 "../src/contacts-contact-editor.vala"
+                               _tmp13_ = postal_part;
+#line 45 "../src/contacts-contact-editor.vala"
+                               if (_tmp13_ != NULL) {
+#line 642 "contacts-contact-editor.c"
+                                       GtkEntry* _tmp14_;
+                                       const gchar* _tmp15_;
+#line 46 "../src/contacts-contact-editor.vala"
+                                       _tmp14_ = self->entries[i];
+#line 46 "../src/contacts-contact-editor.vala"
+                                       _tmp15_ = postal_part;
+#line 46 "../src/contacts-contact-editor.vala"
+                                       gtk_entry_set_text (_tmp14_, _tmp15_);
+#line 651 "contacts-contact-editor.c"
+                               }
+#line 48 "../src/contacts-contact-editor.vala"
+                               _tmp16_ = self->entries[i];
+#line 48 "../src/contacts-contact-editor.vala"
+                               _tmp17_ = gtk_widget_get_style_context ((GtkWidget*) _tmp16_);
+#line 48 "../src/contacts-contact-editor.vala"
+                               gtk_style_context_add_class (_tmp17_, "contacts-postal-entry");
+#line 49 "../src/contacts-contact-editor.vala"
+                               _tmp18_ = self->entries[i];
+#line 49 "../src/contacts-contact-editor.vala"
+                               gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp18_);
+#line 51 "../src/contacts-contact-editor.vala"
+                               _tmp19_ = self->entries[i];
+#line 51 "../src/contacts-contact-editor.vala"
+                               g_signal_connect_object ((GtkEditable*) _tmp19_, "changed", (GCallback) 
______lambda37__gtk_editable_changed, self, 0);
+#line 37 "../src/contacts-contact-editor.vala"
+                               _g_free0 (postal_part);
+#line 669 "contacts-contact-editor.c"
+                       }
+               }
+       }
+#line 31 "../src/contacts-contact-editor.vala"
+       return self;
+#line 675 "contacts-contact-editor.c"
+}
+
+ContactsAddressEditor*
+contacts_address_editor_new (FolksPostalAddressFieldDetails* _details)
+{
+#line 31 "../src/contacts-contact-editor.vala"
+       return contacts_address_editor_construct (CONTACTS_TYPE_ADDRESS_EDITOR, _details);
+#line 683 "contacts-contact-editor.c"
+}
+
+static void
+contacts_address_editor_real_grab_focus (GtkWidget* base)
+{
+       ContactsAddressEditor * self;
+       GtkEntry* _tmp0_;
+#line 57 "../src/contacts-contact-editor.vala"
+       self = (ContactsAddressEditor*) base;
+#line 58 "../src/contacts-contact-editor.vala"
+       _tmp0_ = self->entries[0];
+#line 58 "../src/contacts-contact-editor.vala"
+       gtk_widget_grab_focus ((GtkWidget*) _tmp0_);
+#line 697 "contacts-contact-editor.c"
+}
+
+static void
+contacts_address_editor_class_init (ContactsAddressEditorClass * klass,
+                                    gpointer klass_data)
+{
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       gchar* _tmp4_;
+       gchar* _tmp5_;
+       gchar* _tmp6_;
+       gchar** _tmp7_;
+#line 22 "../src/contacts-contact-editor.vala"
+       contacts_address_editor_parent_class = g_type_class_peek_parent (klass);
+#line 22 "../src/contacts-contact-editor.vala"
+       ((GtkWidgetClass *) klass)->grab_focus = (void (*) (GtkWidget*)) 
contacts_address_editor_real_grab_focus;
+#line 22 "../src/contacts-contact-editor.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_address_editor_finalize;
+#line 22 "../src/contacts-contact-editor.vala"
+       contacts_address_editor_signals[CONTACTS_ADDRESS_EDITOR_CHANGED_SIGNAL] = g_signal_new ("changed", 
CONTACTS_TYPE_ADDRESS_EDITOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 
0);
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp0_ = g_strdup (_ ("Street"));
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp1_ = g_strdup (_ ("Extension"));
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp2_ = g_strdup (_ ("City"));
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp3_ = g_strdup (_ ("State/Province"));
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp4_ = g_strdup (_ ("Zip/Postal Code"));
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp5_ = g_strdup (_ ("PO box"));
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp6_ = g_strdup (_ ("Country"));
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_ = g_new0 (gchar*, 7 + 1);
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_[0] = _tmp0_;
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_[1] = _tmp1_;
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_[2] = _tmp2_;
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_[3] = _tmp3_;
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_[4] = _tmp4_;
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_[5] = _tmp5_;
+#line 27 "../src/contacts-contact-editor.vala"
+       _tmp7_[6] = _tmp6_;
+#line 27 "../src/contacts-contact-editor.vala"
+       contacts_address_editor_postal_element_names = _tmp7_;
+#line 27 "../src/contacts-contact-editor.vala"
+       contacts_address_editor_postal_element_names_length1 = 7;
+#line 754 "contacts-contact-editor.c"
+}
+
+static void
+contacts_address_editor_instance_init (ContactsAddressEditor * self,
+                                       gpointer klass)
+{
+}
+
+static void
+contacts_address_editor_finalize (GObject * obj)
+{
+       ContactsAddressEditor * self;
+#line 22 "../src/contacts-contact-editor.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_ADDRESS_EDITOR, ContactsAddressEditor);
+#line 23 "../src/contacts-contact-editor.vala"
+       _vala_array_destroy (self->entries, 7, (GDestroyNotify) g_object_unref);
+#line 24 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->details);
+#line 22 "../src/contacts-contact-editor.vala"
+       G_OBJECT_CLASS (contacts_address_editor_parent_class)->finalize (obj);
+#line 775 "contacts-contact-editor.c"
+}
+
+static GType
+contacts_address_editor_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsAddressEditorClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_address_editor_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsAddressEditor), 0, (GInstanceInitFunc) contacts_address_editor_instance_init, 
NULL };
+       GType contacts_address_editor_type_id;
+       contacts_address_editor_type_id = g_type_register_static (gtk_box_get_type (), 
"ContactsAddressEditor", &g_define_type_info, 0);
+       return contacts_address_editor_type_id;
+}
+
+GType
+contacts_address_editor_get_type (void)
+{
+       static volatile gsize contacts_address_editor_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_address_editor_type_id__volatile)) {
+               GType contacts_address_editor_type_id;
+               contacts_address_editor_type_id = contacts_address_editor_get_type_once ();
+               g_once_init_leave (&contacts_address_editor_type_id__volatile, 
contacts_address_editor_type_id);
+       }
+       return contacts_address_editor_type_id__volatile;
+}
+
+static inline gpointer
+contacts_contact_editor_get_instance_private (ContactsContactEditor* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsContactEditor_private_offset);
+}
+
+ContactsContactEditor*
+contacts_contact_editor_construct (GType object_type,
+                                   FolksIndividual* individual,
+                                   ContactsStore* store,
+                                   GActionGroup* editor_actions)
+{
+       ContactsContactEditor * self = NULL;
+       ContactsStore* _tmp0_;
+       FolksIndividual* _tmp1_;
+       GtkMenuButton* _tmp2_;
+       GtkPopover* _tmp3_;
+       GtkGrid* _tmp12_;
+#line 123 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (store != NULL, NULL);
+#line 123 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (editor_actions != NULL, NULL);
+#line 123 "../src/contacts-contact-editor.vala"
+       self = (ContactsContactEditor*) contacts_contact_form_construct (object_type);
+#line 124 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _g_object_ref0 (store);
+#line 124 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (((ContactsContactForm*) self)->store);
+#line 124 "../src/contacts-contact-editor.vala"
+       ((ContactsContactForm*) self)->store = _tmp0_;
+#line 125 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _g_object_ref0 (individual);
+#line 125 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (((ContactsContactForm*) self)->individual);
+#line 125 "../src/contacts-contact-editor.vala"
+       ((ContactsContactForm*) self)->individual = _tmp1_;
+#line 127 "../src/contacts-contact-editor.vala"
+       _tmp2_ = self->priv->add_detail_button;
+#line 127 "../src/contacts-contact-editor.vala"
+       _tmp3_ = gtk_menu_button_get_popover (_tmp2_);
+#line 127 "../src/contacts-contact-editor.vala"
+       gtk_widget_insert_action_group ((GtkWidget*) _tmp3_, "edit", editor_actions);
+#line 129 "../src/contacts-contact-editor.vala"
+       if (individual != NULL) {
+#line 843 "contacts-contact-editor.c"
+               GtkButton* _tmp4_;
+               GtkButton* _tmp5_;
+               GeeSet* _tmp6_;
+               GeeSet* _tmp7_;
+               gint _tmp8_;
+               gint _tmp9_;
+#line 130 "../src/contacts-contact-editor.vala"
+               _tmp4_ = self->remove_button;
+#line 130 "../src/contacts-contact-editor.vala"
+               gtk_widget_set_sensitive ((GtkWidget*) _tmp4_, contacts_utils_can_remove_personas 
(individual));
+#line 131 "../src/contacts-contact-editor.vala"
+               _tmp5_ = self->linked_button;
+#line 131 "../src/contacts-contact-editor.vala"
+               _tmp6_ = folks_individual_get_personas (individual);
+#line 131 "../src/contacts-contact-editor.vala"
+               _tmp7_ = _tmp6_;
+#line 131 "../src/contacts-contact-editor.vala"
+               _tmp8_ = gee_collection_get_size ((GeeCollection*) _tmp7_);
+#line 131 "../src/contacts-contact-editor.vala"
+               _tmp9_ = _tmp8_;
+#line 131 "../src/contacts-contact-editor.vala"
+               gtk_widget_set_sensitive ((GtkWidget*) _tmp5_, _tmp9_ > 1);
+#line 866 "contacts-contact-editor.c"
+       } else {
+               GtkButton* _tmp10_;
+               GtkButton* _tmp11_;
+#line 133 "../src/contacts-contact-editor.vala"
+               _tmp10_ = self->remove_button;
+#line 133 "../src/contacts-contact-editor.vala"
+               gtk_widget_hide ((GtkWidget*) _tmp10_);
+#line 134 "../src/contacts-contact-editor.vala"
+               _tmp11_ = self->linked_button;
+#line 134 "../src/contacts-contact-editor.vala"
+               gtk_widget_hide ((GtkWidget*) _tmp11_);
+#line 878 "contacts-contact-editor.c"
+       }
+#line 137 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_create_avatar_button (self);
+#line 138 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_create_name_entry (self);
+#line 140 "../src/contacts-contact-editor.vala"
+       if (individual != NULL) {
+#line 141 "../src/contacts-contact-editor.vala"
+               contacts_contact_editor_fill_in_contact (self);
+#line 888 "contacts-contact-editor.c"
+       } else {
+#line 143 "../src/contacts-contact-editor.vala"
+               contacts_contact_editor_fill_in_empty (self);
+#line 892 "contacts-contact-editor.c"
+       }
+#line 145 "../src/contacts-contact-editor.vala"
+       _tmp12_ = ((ContactsContactForm*) self)->container_grid;
+#line 145 "../src/contacts-contact-editor.vala"
+       gtk_widget_show_all ((GtkWidget*) _tmp12_);
+#line 123 "../src/contacts-contact-editor.vala"
+       return self;
+#line 900 "contacts-contact-editor.c"
+}
+
+ContactsContactEditor*
+contacts_contact_editor_new (FolksIndividual* individual,
+                             ContactsStore* store,
+                             GActionGroup* editor_actions)
+{
+#line 123 "../src/contacts-contact-editor.vala"
+       return contacts_contact_editor_construct (CONTACTS_TYPE_CONTACT_EDITOR, individual, store, 
editor_actions);
+#line 910 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_fill_in_contact (ContactsContactEditor* self)
+{
+       gint i = 0;
+       gint last_store_position = 0;
+       gboolean is_first_persona = FALSE;
+       GeeList* personas = NULL;
+       FolksIndividual* _tmp0_;
+       GeeList* _tmp1_;
+#line 148 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 149 "../src/contacts-contact-editor.vala"
+       i = 3;
+#line 150 "../src/contacts-contact-editor.vala"
+       last_store_position = 0;
+#line 151 "../src/contacts-contact-editor.vala"
+       is_first_persona = TRUE;
+#line 153 "../src/contacts-contact-editor.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->individual;
+#line 153 "../src/contacts-contact-editor.vala"
+       _tmp1_ = contacts_utils_get_personas_for_display (_tmp0_);
+#line 153 "../src/contacts-contact-editor.vala"
+       personas = _tmp1_;
+#line 936 "contacts-contact-editor.c"
+       {
+               GeeList* _p_list = NULL;
+               GeeList* _tmp2_;
+               GeeList* _tmp3_;
+               gint _p_size = 0;
+               GeeList* _tmp4_;
+               gint _tmp5_;
+               gint _tmp6_;
+               gint _p_index = 0;
+#line 154 "../src/contacts-contact-editor.vala"
+               _tmp2_ = personas;
+#line 154 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _g_object_ref0 (_tmp2_);
+#line 154 "../src/contacts-contact-editor.vala"
+               _p_list = _tmp3_;
+#line 154 "../src/contacts-contact-editor.vala"
+               _tmp4_ = _p_list;
+#line 154 "../src/contacts-contact-editor.vala"
+               _tmp5_ = gee_collection_get_size ((GeeCollection*) _tmp4_);
+#line 154 "../src/contacts-contact-editor.vala"
+               _tmp6_ = _tmp5_;
+#line 154 "../src/contacts-contact-editor.vala"
+               _p_size = _tmp6_;
+#line 154 "../src/contacts-contact-editor.vala"
+               _p_index = -1;
+#line 154 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 964 "contacts-contact-editor.c"
+                       FolksPersona* p = NULL;
+                       GeeList* _tmp7_;
+                       gpointer _tmp8_;
+                       gchar** rw_props = NULL;
+                       FolksPersona* _tmp13_;
+                       gchar** _tmp14_;
+                       gint _tmp14__length1;
+                       gchar** _tmp15_;
+                       gint _tmp15__length1;
+                       gint _tmp16_ = 0;
+                       gchar** _tmp17_;
+                       gint rw_props_length1;
+                       gint _rw_props_size_;
+                       gchar** _tmp18_;
+                       gint _tmp18__length1;
+#line 154 "../src/contacts-contact-editor.vala"
+                       _p_index = _p_index + 1;
+#line 154 "../src/contacts-contact-editor.vala"
+                       if (!(_p_index < _p_size)) {
+#line 154 "../src/contacts-contact-editor.vala"
+                               break;
+#line 986 "contacts-contact-editor.c"
+                       }
+#line 154 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _p_list;
+#line 154 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_list_get (_tmp7_, _p_index);
+#line 154 "../src/contacts-contact-editor.vala"
+                       p = (FolksPersona*) _tmp8_;
+#line 155 "../src/contacts-contact-editor.vala"
+                       if (!is_first_persona) {
+#line 996 "contacts-contact-editor.c"
+                               GtkGrid* _tmp9_;
+                               FolksPersona* _tmp10_;
+                               GtkLabel* _tmp11_;
+                               GtkLabel* _tmp12_;
+#line 156 "../src/contacts-contact-editor.vala"
+                               _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 156 "../src/contacts-contact-editor.vala"
+                               _tmp10_ = p;
+#line 156 "../src/contacts-contact-editor.vala"
+                               _tmp11_ = contacts_contact_form_create_persona_store_label 
((ContactsContactForm*) self, _tmp10_);
+#line 156 "../src/contacts-contact-editor.vala"
+                               _tmp12_ = _tmp11_;
+#line 156 "../src/contacts-contact-editor.vala"
+                               gtk_grid_attach (_tmp9_, (GtkWidget*) _tmp12_, 0, i, 2, 1);
+#line 156 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_tmp12_);
+#line 157 "../src/contacts-contact-editor.vala"
+                               i = i + 1;
+#line 157 "../src/contacts-contact-editor.vala"
+                               last_store_position = i;
+#line 1017 "contacts-contact-editor.c"
+                       }
+#line 160 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = p;
+#line 160 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = folks_persona_get_writeable_properties (_tmp13_, &_tmp14__length1);
+#line 160 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = _tmp14_;
+#line 160 "../src/contacts-contact-editor.vala"
+                       _tmp15__length1 = _tmp14__length1;
+#line 160 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = contacts_contact_form_sort_persona_properties ((ContactsContactForm*) self, 
_tmp15_, (gint) _tmp15__length1, &_tmp16_);
+#line 160 "../src/contacts-contact-editor.vala"
+                       rw_props = _tmp17_;
+#line 160 "../src/contacts-contact-editor.vala"
+                       rw_props_length1 = _tmp16_;
+#line 160 "../src/contacts-contact-editor.vala"
+                       _rw_props_size_ = rw_props_length1;
+#line 161 "../src/contacts-contact-editor.vala"
+                       _tmp18_ = rw_props;
+#line 161 "../src/contacts-contact-editor.vala"
+                       _tmp18__length1 = rw_props_length1;
+#line 161 "../src/contacts-contact-editor.vala"
+                       if (_tmp18__length1 != 0) {
+#line 1041 "contacts-contact-editor.c"
+                               GeeHashMap* _tmp19_;
+                               FolksPersona* _tmp20_;
+                               const gchar* _tmp21_;
+                               const gchar* _tmp22_;
+                               GeeHashMap* _tmp23_;
+                               GeeHashMap* _tmp24_;
+                               gchar** _tmp25_;
+                               gint _tmp25__length1;
+#line 162 "../src/contacts-contact-editor.vala"
+                               _tmp19_ = self->priv->writable_personas;
+#line 162 "../src/contacts-contact-editor.vala"
+                               _tmp20_ = p;
+#line 162 "../src/contacts-contact-editor.vala"
+                               _tmp21_ = folks_persona_get_uid (_tmp20_);
+#line 162 "../src/contacts-contact-editor.vala"
+                               _tmp22_ = _tmp21_;
+#line 162 "../src/contacts-contact-editor.vala"
+                               _tmp23_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, 
(GDestroyNotify) g_free, CONTACTS_CONTACT_EDITOR_TYPE_FIELD, (GBoxedCopyFunc) 
contacts_contact_editor_field_dup, (GDestroyNotify) contacts_contact_editor_field_free, NULL, NULL, NULL, 
NULL, NULL, NULL, NULL, NULL, NULL);
+#line 162 "../src/contacts-contact-editor.vala"
+                               _tmp24_ = _tmp23_;
+#line 162 "../src/contacts-contact-editor.vala"
+                               gee_abstract_map_set ((GeeAbstractMap*) _tmp19_, _tmp22_, _tmp24_);
+#line 162 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_tmp24_);
+#line 163 "../src/contacts-contact-editor.vala"
+                               _tmp25_ = rw_props;
+#line 163 "../src/contacts-contact-editor.vala"
+                               _tmp25__length1 = rw_props_length1;
+#line 1070 "contacts-contact-editor.c"
+                               {
+                                       gchar** prop_collection = NULL;
+                                       gint prop_collection_length1 = 0;
+                                       gint _prop_collection_size_ = 0;
+                                       gint prop_it = 0;
+#line 163 "../src/contacts-contact-editor.vala"
+                                       prop_collection = _tmp25_;
+#line 163 "../src/contacts-contact-editor.vala"
+                                       prop_collection_length1 = _tmp25__length1;
+#line 163 "../src/contacts-contact-editor.vala"
+                                       for (prop_it = 0; prop_it < prop_collection_length1; prop_it = 
prop_it + 1) {
+#line 1082 "contacts-contact-editor.c"
+                                               gchar* _tmp26_;
+                                               gchar* prop = NULL;
+#line 163 "../src/contacts-contact-editor.vala"
+                                               _tmp26_ = g_strdup (prop_collection[prop_it]);
+#line 163 "../src/contacts-contact-editor.vala"
+                                               prop = _tmp26_;
+#line 1089 "contacts-contact-editor.c"
+                                               {
+                                                       FolksPersona* _tmp27_;
+                                                       const gchar* _tmp28_;
+#line 164 "../src/contacts-contact-editor.vala"
+                                                       _tmp27_ = p;
+#line 164 "../src/contacts-contact-editor.vala"
+                                                       _tmp28_ = prop;
+#line 164 "../src/contacts-contact-editor.vala"
+                                                       contacts_contact_editor_add_edit_row (self, _tmp27_, 
_tmp28_, &i, FALSE, NULL);
+#line 163 "../src/contacts-contact-editor.vala"
+                                                       _g_free0 (prop);
+#line 1101 "contacts-contact-editor.c"
+                                               }
+                                       }
+                               }
+                       }
+#line 167 "../src/contacts-contact-editor.vala"
+                       if (is_first_persona) {
+#line 168 "../src/contacts-contact-editor.vala"
+                               ((ContactsContactForm*) self)->last_row = i - 1;
+#line 1110 "contacts-contact-editor.c"
+                       }
+#line 170 "../src/contacts-contact-editor.vala"
+                       if (i != 3) {
+#line 171 "../src/contacts-contact-editor.vala"
+                               is_first_persona = FALSE;
+#line 1116 "contacts-contact-editor.c"
+                       }
+#line 173 "../src/contacts-contact-editor.vala"
+                       if (i == last_store_position) {
+#line 1120 "contacts-contact-editor.c"
+                               gint _tmp29_;
+                               GtkGrid* _tmp30_;
+                               GtkWidget* _tmp31_;
+#line 174 "../src/contacts-contact-editor.vala"
+                               _tmp29_ = i;
+#line 174 "../src/contacts-contact-editor.vala"
+                               i = _tmp29_ - 1;
+#line 175 "../src/contacts-contact-editor.vala"
+                               _tmp30_ = ((ContactsContactForm*) self)->container_grid;
+#line 175 "../src/contacts-contact-editor.vala"
+                               _tmp31_ = gtk_grid_get_child_at (_tmp30_, 0, i);
+#line 175 "../src/contacts-contact-editor.vala"
+                               gtk_widget_destroy (_tmp31_);
+#line 1134 "contacts-contact-editor.c"
+                       }
+#line 154 "../src/contacts-contact-editor.vala"
+                       rw_props = (_vala_array_free (rw_props, rw_props_length1, (GDestroyNotify) g_free), 
NULL);
+#line 154 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (p);
+#line 1140 "contacts-contact-editor.c"
+               }
+#line 154 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_p_list);
+#line 1144 "contacts-contact-editor.c"
+       }
+#line 148 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (personas);
+#line 1148 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_fill_in_empty (ContactsContactEditor* self)
+{
+       GeeHashMap* _tmp0_;
+       GeeHashMap* _tmp1_;
+       GeeHashMap* _tmp2_;
+       GtkEntry* _tmp12_;
+#line 180 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 181 "../src/contacts-contact-editor.vala"
+       ((ContactsContactForm*) self)->last_row = 2;
+#line 183 "../src/contacts-contact-editor.vala"
+       _tmp0_ = self->priv->writable_personas;
+#line 183 "../src/contacts-contact-editor.vala"
+       _tmp1_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, 
CONTACTS_CONTACT_EDITOR_TYPE_FIELD, (GBoxedCopyFunc) contacts_contact_editor_field_dup, (GDestroyNotify) 
contacts_contact_editor_field_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 183 "../src/contacts-contact-editor.vala"
+       _tmp2_ = _tmp1_;
+#line 183 "../src/contacts-contact-editor.vala"
+       gee_abstract_map_set ((GeeAbstractMap*) _tmp0_, "null-persona.hack", _tmp2_);
+#line 183 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (_tmp2_);
+#line 1172 "contacts-contact-editor.c"
+       {
+               const gchar** prop_collection = NULL;
+               gint prop_collection_length1 = 0;
+               gint _prop_collection_size_ = 0;
+               gint prop_it = 0;
+#line 184 "../src/contacts-contact-editor.vala"
+               prop_collection = CONTACTS_CONTACT_EDITOR_DEFAULT_PROPS_NEW_CONTACT;
+#line 184 "../src/contacts-contact-editor.vala"
+               prop_collection_length1 = G_N_ELEMENTS (CONTACTS_CONTACT_EDITOR_DEFAULT_PROPS_NEW_CONTACT);
+#line 184 "../src/contacts-contact-editor.vala"
+               for (prop_it = 0; prop_it < prop_collection_length1; prop_it = prop_it + 1) {
+#line 1184 "contacts-contact-editor.c"
+                       const gchar* prop = NULL;
+#line 184 "../src/contacts-contact-editor.vala"
+                       prop = prop_collection[prop_it];
+#line 1188 "contacts-contact-editor.c"
+                       {
+                               gchar** tok = NULL;
+                               const gchar* _tmp3_;
+                               gchar** _tmp4_;
+                               gchar** _tmp5_;
+                               gint tok_length1;
+                               gint _tok_size_;
+                               gchar** _tmp6_;
+                               gint _tmp6__length1;
+                               const gchar* _tmp7_;
+                               gchar** _tmp8_;
+                               gint _tmp8__length1;
+                               const gchar* _tmp9_;
+                               gchar* _tmp10_;
+                               gchar* _tmp11_;
+#line 185 "../src/contacts-contact-editor.vala"
+                               _tmp3_ = prop;
+#line 185 "../src/contacts-contact-editor.vala"
+                               _tmp5_ = _tmp4_ = g_strsplit (_tmp3_, ".", 0);
+#line 185 "../src/contacts-contact-editor.vala"
+                               tok = _tmp5_;
+#line 185 "../src/contacts-contact-editor.vala"
+                               tok_length1 = _vala_array_length (_tmp4_);
+#line 185 "../src/contacts-contact-editor.vala"
+                               _tok_size_ = tok_length1;
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp6_ = tok;
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp6__length1 = tok_length1;
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp7_ = _tmp6_[0];
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp8_ = tok;
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp8__length1 = tok_length1;
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp9_ = _tmp8_[1];
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp10_ = g_utf8_strup (_tmp9_, (gssize) -1);
+#line 186 "../src/contacts-contact-editor.vala"
+                               _tmp11_ = _tmp10_;
+#line 186 "../src/contacts-contact-editor.vala"
+                               contacts_contact_editor_add_new_row_for_property (self, NULL, _tmp7_, 
_tmp11_);
+#line 186 "../src/contacts-contact-editor.vala"
+                               _g_free0 (_tmp11_);
+#line 184 "../src/contacts-contact-editor.vala"
+                               tok = (_vala_array_free (tok, tok_length1, (GDestroyNotify) g_free), NULL);
+#line 1236 "contacts-contact-editor.c"
+                       }
+               }
+       }
+#line 189 "../src/contacts-contact-editor.vala"
+       _tmp12_ = self->priv->name_entry;
+#line 189 "../src/contacts-contact-editor.vala"
+       self->priv->focus_widget = (GtkWidget*) _tmp12_;
+#line 1244 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_get_value_from_emails (ContactsContactEditor* self,
+                                               GeeHashMap* rows,
+                                               GValue* result)
+{
+       GeeHashSet* new_details = NULL;
+       GeeHashSet* _tmp0_;
+       GValue new_value = {0};
+       GeeHashSet* _tmp41_;
+       GValue _tmp42_ = {0};
+       GeeHashSet* _tmp43_;
+#line 192 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 192 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (rows != NULL);
+#line 193 "../src/contacts-contact-editor.vala"
+       _tmp0_ = gee_hash_set_new (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 193 "../src/contacts-contact-editor.vala"
+       new_details = _tmp0_;
+#line 1266 "contacts-contact-editor.c"
+       {
+               GeeIterator* _row_entry_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 195 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) rows);
+#line 195 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 195 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 195 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 195 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 195 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 195 "../src/contacts-contact-editor.vala"
+               _row_entry_it = _tmp5_;
+#line 195 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 1290 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeMapEntry* row_entry = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       ContactsTypeCombo* combo = NULL;
+                       GtkGrid* _tmp9_;
+                       GeeMapEntry* _tmp10_;
+                       gconstpointer _tmp11_;
+                       gint _tmp12_;
+                       GtkWidget* _tmp13_;
+                       ContactsTypeCombo* _tmp14_;
+                       GtkEntry* entry = NULL;
+                       GtkGrid* _tmp15_;
+                       GeeMapEntry* _tmp16_;
+                       gconstpointer _tmp17_;
+                       gint _tmp18_;
+                       GtkWidget* _tmp19_;
+                       GtkEntry* _tmp20_;
+                       GtkEntry* _tmp21_;
+                       const gchar* _tmp22_;
+                       ContactsTypeCombo* _tmp23_;
+                       ContactsTypeDescriptor* _tmp24_;
+                       ContactsTypeDescriptor* _tmp25_;
+                       GeeMapEntry* _tmp26_;
+                       gconstpointer _tmp27_;
+                       ContactsContactEditorRowData* _tmp28_;
+                       FolksAbstractFieldDetails* _tmp29_;
+                       FolksEmailFieldDetails* details = NULL;
+                       GtkEntry* _tmp30_;
+                       const gchar* _tmp31_;
+                       GeeMapEntry* _tmp32_;
+                       gconstpointer _tmp33_;
+                       ContactsContactEditorRowData* _tmp34_;
+                       FolksAbstractFieldDetails* _tmp35_;
+                       GeeMultiMap* _tmp36_;
+                       GeeMultiMap* _tmp37_;
+                       FolksEmailFieldDetails* _tmp38_;
+                       GeeHashSet* _tmp39_;
+                       FolksEmailFieldDetails* _tmp40_;
+#line 195 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _row_entry_it;
+#line 195 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 195 "../src/contacts-contact-editor.vala"
+                               break;
+#line 1336 "contacts-contact-editor.c"
+                       }
+#line 195 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _row_entry_it;
+#line 195 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 195 "../src/contacts-contact-editor.vala"
+                       row_entry = (GeeMapEntry*) _tmp8_;
+#line 196 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 196 "../src/contacts-contact-editor.vala"
+                       _tmp10_ = row_entry;
+#line 196 "../src/contacts-contact-editor.vala"
+                       _tmp11_ = gee_map_entry_get_key (_tmp10_);
+#line 196 "../src/contacts-contact-editor.vala"
+                       _tmp12_ = _tmp11_;
+#line 196 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = gtk_grid_get_child_at (_tmp9_, 0, (gint) ((gintptr) _tmp12_));
+#line 196 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = _g_object_ref0 (CONTACTS_IS_TYPECOMBO (_tmp13_) ? ((ContactsTypeCombo*) 
_tmp13_) : NULL);
+#line 196 "../src/contacts-contact-editor.vala"
+                       combo = _tmp14_;
+#line 197 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = ((ContactsContactForm*) self)->container_grid;
+#line 197 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = row_entry;
+#line 197 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = gee_map_entry_get_key (_tmp16_);
+#line 197 "../src/contacts-contact-editor.vala"
+                       _tmp18_ = _tmp17_;
+#line 197 "../src/contacts-contact-editor.vala"
+                       _tmp19_ = gtk_grid_get_child_at (_tmp15_, 1, (gint) ((gintptr) _tmp18_));
+#line 197 "../src/contacts-contact-editor.vala"
+                       _tmp20_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, gtk_entry_get_type ()) 
? ((GtkEntry*) _tmp19_) : NULL);
+#line 197 "../src/contacts-contact-editor.vala"
+                       entry = _tmp20_;
+#line 200 "../src/contacts-contact-editor.vala"
+                       _tmp21_ = entry;
+#line 200 "../src/contacts-contact-editor.vala"
+                       _tmp22_ = gtk_entry_get_text (_tmp21_);
+#line 200 "../src/contacts-contact-editor.vala"
+                       if (g_strcmp0 (_tmp22_, "") == 0) {
+#line 201 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (entry);
+#line 201 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (combo);
+#line 201 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (row_entry);
+#line 201 "../src/contacts-contact-editor.vala"
+                               continue;
+#line 1386 "contacts-contact-editor.c"
+                       }
+#line 203 "../src/contacts-contact-editor.vala"
+                       _tmp23_ = combo;
+#line 203 "../src/contacts-contact-editor.vala"
+                       _tmp24_ = contacts_typecombo_get_active_descriptor (_tmp23_);
+#line 203 "../src/contacts-contact-editor.vala"
+                       _tmp25_ = _tmp24_;
+#line 203 "../src/contacts-contact-editor.vala"
+                       _tmp26_ = row_entry;
+#line 203 "../src/contacts-contact-editor.vala"
+                       _tmp27_ = gee_map_entry_get_value (_tmp26_);
+#line 203 "../src/contacts-contact-editor.vala"
+                       _tmp28_ = _tmp27_;
+#line 203 "../src/contacts-contact-editor.vala"
+                       _tmp29_ = (*((ContactsContactEditorRowData*) _tmp28_)).details;
+#line 203 "../src/contacts-contact-editor.vala"
+                       contacts_typedescriptor_save_to_field_details (_tmp25_, _tmp29_);
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp30_ = entry;
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp31_ = gtk_entry_get_text (_tmp30_);
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp32_ = row_entry;
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp33_ = gee_map_entry_get_value (_tmp32_);
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp34_ = _tmp33_;
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp35_ = (*((ContactsContactEditorRowData*) _tmp34_)).details;
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp36_ = folks_abstract_field_details_get_parameters (_tmp35_);
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp37_ = _tmp36_;
+#line 204 "../src/contacts-contact-editor.vala"
+                       _tmp38_ = folks_email_field_details_new (_tmp31_, _tmp37_);
+#line 204 "../src/contacts-contact-editor.vala"
+                       details = _tmp38_;
+#line 205 "../src/contacts-contact-editor.vala"
+                       _tmp39_ = new_details;
+#line 205 "../src/contacts-contact-editor.vala"
+                       _tmp40_ = details;
+#line 205 "../src/contacts-contact-editor.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp39_, _tmp40_);
+#line 195 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (details);
+#line 195 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (entry);
+#line 195 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (combo);
+#line 195 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (row_entry);
+#line 1438 "contacts-contact-editor.c"
+               }
+#line 195 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_row_entry_it);
+#line 1442 "contacts-contact-editor.c"
+       }
+#line 207 "../src/contacts-contact-editor.vala"
+       _tmp41_ = new_details;
+#line 207 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp42_, G_TYPE_FROM_INSTANCE ((GObject*) _tmp41_));
+#line 207 "../src/contacts-contact-editor.vala"
+       new_value = _tmp42_;
+#line 208 "../src/contacts-contact-editor.vala"
+       _tmp43_ = new_details;
+#line 208 "../src/contacts-contact-editor.vala"
+       g_value_set_object (&new_value, (GObject*) _tmp43_);
+#line 210 "../src/contacts-contact-editor.vala"
+       *result = new_value;
+#line 210 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (new_details);
+#line 210 "../src/contacts-contact-editor.vala"
+       return;
+#line 1460 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_get_value_from_phones (ContactsContactEditor* self,
+                                               GeeHashMap* rows,
+                                               GValue* result)
+{
+       GeeHashSet* new_details = NULL;
+       GeeHashSet* _tmp0_;
+       GValue new_value = {0};
+       GeeHashSet* _tmp41_;
+       GValue _tmp42_ = {0};
+       GeeHashSet* _tmp43_;
+#line 213 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 213 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (rows != NULL);
+#line 214 "../src/contacts-contact-editor.vala"
+       _tmp0_ = gee_hash_set_new (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 214 "../src/contacts-contact-editor.vala"
+       new_details = _tmp0_;
+#line 1482 "contacts-contact-editor.c"
+       {
+               GeeIterator* _row_entry_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 216 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) rows);
+#line 216 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 216 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 216 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 216 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 216 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 216 "../src/contacts-contact-editor.vala"
+               _row_entry_it = _tmp5_;
+#line 216 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 1506 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeMapEntry* row_entry = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       ContactsTypeCombo* combo = NULL;
+                       GtkGrid* _tmp9_;
+                       GeeMapEntry* _tmp10_;
+                       gconstpointer _tmp11_;
+                       gint _tmp12_;
+                       GtkWidget* _tmp13_;
+                       ContactsTypeCombo* _tmp14_;
+                       GtkEntry* entry = NULL;
+                       GtkGrid* _tmp15_;
+                       GeeMapEntry* _tmp16_;
+                       gconstpointer _tmp17_;
+                       gint _tmp18_;
+                       GtkWidget* _tmp19_;
+                       GtkEntry* _tmp20_;
+                       GtkEntry* _tmp21_;
+                       const gchar* _tmp22_;
+                       ContactsTypeCombo* _tmp23_;
+                       ContactsTypeDescriptor* _tmp24_;
+                       ContactsTypeDescriptor* _tmp25_;
+                       GeeMapEntry* _tmp26_;
+                       gconstpointer _tmp27_;
+                       ContactsContactEditorRowData* _tmp28_;
+                       FolksAbstractFieldDetails* _tmp29_;
+                       FolksPhoneFieldDetails* details = NULL;
+                       GtkEntry* _tmp30_;
+                       const gchar* _tmp31_;
+                       GeeMapEntry* _tmp32_;
+                       gconstpointer _tmp33_;
+                       ContactsContactEditorRowData* _tmp34_;
+                       FolksAbstractFieldDetails* _tmp35_;
+                       GeeMultiMap* _tmp36_;
+                       GeeMultiMap* _tmp37_;
+                       FolksPhoneFieldDetails* _tmp38_;
+                       GeeHashSet* _tmp39_;
+                       FolksPhoneFieldDetails* _tmp40_;
+#line 216 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _row_entry_it;
+#line 216 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 216 "../src/contacts-contact-editor.vala"
+                               break;
+#line 1552 "contacts-contact-editor.c"
+                       }
+#line 216 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _row_entry_it;
+#line 216 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 216 "../src/contacts-contact-editor.vala"
+                       row_entry = (GeeMapEntry*) _tmp8_;
+#line 217 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 217 "../src/contacts-contact-editor.vala"
+                       _tmp10_ = row_entry;
+#line 217 "../src/contacts-contact-editor.vala"
+                       _tmp11_ = gee_map_entry_get_key (_tmp10_);
+#line 217 "../src/contacts-contact-editor.vala"
+                       _tmp12_ = _tmp11_;
+#line 217 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = gtk_grid_get_child_at (_tmp9_, 0, (gint) ((gintptr) _tmp12_));
+#line 217 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = _g_object_ref0 (CONTACTS_IS_TYPECOMBO (_tmp13_) ? ((ContactsTypeCombo*) 
_tmp13_) : NULL);
+#line 217 "../src/contacts-contact-editor.vala"
+                       combo = _tmp14_;
+#line 218 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = ((ContactsContactForm*) self)->container_grid;
+#line 218 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = row_entry;
+#line 218 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = gee_map_entry_get_key (_tmp16_);
+#line 218 "../src/contacts-contact-editor.vala"
+                       _tmp18_ = _tmp17_;
+#line 218 "../src/contacts-contact-editor.vala"
+                       _tmp19_ = gtk_grid_get_child_at (_tmp15_, 1, (gint) ((gintptr) _tmp18_));
+#line 218 "../src/contacts-contact-editor.vala"
+                       _tmp20_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, gtk_entry_get_type ()) 
? ((GtkEntry*) _tmp19_) : NULL);
+#line 218 "../src/contacts-contact-editor.vala"
+                       entry = _tmp20_;
+#line 221 "../src/contacts-contact-editor.vala"
+                       _tmp21_ = entry;
+#line 221 "../src/contacts-contact-editor.vala"
+                       _tmp22_ = gtk_entry_get_text (_tmp21_);
+#line 221 "../src/contacts-contact-editor.vala"
+                       if (g_strcmp0 (_tmp22_, "") == 0) {
+#line 222 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (entry);
+#line 222 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (combo);
+#line 222 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (row_entry);
+#line 222 "../src/contacts-contact-editor.vala"
+                               continue;
+#line 1602 "contacts-contact-editor.c"
+                       }
+#line 224 "../src/contacts-contact-editor.vala"
+                       _tmp23_ = combo;
+#line 224 "../src/contacts-contact-editor.vala"
+                       _tmp24_ = contacts_typecombo_get_active_descriptor (_tmp23_);
+#line 224 "../src/contacts-contact-editor.vala"
+                       _tmp25_ = _tmp24_;
+#line 224 "../src/contacts-contact-editor.vala"
+                       _tmp26_ = row_entry;
+#line 224 "../src/contacts-contact-editor.vala"
+                       _tmp27_ = gee_map_entry_get_value (_tmp26_);
+#line 224 "../src/contacts-contact-editor.vala"
+                       _tmp28_ = _tmp27_;
+#line 224 "../src/contacts-contact-editor.vala"
+                       _tmp29_ = (*((ContactsContactEditorRowData*) _tmp28_)).details;
+#line 224 "../src/contacts-contact-editor.vala"
+                       contacts_typedescriptor_save_to_field_details (_tmp25_, _tmp29_);
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp30_ = entry;
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp31_ = gtk_entry_get_text (_tmp30_);
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp32_ = row_entry;
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp33_ = gee_map_entry_get_value (_tmp32_);
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp34_ = _tmp33_;
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp35_ = (*((ContactsContactEditorRowData*) _tmp34_)).details;
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp36_ = folks_abstract_field_details_get_parameters (_tmp35_);
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp37_ = _tmp36_;
+#line 225 "../src/contacts-contact-editor.vala"
+                       _tmp38_ = folks_phone_field_details_new (_tmp31_, _tmp37_);
+#line 225 "../src/contacts-contact-editor.vala"
+                       details = _tmp38_;
+#line 226 "../src/contacts-contact-editor.vala"
+                       _tmp39_ = new_details;
+#line 226 "../src/contacts-contact-editor.vala"
+                       _tmp40_ = details;
+#line 226 "../src/contacts-contact-editor.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp39_, _tmp40_);
+#line 216 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (details);
+#line 216 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (entry);
+#line 216 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (combo);
+#line 216 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (row_entry);
+#line 1654 "contacts-contact-editor.c"
+               }
+#line 216 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_row_entry_it);
+#line 1658 "contacts-contact-editor.c"
+       }
+#line 228 "../src/contacts-contact-editor.vala"
+       _tmp41_ = new_details;
+#line 228 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp42_, G_TYPE_FROM_INSTANCE ((GObject*) _tmp41_));
+#line 228 "../src/contacts-contact-editor.vala"
+       new_value = _tmp42_;
+#line 229 "../src/contacts-contact-editor.vala"
+       _tmp43_ = new_details;
+#line 229 "../src/contacts-contact-editor.vala"
+       g_value_set_object (&new_value, (GObject*) _tmp43_);
+#line 230 "../src/contacts-contact-editor.vala"
+       *result = new_value;
+#line 230 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (new_details);
+#line 230 "../src/contacts-contact-editor.vala"
+       return;
+#line 1676 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_get_value_from_urls (ContactsContactEditor* self,
+                                             GeeHashMap* rows,
+                                             GValue* result)
+{
+       GeeHashSet* new_details = NULL;
+       GeeHashSet* _tmp0_;
+       GValue new_value = {0};
+       GeeHashSet* _tmp28_;
+       GValue _tmp29_ = {0};
+       GeeHashSet* _tmp30_;
+#line 233 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 233 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (rows != NULL);
+#line 234 "../src/contacts-contact-editor.vala"
+       _tmp0_ = gee_hash_set_new (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 234 "../src/contacts-contact-editor.vala"
+       new_details = _tmp0_;
+#line 1698 "contacts-contact-editor.c"
+       {
+               GeeIterator* _row_entry_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 236 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) rows);
+#line 236 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 236 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 236 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 236 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 236 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 236 "../src/contacts-contact-editor.vala"
+               _row_entry_it = _tmp5_;
+#line 236 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 1722 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeMapEntry* row_entry = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       GtkEntry* entry = NULL;
+                       GtkGrid* _tmp9_;
+                       GeeMapEntry* _tmp10_;
+                       gconstpointer _tmp11_;
+                       gint _tmp12_;
+                       GtkWidget* _tmp13_;
+                       GtkEntry* _tmp14_;
+                       GtkEntry* _tmp15_;
+                       const gchar* _tmp16_;
+                       FolksUrlFieldDetails* details = NULL;
+                       GtkEntry* _tmp17_;
+                       const gchar* _tmp18_;
+                       GeeMapEntry* _tmp19_;
+                       gconstpointer _tmp20_;
+                       ContactsContactEditorRowData* _tmp21_;
+                       FolksAbstractFieldDetails* _tmp22_;
+                       GeeMultiMap* _tmp23_;
+                       GeeMultiMap* _tmp24_;
+                       FolksUrlFieldDetails* _tmp25_;
+                       GeeHashSet* _tmp26_;
+                       FolksUrlFieldDetails* _tmp27_;
+#line 236 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _row_entry_it;
+#line 236 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 236 "../src/contacts-contact-editor.vala"
+                               break;
+#line 1754 "contacts-contact-editor.c"
+                       }
+#line 236 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _row_entry_it;
+#line 236 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 236 "../src/contacts-contact-editor.vala"
+                       row_entry = (GeeMapEntry*) _tmp8_;
+#line 237 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 237 "../src/contacts-contact-editor.vala"
+                       _tmp10_ = row_entry;
+#line 237 "../src/contacts-contact-editor.vala"
+                       _tmp11_ = gee_map_entry_get_key (_tmp10_);
+#line 237 "../src/contacts-contact-editor.vala"
+                       _tmp12_ = _tmp11_;
+#line 237 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = gtk_grid_get_child_at (_tmp9_, 1, (gint) ((gintptr) _tmp12_));
+#line 237 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, gtk_entry_get_type ()) 
? ((GtkEntry*) _tmp13_) : NULL);
+#line 237 "../src/contacts-contact-editor.vala"
+                       entry = _tmp14_;
+#line 240 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = entry;
+#line 240 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = gtk_entry_get_text (_tmp15_);
+#line 240 "../src/contacts-contact-editor.vala"
+                       if (g_strcmp0 (_tmp16_, "") == 0) {
+#line 241 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (entry);
+#line 241 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (row_entry);
+#line 241 "../src/contacts-contact-editor.vala"
+                               continue;
+#line 1788 "contacts-contact-editor.c"
+                       }
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = entry;
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp18_ = gtk_entry_get_text (_tmp17_);
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp19_ = row_entry;
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp20_ = gee_map_entry_get_value (_tmp19_);
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp21_ = _tmp20_;
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp22_ = (*((ContactsContactEditorRowData*) _tmp21_)).details;
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp23_ = folks_abstract_field_details_get_parameters (_tmp22_);
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp24_ = _tmp23_;
+#line 243 "../src/contacts-contact-editor.vala"
+                       _tmp25_ = folks_url_field_details_new (_tmp18_, _tmp24_);
+#line 243 "../src/contacts-contact-editor.vala"
+                       details = _tmp25_;
+#line 244 "../src/contacts-contact-editor.vala"
+                       _tmp26_ = new_details;
+#line 244 "../src/contacts-contact-editor.vala"
+                       _tmp27_ = details;
+#line 244 "../src/contacts-contact-editor.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp26_, _tmp27_);
+#line 236 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (details);
+#line 236 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (entry);
+#line 236 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (row_entry);
+#line 1822 "contacts-contact-editor.c"
+               }
+#line 236 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_row_entry_it);
+#line 1826 "contacts-contact-editor.c"
+       }
+#line 246 "../src/contacts-contact-editor.vala"
+       _tmp28_ = new_details;
+#line 246 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp29_, G_TYPE_FROM_INSTANCE ((GObject*) _tmp28_));
+#line 246 "../src/contacts-contact-editor.vala"
+       new_value = _tmp29_;
+#line 247 "../src/contacts-contact-editor.vala"
+       _tmp30_ = new_details;
+#line 247 "../src/contacts-contact-editor.vala"
+       g_value_set_object (&new_value, (GObject*) _tmp30_);
+#line 248 "../src/contacts-contact-editor.vala"
+       *result = new_value;
+#line 248 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (new_details);
+#line 248 "../src/contacts-contact-editor.vala"
+       return;
+#line 1844 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_get_value_from_nickname (ContactsContactEditor* self,
+                                                 GeeHashMap* rows,
+                                                 GValue* result)
+{
+       GValue new_value = {0};
+       GValue _tmp0_ = {0};
+#line 251 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 251 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (rows != NULL);
+#line 252 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp0_, G_TYPE_STRING);
+#line 252 "../src/contacts-contact-editor.vala"
+       new_value = _tmp0_;
+#line 1862 "contacts-contact-editor.c"
+       {
+               GeeIterator* _row_entry_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 253 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) rows);
+#line 253 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 253 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 253 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 253 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 253 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 253 "../src/contacts-contact-editor.vala"
+               _row_entry_it = _tmp5_;
+#line 253 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 1886 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeMapEntry* row_entry = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       GtkEntry* entry = NULL;
+                       GtkGrid* _tmp9_;
+                       GeeMapEntry* _tmp10_;
+                       gconstpointer _tmp11_;
+                       gint _tmp12_;
+                       GtkWidget* _tmp13_;
+                       GtkEntry* _tmp14_;
+                       GtkEntry* _tmp15_;
+                       const gchar* _tmp16_;
+                       GtkEntry* _tmp17_;
+                       const gchar* _tmp18_;
+#line 253 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _row_entry_it;
+#line 253 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 253 "../src/contacts-contact-editor.vala"
+                               break;
+#line 1908 "contacts-contact-editor.c"
+                       }
+#line 253 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _row_entry_it;
+#line 253 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 253 "../src/contacts-contact-editor.vala"
+                       row_entry = (GeeMapEntry*) _tmp8_;
+#line 254 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 254 "../src/contacts-contact-editor.vala"
+                       _tmp10_ = row_entry;
+#line 254 "../src/contacts-contact-editor.vala"
+                       _tmp11_ = gee_map_entry_get_key (_tmp10_);
+#line 254 "../src/contacts-contact-editor.vala"
+                       _tmp12_ = _tmp11_;
+#line 254 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = gtk_grid_get_child_at (_tmp9_, 1, (gint) ((gintptr) _tmp12_));
+#line 254 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, gtk_entry_get_type ()) 
? ((GtkEntry*) _tmp13_) : NULL);
+#line 254 "../src/contacts-contact-editor.vala"
+                       entry = _tmp14_;
+#line 257 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = entry;
+#line 257 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = gtk_entry_get_text (_tmp15_);
+#line 257 "../src/contacts-contact-editor.vala"
+                       if (g_strcmp0 (_tmp16_, "") == 0) {
+#line 258 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (entry);
+#line 258 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (row_entry);
+#line 258 "../src/contacts-contact-editor.vala"
+                               continue;
+#line 1942 "contacts-contact-editor.c"
+                       }
+#line 260 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = entry;
+#line 260 "../src/contacts-contact-editor.vala"
+                       _tmp18_ = gtk_entry_get_text (_tmp17_);
+#line 260 "../src/contacts-contact-editor.vala"
+                       g_value_set_string (&new_value, _tmp18_);
+#line 253 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (entry);
+#line 253 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (row_entry);
+#line 1954 "contacts-contact-editor.c"
+               }
+#line 253 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_row_entry_it);
+#line 1958 "contacts-contact-editor.c"
+       }
+#line 262 "../src/contacts-contact-editor.vala"
+       *result = new_value;
+#line 262 "../src/contacts-contact-editor.vala"
+       return;
+#line 1964 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_get_value_from_birthday (ContactsContactEditor* self,
+                                                 GeeHashMap* rows,
+                                                 GValue* result)
+{
+       GValue new_value = {0};
+       GValue _tmp0_ = {0};
+#line 265 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 265 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (rows != NULL);
+#line 266 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp0_, G_TYPE_DATE_TIME);
+#line 266 "../src/contacts-contact-editor.vala"
+       new_value = _tmp0_;
+#line 1982 "contacts-contact-editor.c"
+       {
+               GeeIterator* _row_entry_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 267 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) rows);
+#line 267 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 267 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 267 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 267 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 267 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 267 "../src/contacts-contact-editor.vala"
+               _row_entry_it = _tmp5_;
+#line 267 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 2006 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeMapEntry* row_entry = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       GtkGrid* box = NULL;
+                       GtkGrid* _tmp9_;
+                       GeeMapEntry* _tmp10_;
+                       gconstpointer _tmp11_;
+                       gint _tmp12_;
+                       GtkWidget* _tmp13_;
+                       GtkGrid* _tmp14_;
+                       GtkSpinButton* day_spin = NULL;
+                       GtkGrid* _tmp15_;
+                       GtkWidget* _tmp16_;
+                       GtkSpinButton* _tmp17_;
+                       GtkComboBoxText* combo = NULL;
+                       GtkGrid* _tmp18_;
+                       GtkWidget* _tmp19_;
+                       GtkComboBoxText* _tmp20_;
+                       GtkSpinButton* year_spin = NULL;
+                       GtkGrid* _tmp21_;
+                       GtkWidget* _tmp22_;
+                       GtkSpinButton* _tmp23_;
+                       GDateTime* bday = NULL;
+                       GtkSpinButton* _tmp24_;
+                       GtkComboBoxText* _tmp25_;
+                       GtkSpinButton* _tmp26_;
+                       GDateTime* _tmp27_;
+                       GDateTime* _tmp28_;
+                       GDateTime* _tmp29_;
+                       GDateTime* _tmp30_;
+#line 267 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _row_entry_it;
+#line 267 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 267 "../src/contacts-contact-editor.vala"
+                               break;
+#line 2044 "contacts-contact-editor.c"
+                       }
+#line 267 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _row_entry_it;
+#line 267 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 267 "../src/contacts-contact-editor.vala"
+                       row_entry = (GeeMapEntry*) _tmp8_;
+#line 268 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 268 "../src/contacts-contact-editor.vala"
+                       _tmp10_ = row_entry;
+#line 268 "../src/contacts-contact-editor.vala"
+                       _tmp11_ = gee_map_entry_get_key (_tmp10_);
+#line 268 "../src/contacts-contact-editor.vala"
+                       _tmp12_ = _tmp11_;
+#line 268 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = gtk_grid_get_child_at (_tmp9_, 1, (gint) ((gintptr) _tmp12_));
+#line 268 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, gtk_grid_get_type ()) 
? ((GtkGrid*) _tmp13_) : NULL);
+#line 268 "../src/contacts-contact-editor.vala"
+                       box = _tmp14_;
+#line 269 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = box;
+#line 269 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = gtk_grid_get_child_at (_tmp15_, 0, 0);
+#line 269 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, 
gtk_spin_button_get_type ()) ? ((GtkSpinButton*) _tmp16_) : NULL);
+#line 269 "../src/contacts-contact-editor.vala"
+                       day_spin = _tmp17_;
+#line 270 "../src/contacts-contact-editor.vala"
+                       _tmp18_ = box;
+#line 270 "../src/contacts-contact-editor.vala"
+                       _tmp19_ = gtk_grid_get_child_at (_tmp18_, 1, 0);
+#line 270 "../src/contacts-contact-editor.vala"
+                       _tmp20_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, 
gtk_combo_box_text_get_type ()) ? ((GtkComboBoxText*) _tmp19_) : NULL);
+#line 270 "../src/contacts-contact-editor.vala"
+                       combo = _tmp20_;
+#line 271 "../src/contacts-contact-editor.vala"
+                       _tmp21_ = box;
+#line 271 "../src/contacts-contact-editor.vala"
+                       _tmp22_ = gtk_grid_get_child_at (_tmp21_, 2, 0);
+#line 271 "../src/contacts-contact-editor.vala"
+                       _tmp23_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, 
gtk_spin_button_get_type ()) ? ((GtkSpinButton*) _tmp22_) : NULL);
+#line 271 "../src/contacts-contact-editor.vala"
+                       year_spin = _tmp23_;
+#line 273 "../src/contacts-contact-editor.vala"
+                       _tmp24_ = year_spin;
+#line 273 "../src/contacts-contact-editor.vala"
+                       _tmp25_ = combo;
+#line 273 "../src/contacts-contact-editor.vala"
+                       _tmp26_ = day_spin;
+#line 273 "../src/contacts-contact-editor.vala"
+                       _tmp27_ = g_date_time_new_local (gtk_spin_button_get_value_as_int (_tmp24_), 
gtk_combo_box_get_active ((GtkComboBox*) _tmp25_) + 1, gtk_spin_button_get_value_as_int (_tmp26_), 0, 0, 
(gdouble) 0);
+#line 273 "../src/contacts-contact-editor.vala"
+                       bday = _tmp27_;
+#line 277 "../src/contacts-contact-editor.vala"
+                       _tmp28_ = bday;
+#line 277 "../src/contacts-contact-editor.vala"
+                       _tmp29_ = g_date_time_to_utc (_tmp28_);
+#line 277 "../src/contacts-contact-editor.vala"
+                       _g_date_time_unref0 (bday);
+#line 277 "../src/contacts-contact-editor.vala"
+                       bday = _tmp29_;
+#line 279 "../src/contacts-contact-editor.vala"
+                       _tmp30_ = bday;
+#line 279 "../src/contacts-contact-editor.vala"
+                       g_value_set_boxed (&new_value, _tmp30_);
+#line 267 "../src/contacts-contact-editor.vala"
+                       _g_date_time_unref0 (bday);
+#line 267 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (year_spin);
+#line 267 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (combo);
+#line 267 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (day_spin);
+#line 267 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (box);
+#line 267 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (row_entry);
+#line 2124 "contacts-contact-editor.c"
+               }
+#line 267 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_row_entry_it);
+#line 2128 "contacts-contact-editor.c"
+       }
+#line 281 "../src/contacts-contact-editor.vala"
+       *result = new_value;
+#line 281 "../src/contacts-contact-editor.vala"
+       return;
+#line 2134 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_get_value_from_notes (ContactsContactEditor* self,
+                                              GeeHashMap* rows,
+                                              GValue* result)
+{
+       GeeHashSet* new_details = NULL;
+       GeeHashSet* _tmp0_;
+       GValue new_value = {0};
+       GeeHashSet* _tmp38_;
+       GValue _tmp39_ = {0};
+       GeeHashSet* _tmp40_;
+#line 284 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 284 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (rows != NULL);
+#line 285 "../src/contacts-contact-editor.vala"
+       _tmp0_ = gee_hash_set_new (FOLKS_TYPE_NOTE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 285 "../src/contacts-contact-editor.vala"
+       new_details = _tmp0_;
+#line 2156 "contacts-contact-editor.c"
+       {
+               GeeIterator* _row_entry_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 287 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) rows);
+#line 287 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 287 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 287 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 287 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 287 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 287 "../src/contacts-contact-editor.vala"
+               _row_entry_it = _tmp5_;
+#line 287 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 2180 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeMapEntry* row_entry = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       GtkTextView* text = NULL;
+                       GtkGrid* _tmp9_;
+                       GeeMapEntry* _tmp10_;
+                       gconstpointer _tmp11_;
+                       gint _tmp12_;
+                       GtkWidget* _tmp13_;
+                       GtkWidget* _tmp14_;
+                       GtkTextView* _tmp15_;
+                       GtkTextIter start = {0};
+                       GtkTextIter end = {0};
+                       GtkTextView* _tmp16_;
+                       GtkTextBuffer* _tmp17_;
+                       GtkTextIter _tmp18_ = {0};
+                       GtkTextView* _tmp19_;
+                       GtkTextBuffer* _tmp20_;
+                       GtkTextIter _tmp21_ = {0};
+                       gchar* value = NULL;
+                       GtkTextView* _tmp22_;
+                       GtkTextBuffer* _tmp23_;
+                       GtkTextIter _tmp24_;
+                       GtkTextIter _tmp25_;
+                       gchar* _tmp26_;
+                       const gchar* _tmp27_;
+#line 287 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _row_entry_it;
+#line 287 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 287 "../src/contacts-contact-editor.vala"
+                               break;
+#line 2214 "contacts-contact-editor.c"
+                       }
+#line 287 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _row_entry_it;
+#line 287 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 287 "../src/contacts-contact-editor.vala"
+                       row_entry = (GeeMapEntry*) _tmp8_;
+#line 288 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 288 "../src/contacts-contact-editor.vala"
+                       _tmp10_ = row_entry;
+#line 288 "../src/contacts-contact-editor.vala"
+                       _tmp11_ = gee_map_entry_get_key (_tmp10_);
+#line 288 "../src/contacts-contact-editor.vala"
+                       _tmp12_ = _tmp11_;
+#line 288 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = gtk_grid_get_child_at (_tmp9_, 1, (gint) ((gintptr) _tmp12_));
+#line 288 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = gtk_bin_get_child (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, gtk_bin_get_type 
()) ? ((GtkBin*) _tmp13_) : NULL);
+#line 288 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, gtk_text_view_get_type 
()) ? ((GtkTextView*) _tmp14_) : NULL);
+#line 288 "../src/contacts-contact-editor.vala"
+                       text = _tmp15_;
+#line 290 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = text;
+#line 290 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = gtk_text_view_get_buffer (_tmp16_);
+#line 290 "../src/contacts-contact-editor.vala"
+                       gtk_text_buffer_get_start_iter (_tmp17_, &_tmp18_);
+#line 290 "../src/contacts-contact-editor.vala"
+                       start = _tmp18_;
+#line 291 "../src/contacts-contact-editor.vala"
+                       _tmp19_ = text;
+#line 291 "../src/contacts-contact-editor.vala"
+                       _tmp20_ = gtk_text_view_get_buffer (_tmp19_);
+#line 291 "../src/contacts-contact-editor.vala"
+                       gtk_text_buffer_get_end_iter (_tmp20_, &_tmp21_);
+#line 291 "../src/contacts-contact-editor.vala"
+                       end = _tmp21_;
+#line 292 "../src/contacts-contact-editor.vala"
+                       _tmp22_ = text;
+#line 292 "../src/contacts-contact-editor.vala"
+                       _tmp23_ = gtk_text_view_get_buffer (_tmp22_);
+#line 292 "../src/contacts-contact-editor.vala"
+                       _tmp24_ = start;
+#line 292 "../src/contacts-contact-editor.vala"
+                       _tmp25_ = end;
+#line 292 "../src/contacts-contact-editor.vala"
+                       _tmp26_ = gtk_text_buffer_get_text (_tmp23_, &_tmp24_, &_tmp25_, TRUE);
+#line 292 "../src/contacts-contact-editor.vala"
+                       value = _tmp26_;
+#line 293 "../src/contacts-contact-editor.vala"
+                       _tmp27_ = value;
+#line 293 "../src/contacts-contact-editor.vala"
+                       if (g_strcmp0 (_tmp27_, "") != 0) {
+#line 2270 "contacts-contact-editor.c"
+                               FolksNoteFieldDetails* details = NULL;
+                               const gchar* _tmp28_;
+                               GeeMapEntry* _tmp29_;
+                               gconstpointer _tmp30_;
+                               ContactsContactEditorRowData* _tmp31_;
+                               FolksAbstractFieldDetails* _tmp32_;
+                               GeeMultiMap* _tmp33_;
+                               GeeMultiMap* _tmp34_;
+                               FolksNoteFieldDetails* _tmp35_;
+                               GeeHashSet* _tmp36_;
+                               FolksNoteFieldDetails* _tmp37_;
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp28_ = value;
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp29_ = row_entry;
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp30_ = gee_map_entry_get_value (_tmp29_);
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp31_ = _tmp30_;
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp32_ = (*((ContactsContactEditorRowData*) _tmp31_)).details;
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp33_ = folks_abstract_field_details_get_parameters (_tmp32_);
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp34_ = _tmp33_;
+#line 294 "../src/contacts-contact-editor.vala"
+                               _tmp35_ = folks_note_field_details_new (_tmp28_, _tmp34_, NULL);
+#line 294 "../src/contacts-contact-editor.vala"
+                               details = _tmp35_;
+#line 295 "../src/contacts-contact-editor.vala"
+                               _tmp36_ = new_details;
+#line 295 "../src/contacts-contact-editor.vala"
+                               _tmp37_ = details;
+#line 295 "../src/contacts-contact-editor.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _tmp36_, _tmp37_);
+#line 293 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (details);
+#line 2308 "contacts-contact-editor.c"
+                       }
+#line 287 "../src/contacts-contact-editor.vala"
+                       _g_free0 (value);
+#line 287 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (text);
+#line 287 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (row_entry);
+#line 2316 "contacts-contact-editor.c"
+               }
+#line 287 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_row_entry_it);
+#line 2320 "contacts-contact-editor.c"
+       }
+#line 298 "../src/contacts-contact-editor.vala"
+       _tmp38_ = new_details;
+#line 298 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp39_, G_TYPE_FROM_INSTANCE ((GObject*) _tmp38_));
+#line 298 "../src/contacts-contact-editor.vala"
+       new_value = _tmp39_;
+#line 299 "../src/contacts-contact-editor.vala"
+       _tmp40_ = new_details;
+#line 299 "../src/contacts-contact-editor.vala"
+       g_value_set_object (&new_value, (GObject*) _tmp40_);
+#line 300 "../src/contacts-contact-editor.vala"
+       *result = new_value;
+#line 300 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (new_details);
+#line 300 "../src/contacts-contact-editor.vala"
+       return;
+#line 2338 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_get_value_from_addresses (ContactsContactEditor* self,
+                                                  GeeHashMap* rows,
+                                                  GValue* result)
+{
+       GeeHashSet* new_details = NULL;
+       GeeHashSet* _tmp0_;
+       GValue new_value = {0};
+       GeeHashSet* _tmp99_;
+       GValue _tmp100_ = {0};
+       GeeHashSet* _tmp101_;
+#line 303 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 303 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (rows != NULL);
+#line 304 "../src/contacts-contact-editor.vala"
+       _tmp0_ = gee_hash_set_new (FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 304 "../src/contacts-contact-editor.vala"
+       new_details = _tmp0_;
+#line 2360 "contacts-contact-editor.c"
+       {
+               GeeIterator* _row_entry_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 306 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_entries ((GeeAbstractMap*) rows);
+#line 306 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 306 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 306 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 306 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 306 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 306 "../src/contacts-contact-editor.vala"
+               _row_entry_it = _tmp5_;
+#line 306 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 2384 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeMapEntry* row_entry = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       ContactsTypeCombo* combo = NULL;
+                       GtkGrid* _tmp9_;
+                       GeeMapEntry* _tmp10_;
+                       gconstpointer _tmp11_;
+                       gint _tmp12_;
+                       GtkWidget* _tmp13_;
+                       ContactsTypeCombo* _tmp14_;
+                       ContactsAddressEditor* addr_editor = NULL;
+                       GtkGrid* _tmp15_;
+                       GeeMapEntry* _tmp16_;
+                       gconstpointer _tmp17_;
+                       gint _tmp18_;
+                       GtkWidget* _tmp19_;
+                       ContactsAddressEditor* _tmp20_;
+                       ContactsTypeCombo* _tmp21_;
+                       ContactsTypeDescriptor* _tmp22_;
+                       ContactsTypeDescriptor* _tmp23_;
+                       GeeMapEntry* _tmp24_;
+                       gconstpointer _tmp25_;
+                       ContactsContactEditorRowData* _tmp26_;
+                       FolksAbstractFieldDetails* _tmp27_;
+                       FolksPostalAddress* new_value = NULL;
+                       ContactsAddressEditor* _tmp28_;
+                       FolksPostalAddressFieldDetails* _tmp29_;
+                       gconstpointer _tmp30_;
+                       FolksPostalAddress* _tmp31_;
+                       const gchar* _tmp32_;
+                       const gchar* _tmp33_;
+                       ContactsAddressEditor* _tmp34_;
+                       FolksPostalAddressFieldDetails* _tmp35_;
+                       gconstpointer _tmp36_;
+                       FolksPostalAddress* _tmp37_;
+                       const gchar* _tmp38_;
+                       const gchar* _tmp39_;
+                       ContactsAddressEditor* _tmp40_;
+                       FolksPostalAddressFieldDetails* _tmp41_;
+                       gconstpointer _tmp42_;
+                       FolksPostalAddress* _tmp43_;
+                       const gchar* _tmp44_;
+                       const gchar* _tmp45_;
+                       ContactsAddressEditor* _tmp46_;
+                       FolksPostalAddressFieldDetails* _tmp47_;
+                       gconstpointer _tmp48_;
+                       FolksPostalAddress* _tmp49_;
+                       const gchar* _tmp50_;
+                       const gchar* _tmp51_;
+                       ContactsAddressEditor* _tmp52_;
+                       FolksPostalAddressFieldDetails* _tmp53_;
+                       gconstpointer _tmp54_;
+                       FolksPostalAddress* _tmp55_;
+                       const gchar* _tmp56_;
+                       const gchar* _tmp57_;
+                       ContactsAddressEditor* _tmp58_;
+                       FolksPostalAddressFieldDetails* _tmp59_;
+                       gconstpointer _tmp60_;
+                       FolksPostalAddress* _tmp61_;
+                       const gchar* _tmp62_;
+                       const gchar* _tmp63_;
+                       ContactsAddressEditor* _tmp64_;
+                       FolksPostalAddressFieldDetails* _tmp65_;
+                       gconstpointer _tmp66_;
+                       FolksPostalAddress* _tmp67_;
+                       const gchar* _tmp68_;
+                       const gchar* _tmp69_;
+                       ContactsAddressEditor* _tmp70_;
+                       FolksPostalAddressFieldDetails* _tmp71_;
+                       gconstpointer _tmp72_;
+                       FolksPostalAddress* _tmp73_;
+                       const gchar* _tmp74_;
+                       const gchar* _tmp75_;
+                       ContactsAddressEditor* _tmp76_;
+                       FolksPostalAddressFieldDetails* _tmp77_;
+                       const gchar* _tmp78_;
+                       const gchar* _tmp79_;
+                       FolksPostalAddress* _tmp80_;
+                       FolksPostalAddressFieldDetails* details = NULL;
+                       FolksPostalAddress* _tmp89_;
+                       GeeMapEntry* _tmp90_;
+                       gconstpointer _tmp91_;
+                       ContactsContactEditorRowData* _tmp92_;
+                       FolksAbstractFieldDetails* _tmp93_;
+                       GeeMultiMap* _tmp94_;
+                       GeeMultiMap* _tmp95_;
+                       FolksPostalAddressFieldDetails* _tmp96_;
+                       GeeHashSet* _tmp97_;
+                       FolksPostalAddressFieldDetails* _tmp98_;
+#line 306 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _row_entry_it;
+#line 306 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 306 "../src/contacts-contact-editor.vala"
+                               break;
+#line 2481 "contacts-contact-editor.c"
+                       }
+#line 306 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _row_entry_it;
+#line 306 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 306 "../src/contacts-contact-editor.vala"
+                       row_entry = (GeeMapEntry*) _tmp8_;
+#line 307 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 307 "../src/contacts-contact-editor.vala"
+                       _tmp10_ = row_entry;
+#line 307 "../src/contacts-contact-editor.vala"
+                       _tmp11_ = gee_map_entry_get_key (_tmp10_);
+#line 307 "../src/contacts-contact-editor.vala"
+                       _tmp12_ = _tmp11_;
+#line 307 "../src/contacts-contact-editor.vala"
+                       _tmp13_ = gtk_grid_get_child_at (_tmp9_, 0, (gint) ((gintptr) _tmp12_));
+#line 307 "../src/contacts-contact-editor.vala"
+                       _tmp14_ = _g_object_ref0 (CONTACTS_IS_TYPECOMBO (_tmp13_) ? ((ContactsTypeCombo*) 
_tmp13_) : NULL);
+#line 307 "../src/contacts-contact-editor.vala"
+                       combo = _tmp14_;
+#line 308 "../src/contacts-contact-editor.vala"
+                       _tmp15_ = ((ContactsContactForm*) self)->container_grid;
+#line 308 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = row_entry;
+#line 308 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = gee_map_entry_get_key (_tmp16_);
+#line 308 "../src/contacts-contact-editor.vala"
+                       _tmp18_ = _tmp17_;
+#line 308 "../src/contacts-contact-editor.vala"
+                       _tmp19_ = gtk_grid_get_child_at (_tmp15_, 1, (gint) ((gintptr) _tmp18_));
+#line 308 "../src/contacts-contact-editor.vala"
+                       _tmp20_ = _g_object_ref0 (CONTACTS_IS_ADDRESS_EDITOR (_tmp19_) ? 
((ContactsAddressEditor*) _tmp19_) : NULL);
+#line 308 "../src/contacts-contact-editor.vala"
+                       addr_editor = _tmp20_;
+#line 309 "../src/contacts-contact-editor.vala"
+                       _tmp21_ = combo;
+#line 309 "../src/contacts-contact-editor.vala"
+                       _tmp22_ = contacts_typecombo_get_active_descriptor (_tmp21_);
+#line 309 "../src/contacts-contact-editor.vala"
+                       _tmp23_ = _tmp22_;
+#line 309 "../src/contacts-contact-editor.vala"
+                       _tmp24_ = row_entry;
+#line 309 "../src/contacts-contact-editor.vala"
+                       _tmp25_ = gee_map_entry_get_value (_tmp24_);
+#line 309 "../src/contacts-contact-editor.vala"
+                       _tmp26_ = _tmp25_;
+#line 309 "../src/contacts-contact-editor.vala"
+                       _tmp27_ = (*((ContactsContactEditorRowData*) _tmp26_)).details;
+#line 309 "../src/contacts-contact-editor.vala"
+                       contacts_typedescriptor_save_to_field_details (_tmp23_, _tmp27_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp28_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp29_ = _tmp28_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp30_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp29_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp31_ = _tmp30_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp32_ = folks_postal_address_get_po_box ((FolksPostalAddress*) _tmp31_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp33_ = _tmp32_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp34_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp35_ = _tmp34_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp36_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp35_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp37_ = _tmp36_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp38_ = folks_postal_address_get_extension ((FolksPostalAddress*) _tmp37_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp39_ = _tmp38_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp40_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp41_ = _tmp40_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp42_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp41_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp43_ = _tmp42_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp44_ = folks_postal_address_get_street ((FolksPostalAddress*) _tmp43_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp45_ = _tmp44_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp46_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp47_ = _tmp46_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp48_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp47_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp49_ = _tmp48_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp50_ = folks_postal_address_get_locality ((FolksPostalAddress*) _tmp49_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp51_ = _tmp50_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp52_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp53_ = _tmp52_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp54_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp53_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp55_ = _tmp54_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp56_ = folks_postal_address_get_region ((FolksPostalAddress*) _tmp55_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp57_ = _tmp56_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp58_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp59_ = _tmp58_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp60_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp59_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp61_ = _tmp60_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp62_ = folks_postal_address_get_postal_code ((FolksPostalAddress*) _tmp61_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp63_ = _tmp62_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp64_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp65_ = _tmp64_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp66_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp65_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp67_ = _tmp66_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp68_ = folks_postal_address_get_country ((FolksPostalAddress*) _tmp67_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp69_ = _tmp68_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp70_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp71_ = _tmp70_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp72_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) 
_tmp71_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp73_ = _tmp72_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp74_ = folks_postal_address_get_address_format ((FolksPostalAddress*) _tmp73_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp75_ = _tmp74_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp76_ = addr_editor;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp77_ = _tmp76_->details;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp78_ = folks_abstract_field_details_get_id ((FolksAbstractFieldDetails*) _tmp77_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp79_ = _tmp78_;
+#line 311 "../src/contacts-contact-editor.vala"
+                       _tmp80_ = folks_postal_address_new (_tmp33_, _tmp39_, _tmp45_, _tmp51_, _tmp57_, 
_tmp63_, _tmp69_, _tmp75_, _tmp79_);
+#line 311 "../src/contacts-contact-editor.vala"
+                       new_value = _tmp80_;
+#line 2641 "contacts-contact-editor.c"
+                       {
+                               gint i = 0;
+#line 320 "../src/contacts-contact-editor.vala"
+                               i = 0;
+#line 2646 "contacts-contact-editor.c"
+                               {
+                                       gboolean _tmp81_ = FALSE;
+#line 320 "../src/contacts-contact-editor.vala"
+                                       _tmp81_ = TRUE;
+#line 320 "../src/contacts-contact-editor.vala"
+                                       while (TRUE) {
+#line 2653 "contacts-contact-editor.c"
+                                               ContactsAddressEditor* _tmp83_;
+                                               FolksPostalAddress* _tmp84_;
+                                               const gchar* _tmp85_;
+                                               ContactsAddressEditor* _tmp86_;
+                                               GtkEntry* _tmp87_;
+                                               const gchar* _tmp88_;
+#line 320 "../src/contacts-contact-editor.vala"
+                                               if (!_tmp81_) {
+#line 2662 "contacts-contact-editor.c"
+                                                       gint _tmp82_;
+#line 320 "../src/contacts-contact-editor.vala"
+                                                       _tmp82_ = i;
+#line 320 "../src/contacts-contact-editor.vala"
+                                                       i = _tmp82_ + 1;
+#line 2668 "contacts-contact-editor.c"
+                                               }
+#line 320 "../src/contacts-contact-editor.vala"
+                                               _tmp81_ = FALSE;
+#line 320 "../src/contacts-contact-editor.vala"
+                                               _tmp83_ = addr_editor;
+#line 320 "../src/contacts-contact-editor.vala"
+                                               if (!(i < 7)) {
+#line 320 "../src/contacts-contact-editor.vala"
+                                                       break;
+#line 2678 "contacts-contact-editor.c"
+                                               }
+#line 321 "../src/contacts-contact-editor.vala"
+                                               _tmp84_ = new_value;
+#line 321 "../src/contacts-contact-editor.vala"
+                                               _tmp85_ = CONTACTS_ADDRESS_EDITOR_postal_element_props[i];
+#line 321 "../src/contacts-contact-editor.vala"
+                                               _tmp86_ = addr_editor;
+#line 321 "../src/contacts-contact-editor.vala"
+                                               _tmp87_ = _tmp86_->entries[i];
+#line 321 "../src/contacts-contact-editor.vala"
+                                               _tmp88_ = gtk_entry_get_text (_tmp87_);
+#line 321 "../src/contacts-contact-editor.vala"
+                                               g_object_set ((GObject*) _tmp84_, _tmp85_, _tmp88_, NULL);
+#line 2692 "contacts-contact-editor.c"
+                                       }
+                               }
+                       }
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp89_ = new_value;
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp90_ = row_entry;
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp91_ = gee_map_entry_get_value (_tmp90_);
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp92_ = _tmp91_;
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp93_ = (*((ContactsContactEditorRowData*) _tmp92_)).details;
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp94_ = folks_abstract_field_details_get_parameters (_tmp93_);
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp95_ = _tmp94_;
+#line 323 "../src/contacts-contact-editor.vala"
+                       _tmp96_ = folks_postal_address_field_details_new (_tmp89_, _tmp95_);
+#line 323 "../src/contacts-contact-editor.vala"
+                       details = _tmp96_;
+#line 324 "../src/contacts-contact-editor.vala"
+                       _tmp97_ = new_details;
+#line 324 "../src/contacts-contact-editor.vala"
+                       _tmp98_ = details;
+#line 324 "../src/contacts-contact-editor.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp97_, _tmp98_);
+#line 306 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (details);
+#line 306 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (new_value);
+#line 306 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (addr_editor);
+#line 306 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (combo);
+#line 306 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (row_entry);
+#line 2730 "contacts-contact-editor.c"
+               }
+#line 306 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_row_entry_it);
+#line 2734 "contacts-contact-editor.c"
+       }
+#line 326 "../src/contacts-contact-editor.vala"
+       _tmp99_ = new_details;
+#line 326 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp100_, G_TYPE_FROM_INSTANCE ((GObject*) _tmp99_));
+#line 326 "../src/contacts-contact-editor.vala"
+       new_value = _tmp100_;
+#line 327 "../src/contacts-contact-editor.vala"
+       _tmp101_ = new_details;
+#line 327 "../src/contacts-contact-editor.vala"
+       g_value_set_object (&new_value, (GObject*) _tmp101_);
+#line 328 "../src/contacts-contact-editor.vala"
+       *result = new_value;
+#line 328 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (new_details);
+#line 328 "../src/contacts-contact-editor.vala"
+       return;
+#line 2752 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_set_field_changed (ContactsContactEditor* self,
+                                           gint row)
+{
+#line 331 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 2761 "contacts-contact-editor.c"
+       {
+               GeeIterator* _fields_it = NULL;
+               GeeHashMap* _tmp0_;
+               GeeCollection* _tmp1_;
+               GeeCollection* _tmp2_;
+               GeeCollection* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 332 "../src/contacts-contact-editor.vala"
+               _tmp0_ = self->priv->writable_personas;
+#line 332 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_values ((GeeAbstractMap*) _tmp0_);
+#line 332 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 332 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 332 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 332 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 332 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 332 "../src/contacts-contact-editor.vala"
+               _fields_it = _tmp5_;
+#line 332 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 2788 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeHashMap* fields = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+#line 332 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _fields_it;
+#line 332 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 332 "../src/contacts-contact-editor.vala"
+                               break;
+#line 2799 "contacts-contact-editor.c"
+                       }
+#line 332 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _fields_it;
+#line 332 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 332 "../src/contacts-contact-editor.vala"
+                       fields = (GeeHashMap*) _tmp8_;
+#line 2807 "contacts-contact-editor.c"
+                       {
+                               GeeIterator* _entry_it = NULL;
+                               GeeHashMap* _tmp9_;
+                               GeeSet* _tmp10_;
+                               GeeSet* _tmp11_;
+                               GeeSet* _tmp12_;
+                               GeeIterator* _tmp13_;
+                               GeeIterator* _tmp14_;
+#line 333 "../src/contacts-contact-editor.vala"
+                               _tmp9_ = fields;
+#line 333 "../src/contacts-contact-editor.vala"
+                               _tmp10_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp9_);
+#line 333 "../src/contacts-contact-editor.vala"
+                               _tmp11_ = _tmp10_;
+#line 333 "../src/contacts-contact-editor.vala"
+                               _tmp12_ = _tmp11_;
+#line 333 "../src/contacts-contact-editor.vala"
+                               _tmp13_ = gee_iterable_iterator ((GeeIterable*) _tmp12_);
+#line 333 "../src/contacts-contact-editor.vala"
+                               _tmp14_ = _tmp13_;
+#line 333 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_tmp12_);
+#line 333 "../src/contacts-contact-editor.vala"
+                               _entry_it = _tmp14_;
+#line 333 "../src/contacts-contact-editor.vala"
+                               while (TRUE) {
+#line 2834 "contacts-contact-editor.c"
+                                       GeeIterator* _tmp15_;
+                                       GeeMapEntry* entry = NULL;
+                                       GeeIterator* _tmp16_;
+                                       gpointer _tmp17_;
+                                       GeeMapEntry* _tmp18_;
+                                       gconstpointer _tmp19_;
+                                       ContactsContactEditorField* _tmp20_;
+                                       GeeHashMap* _tmp21_;
+                                       GeeSet* _tmp22_;
+                                       GeeSet* _tmp23_;
+                                       GeeSet* _tmp24_;
+                                       gboolean _tmp25_;
+#line 333 "../src/contacts-contact-editor.vala"
+                                       _tmp15_ = _entry_it;
+#line 333 "../src/contacts-contact-editor.vala"
+                                       if (!gee_iterator_next (_tmp15_)) {
+#line 333 "../src/contacts-contact-editor.vala"
+                                               break;
+#line 2853 "contacts-contact-editor.c"
+                                       }
+#line 333 "../src/contacts-contact-editor.vala"
+                                       _tmp16_ = _entry_it;
+#line 333 "../src/contacts-contact-editor.vala"
+                                       _tmp17_ = gee_iterator_get (_tmp16_);
+#line 333 "../src/contacts-contact-editor.vala"
+                                       entry = (GeeMapEntry*) _tmp17_;
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp18_ = entry;
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp19_ = gee_map_entry_get_value (_tmp18_);
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp20_ = _tmp19_;
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp21_ = (*((ContactsContactEditorField*) _tmp20_)).rows;
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp22_ = gee_abstract_map_get_keys ((GeeAbstractMap*) _tmp21_);
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp23_ = _tmp22_;
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp24_ = _tmp23_;
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _tmp25_ = gee_collection_contains ((GeeCollection*) _tmp24_, 
(gpointer) ((gintptr) row));
+#line 334 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp24_);
+#line 334 "../src/contacts-contact-editor.vala"
+                                       if (_tmp25_) {
+#line 2881 "contacts-contact-editor.c"
+                                               GeeMapEntry* _tmp26_;
+                                               gconstpointer _tmp27_;
+                                               ContactsContactEditorField* _tmp28_;
+                                               GeeMapEntry* _tmp29_;
+                                               gconstpointer _tmp30_;
+                                               ContactsContactEditorField* _tmp31_;
+#line 335 "../src/contacts-contact-editor.vala"
+                                               _tmp26_ = entry;
+#line 335 "../src/contacts-contact-editor.vala"
+                                               _tmp27_ = gee_map_entry_get_value (_tmp26_);
+#line 335 "../src/contacts-contact-editor.vala"
+                                               _tmp28_ = _tmp27_;
+#line 335 "../src/contacts-contact-editor.vala"
+                                               if ((*((ContactsContactEditorField*) _tmp28_)).changed) {
+#line 336 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (entry);
+#line 336 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_entry_it);
+#line 336 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (fields);
+#line 336 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_fields_it);
+#line 336 "../src/contacts-contact-editor.vala"
+                                                       return;
+#line 2906 "contacts-contact-editor.c"
+                                               }
+#line 338 "../src/contacts-contact-editor.vala"
+                                               _tmp29_ = entry;
+#line 338 "../src/contacts-contact-editor.vala"
+                                               _tmp30_ = gee_map_entry_get_value (_tmp29_);
+#line 338 "../src/contacts-contact-editor.vala"
+                                               _tmp31_ = _tmp30_;
+#line 338 "../src/contacts-contact-editor.vala"
+                                               (*((ContactsContactEditorField*) _tmp31_)).changed = TRUE;
+#line 339 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (entry);
+#line 339 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_entry_it);
+#line 339 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (fields);
+#line 339 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_fields_it);
+#line 339 "../src/contacts-contact-editor.vala"
+                                               return;
+#line 2926 "contacts-contact-editor.c"
+                                       }
+#line 333 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (entry);
+#line 2930 "contacts-contact-editor.c"
+                               }
+#line 333 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_entry_it);
+#line 2934 "contacts-contact-editor.c"
+                       }
+#line 332 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (fields);
+#line 2938 "contacts-contact-editor.c"
+               }
+#line 332 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_fields_it);
+#line 2942 "contacts-contact-editor.c"
+       }
+}
+
+static void
+contacts_contact_editor_remove_row (ContactsContactEditor* self,
+                                    gint row)
+{
+#line 345 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 2952 "contacts-contact-editor.c"
+       {
+               GeeIterator* _fields_it = NULL;
+               GeeHashMap* _tmp0_;
+               GeeCollection* _tmp1_;
+               GeeCollection* _tmp2_;
+               GeeCollection* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 346 "../src/contacts-contact-editor.vala"
+               _tmp0_ = self->priv->writable_personas;
+#line 346 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_values ((GeeAbstractMap*) _tmp0_);
+#line 346 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 346 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 346 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 346 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 346 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 346 "../src/contacts-contact-editor.vala"
+               _fields_it = _tmp5_;
+#line 346 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 2979 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeHashMap* fields = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+#line 346 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _fields_it;
+#line 346 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 346 "../src/contacts-contact-editor.vala"
+                               break;
+#line 2990 "contacts-contact-editor.c"
+                       }
+#line 346 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _fields_it;
+#line 346 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 346 "../src/contacts-contact-editor.vala"
+                       fields = (GeeHashMap*) _tmp8_;
+#line 2998 "contacts-contact-editor.c"
+                       {
+                               GeeIterator* _field_entry_it = NULL;
+                               GeeHashMap* _tmp9_;
+                               GeeSet* _tmp10_;
+                               GeeSet* _tmp11_;
+                               GeeSet* _tmp12_;
+                               GeeIterator* _tmp13_;
+                               GeeIterator* _tmp14_;
+#line 347 "../src/contacts-contact-editor.vala"
+                               _tmp9_ = fields;
+#line 347 "../src/contacts-contact-editor.vala"
+                               _tmp10_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp9_);
+#line 347 "../src/contacts-contact-editor.vala"
+                               _tmp11_ = _tmp10_;
+#line 347 "../src/contacts-contact-editor.vala"
+                               _tmp12_ = _tmp11_;
+#line 347 "../src/contacts-contact-editor.vala"
+                               _tmp13_ = gee_iterable_iterator ((GeeIterable*) _tmp12_);
+#line 347 "../src/contacts-contact-editor.vala"
+                               _tmp14_ = _tmp13_;
+#line 347 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_tmp12_);
+#line 347 "../src/contacts-contact-editor.vala"
+                               _field_entry_it = _tmp14_;
+#line 347 "../src/contacts-contact-editor.vala"
+                               while (TRUE) {
+#line 3025 "contacts-contact-editor.c"
+                                       GeeIterator* _tmp15_;
+                                       GeeMapEntry* field_entry = NULL;
+                                       GeeIterator* _tmp16_;
+                                       gpointer _tmp17_;
+#line 347 "../src/contacts-contact-editor.vala"
+                                       _tmp15_ = _field_entry_it;
+#line 347 "../src/contacts-contact-editor.vala"
+                                       if (!gee_iterator_next (_tmp15_)) {
+#line 347 "../src/contacts-contact-editor.vala"
+                                               break;
+#line 3036 "contacts-contact-editor.c"
+                                       }
+#line 347 "../src/contacts-contact-editor.vala"
+                                       _tmp16_ = _field_entry_it;
+#line 347 "../src/contacts-contact-editor.vala"
+                                       _tmp17_ = gee_iterator_get (_tmp16_);
+#line 347 "../src/contacts-contact-editor.vala"
+                                       field_entry = (GeeMapEntry*) _tmp17_;
+#line 3044 "contacts-contact-editor.c"
+                                       {
+                                               GeeIterator* _idx_it = NULL;
+                                               GeeMapEntry* _tmp18_;
+                                               gconstpointer _tmp19_;
+                                               ContactsContactEditorField* _tmp20_;
+                                               GeeHashMap* _tmp21_;
+                                               GeeSet* _tmp22_;
+                                               GeeSet* _tmp23_;
+                                               GeeSet* _tmp24_;
+                                               GeeIterator* _tmp25_;
+                                               GeeIterator* _tmp26_;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp18_ = field_entry;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp19_ = gee_map_entry_get_value (_tmp18_);
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp20_ = _tmp19_;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp21_ = (*((ContactsContactEditorField*) _tmp20_)).rows;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp22_ = gee_abstract_map_get_keys ((GeeAbstractMap*) 
_tmp21_);
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp23_ = _tmp22_;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp24_ = _tmp23_;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp25_ = gee_iterable_iterator ((GeeIterable*) _tmp24_);
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _tmp26_ = _tmp25_;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp24_);
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _idx_it = _tmp26_;
+#line 348 "../src/contacts-contact-editor.vala"
+                                               while (TRUE) {
+#line 3080 "contacts-contact-editor.c"
+                                                       GeeIterator* _tmp27_;
+                                                       gint idx = 0;
+                                                       GeeIterator* _tmp28_;
+                                                       gpointer _tmp29_;
+#line 348 "../src/contacts-contact-editor.vala"
+                                                       _tmp27_ = _idx_it;
+#line 348 "../src/contacts-contact-editor.vala"
+                                                       if (!gee_iterator_next (_tmp27_)) {
+#line 348 "../src/contacts-contact-editor.vala"
+                                                               break;
+#line 3091 "contacts-contact-editor.c"
+                                                       }
+#line 348 "../src/contacts-contact-editor.vala"
+                                                       _tmp28_ = _idx_it;
+#line 348 "../src/contacts-contact-editor.vala"
+                                                       _tmp29_ = gee_iterator_get (_tmp28_);
+#line 348 "../src/contacts-contact-editor.vala"
+                                                       idx = (gint) ((gintptr) _tmp29_);
+#line 349 "../src/contacts-contact-editor.vala"
+                                                       if (idx == row) {
+#line 3101 "contacts-contact-editor.c"
+                                                               GtkWidget* child = NULL;
+                                                               GtkGrid* _tmp30_;
+                                                               GtkWidget* _tmp31_;
+                                                               GtkWidget* _tmp32_;
+                                                               GtkWidget* _tmp33_;
+                                                               GtkGrid* _tmp34_;
+                                                               GtkWidget* _tmp35_;
+                                                               GtkWidget* _tmp36_;
+                                                               GtkWidget* _tmp37_;
+                                                               GtkGrid* _tmp38_;
+                                                               GtkWidget* _tmp39_;
+                                                               GtkWidget* _tmp40_;
+                                                               GtkWidget* _tmp41_;
+                                                               GeeMapEntry* _tmp42_;
+                                                               gconstpointer _tmp43_;
+                                                               ContactsContactEditorField* _tmp44_;
+                                                               GeeMapEntry* _tmp45_;
+                                                               gconstpointer _tmp46_;
+                                                               ContactsContactEditorField* _tmp47_;
+                                                               GeeHashMap* _tmp48_;
+#line 350 "../src/contacts-contact-editor.vala"
+                                                               _tmp30_ = ((ContactsContactForm*) 
self)->container_grid;
+#line 350 "../src/contacts-contact-editor.vala"
+                                                               _tmp31_ = gtk_grid_get_child_at (_tmp30_, 0, 
row);
+#line 350 "../src/contacts-contact-editor.vala"
+                                                               _tmp32_ = _g_object_ref0 (_tmp31_);
+#line 350 "../src/contacts-contact-editor.vala"
+                                                               child = _tmp32_;
+#line 351 "../src/contacts-contact-editor.vala"
+                                                               _tmp33_ = child;
+#line 351 "../src/contacts-contact-editor.vala"
+                                                               gtk_widget_destroy (_tmp33_);
+#line 352 "../src/contacts-contact-editor.vala"
+                                                               _tmp34_ = ((ContactsContactForm*) 
self)->container_grid;
+#line 352 "../src/contacts-contact-editor.vala"
+                                                               _tmp35_ = gtk_grid_get_child_at (_tmp34_, 1, 
row);
+#line 352 "../src/contacts-contact-editor.vala"
+                                                               _tmp36_ = _g_object_ref0 (_tmp35_);
+#line 352 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (child);
+#line 352 "../src/contacts-contact-editor.vala"
+                                                               child = _tmp36_;
+#line 353 "../src/contacts-contact-editor.vala"
+                                                               _tmp37_ = child;
+#line 353 "../src/contacts-contact-editor.vala"
+                                                               gtk_widget_destroy (_tmp37_);
+#line 354 "../src/contacts-contact-editor.vala"
+                                                               _tmp38_ = ((ContactsContactForm*) 
self)->container_grid;
+#line 354 "../src/contacts-contact-editor.vala"
+                                                               _tmp39_ = gtk_grid_get_child_at (_tmp38_, 2, 
row);
+#line 354 "../src/contacts-contact-editor.vala"
+                                                               _tmp40_ = _g_object_ref0 (_tmp39_);
+#line 354 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (child);
+#line 354 "../src/contacts-contact-editor.vala"
+                                                               child = _tmp40_;
+#line 355 "../src/contacts-contact-editor.vala"
+                                                               _tmp41_ = child;
+#line 355 "../src/contacts-contact-editor.vala"
+                                                               gtk_widget_destroy (_tmp41_);
+#line 357 "../src/contacts-contact-editor.vala"
+                                                               _tmp42_ = field_entry;
+#line 357 "../src/contacts-contact-editor.vala"
+                                                               _tmp43_ = gee_map_entry_get_value (_tmp42_);
+#line 357 "../src/contacts-contact-editor.vala"
+                                                               _tmp44_ = _tmp43_;
+#line 357 "../src/contacts-contact-editor.vala"
+                                                               (*((ContactsContactEditorField*) 
_tmp44_)).changed = TRUE;
+#line 358 "../src/contacts-contact-editor.vala"
+                                                               _tmp45_ = field_entry;
+#line 358 "../src/contacts-contact-editor.vala"
+                                                               _tmp46_ = gee_map_entry_get_value (_tmp45_);
+#line 358 "../src/contacts-contact-editor.vala"
+                                                               _tmp47_ = _tmp46_;
+#line 358 "../src/contacts-contact-editor.vala"
+                                                               _tmp48_ = (*((ContactsContactEditorField*) 
_tmp47_)).rows;
+#line 358 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_unset ((GeeAbstractMap*) 
_tmp48_, (gpointer) ((gintptr) row), NULL);
+#line 359 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (child);
+#line 359 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_idx_it);
+#line 359 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (field_entry);
+#line 359 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_field_entry_it);
+#line 359 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (fields);
+#line 359 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_fields_it);
+#line 359 "../src/contacts-contact-editor.vala"
+                                                               return;
+#line 3194 "contacts-contact-editor.c"
+                                                       }
+                                               }
+#line 348 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_idx_it);
+#line 3199 "contacts-contact-editor.c"
+                                       }
+#line 347 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (field_entry);
+#line 3203 "contacts-contact-editor.c"
+                               }
+#line 347 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_field_entry_it);
+#line 3207 "contacts-contact-editor.c"
+                       }
+#line 346 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (fields);
+#line 3211 "contacts-contact-editor.c"
+               }
+#line 346 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_fields_it);
+#line 3215 "contacts-contact-editor.c"
+       }
+}
+
+static Block10Data*
+block10_data_ref (Block10Data* _data10_)
+{
+#line 366 "../src/contacts-contact-editor.vala"
+       g_atomic_int_inc (&_data10_->_ref_count_);
+#line 366 "../src/contacts-contact-editor.vala"
+       return _data10_;
+#line 3226 "contacts-contact-editor.c"
+}
+
+static void
+block10_data_unref (void * _userdata_)
+{
+       Block10Data* _data10_;
+       _data10_ = (Block10Data*) _userdata_;
+#line 366 "../src/contacts-contact-editor.vala"
+       if (g_atomic_int_dec_and_test (&_data10_->_ref_count_)) {
+#line 3236 "contacts-contact-editor.c"
+               ContactsContactEditor* self;
+#line 366 "../src/contacts-contact-editor.vala"
+               self = _data10_->self;
+#line 366 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data10_->delete_button);
+#line 366 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data10_->value_entry);
+#line 366 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data10_->combo);
+#line 366 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (self);
+#line 366 "../src/contacts-contact-editor.vala"
+               g_slice_free (Block10Data, _data10_);
+#line 3250 "contacts-contact-editor.c"
+       }
+}
+
+static void
+__lambda24_ (Block10Data* _data10_,
+             GtkComboBox* c)
+{
+       ContactsContactEditor* self;
+       ContactsTypeCombo* _tmp0_;
+#line 391 "../src/contacts-contact-editor.vala"
+       self = _data10_->self;
+#line 391 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (c != NULL);
+#line 392 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data10_->combo;
+#line 392 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _tmp0_));
+#line 3268 "contacts-contact-editor.c"
+}
+
+static void
+___lambda24__gtk_combo_box_changed (GtkComboBox* _sender,
+                                    gpointer self)
+{
+#line 391 "../src/contacts-contact-editor.vala"
+       __lambda24_ (self, _sender);
+#line 3277 "contacts-contact-editor.c"
+}
+
+static void
+__lambda25_ (Block10Data* _data10_)
+{
+       ContactsContactEditor* self;
+       GtkEntry* _tmp0_;
+#line 394 "../src/contacts-contact-editor.vala"
+       self = _data10_->self;
+#line 395 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data10_->value_entry;
+#line 395 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _tmp0_));
+#line 3291 "contacts-contact-editor.c"
+}
+
+static void
+___lambda25__gtk_editable_changed (GtkEditable* _sender,
+                                   gpointer self)
+{
+#line 394 "../src/contacts-contact-editor.vala"
+       __lambda25_ (self);
+#line 3300 "contacts-contact-editor.c"
+}
+
+static void
+__lambda26_ (Block10Data* _data10_)
+{
+       ContactsContactEditor* self;
+       GtkButton* _tmp0_;
+#line 397 "../src/contacts-contact-editor.vala"
+       self = _data10_->self;
+#line 398 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data10_->delete_button;
+#line 398 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_remove_row (self, contacts_contact_editor_get_current_row (self, (GtkWidget*) 
_tmp0_));
+#line 3314 "contacts-contact-editor.c"
+}
+
+static void
+___lambda26__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 397 "../src/contacts-contact-editor.vala"
+       __lambda26_ (self);
+#line 3323 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_attach_row_with_entry (ContactsContactEditor* self,
+                                               gint row,
+                                               ContactsTypeSet* type_set,
+                                               FolksAbstractFieldDetails* details,
+                                               const gchar* value,
+                                               const gchar* type)
+{
+       Block10Data* _data10_;
+       ContactsTypeCombo* _tmp0_;
+       ContactsTypeCombo* _tmp1_;
+       ContactsTypeCombo* _tmp2_;
+       ContactsTypeCombo* _tmp4_;
+       GtkGrid* _tmp5_;
+       ContactsTypeCombo* _tmp6_;
+       GtkEntry* _tmp7_;
+       GtkEntry* _tmp8_;
+       GtkEntry* _tmp9_;
+       GtkGrid* _tmp10_;
+       GtkEntry* _tmp11_;
+       ContactsTypeSet* _tmp12_;
+       ContactsTypeSet* _tmp13_;
+       GtkButton* _tmp18_;
+       GtkButton* _tmp19_;
+       AtkObject* _tmp20_;
+       GtkGrid* _tmp21_;
+       GtkButton* _tmp22_;
+       ContactsTypeCombo* _tmp23_;
+       GtkEntry* _tmp24_;
+       GtkButton* _tmp25_;
+#line 366 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 366 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (type_set != NULL);
+#line 366 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (details != NULL);
+#line 366 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (value != NULL);
+#line 366 "../src/contacts-contact-editor.vala"
+       _data10_ = g_slice_new0 (Block10Data);
+#line 366 "../src/contacts-contact-editor.vala"
+       _data10_->_ref_count_ = 1;
+#line 366 "../src/contacts-contact-editor.vala"
+       _data10_->self = g_object_ref (self);
+#line 367 "../src/contacts-contact-editor.vala"
+       _tmp0_ = contacts_typecombo_new (type_set);
+#line 367 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp0_);
+#line 367 "../src/contacts-contact-editor.vala"
+       _data10_->combo = _tmp0_;
+#line 368 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _data10_->combo;
+#line 368 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp1_, FALSE);
+#line 369 "../src/contacts-contact-editor.vala"
+       _tmp2_ = _data10_->combo;
+#line 369 "../src/contacts-contact-editor.vala"
+       contacts_typecombo_set_active_from_field_details (_tmp2_, details);
+#line 370 "../src/contacts-contact-editor.vala"
+       if (type != NULL) {
+#line 3386 "contacts-contact-editor.c"
+               ContactsTypeCombo* _tmp3_;
+#line 371 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _data10_->combo;
+#line 371 "../src/contacts-contact-editor.vala"
+               contacts_typecombo_set_active_from_vcard_type (_tmp3_, type);
+#line 3392 "contacts-contact-editor.c"
+       }
+#line 372 "../src/contacts-contact-editor.vala"
+       _tmp4_ = _data10_->combo;
+#line 372 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_valign ((GtkWidget*) _tmp4_, GTK_ALIGN_CENTER);
+#line 373 "../src/contacts-contact-editor.vala"
+       _tmp5_ = ((ContactsContactForm*) self)->container_grid;
+#line 373 "../src/contacts-contact-editor.vala"
+       _tmp6_ = _data10_->combo;
+#line 373 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp5_, (GtkWidget*) _tmp6_, 0, row, 1, 1);
+#line 375 "../src/contacts-contact-editor.vala"
+       _tmp7_ = (GtkEntry*) gtk_entry_new ();
+#line 375 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp7_);
+#line 375 "../src/contacts-contact-editor.vala"
+       _data10_->value_entry = _tmp7_;
+#line 376 "../src/contacts-contact-editor.vala"
+       _tmp8_ = _data10_->value_entry;
+#line 376 "../src/contacts-contact-editor.vala"
+       gtk_entry_set_text (_tmp8_, value);
+#line 377 "../src/contacts-contact-editor.vala"
+       _tmp9_ = _data10_->value_entry;
+#line 377 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp9_, TRUE);
+#line 378 "../src/contacts-contact-editor.vala"
+       _tmp10_ = ((ContactsContactForm*) self)->container_grid;
+#line 378 "../src/contacts-contact-editor.vala"
+       _tmp11_ = _data10_->value_entry;
+#line 378 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp10_, (GtkWidget*) _tmp11_, 1, row, 1, 1);
+#line 380 "../src/contacts-contact-editor.vala"
+       _tmp12_ = contacts_typeset_get_email ();
+#line 380 "../src/contacts-contact-editor.vala"
+       _tmp13_ = _tmp12_;
+#line 380 "../src/contacts-contact-editor.vala"
+       if (type_set == _tmp13_) {
+#line 3430 "contacts-contact-editor.c"
+               GtkEntry* _tmp14_;
+#line 381 "../src/contacts-contact-editor.vala"
+               _tmp14_ = _data10_->value_entry;
+#line 381 "../src/contacts-contact-editor.vala"
+               gtk_entry_set_placeholder_text (_tmp14_, _ ("Add email"));
+#line 3436 "contacts-contact-editor.c"
+       } else {
+               ContactsTypeSet* _tmp15_;
+               ContactsTypeSet* _tmp16_;
+#line 382 "../src/contacts-contact-editor.vala"
+               _tmp15_ = contacts_typeset_get_phone ();
+#line 382 "../src/contacts-contact-editor.vala"
+               _tmp16_ = _tmp15_;
+#line 382 "../src/contacts-contact-editor.vala"
+               if (type_set == _tmp16_) {
+#line 3446 "contacts-contact-editor.c"
+                       GtkEntry* _tmp17_;
+#line 383 "../src/contacts-contact-editor.vala"
+                       _tmp17_ = _data10_->value_entry;
+#line 383 "../src/contacts-contact-editor.vala"
+                       gtk_entry_set_placeholder_text (_tmp17_, _ ("Add number"));
+#line 3452 "contacts-contact-editor.c"
+               }
+       }
+#line 386 "../src/contacts-contact-editor.vala"
+       _tmp18_ = (GtkButton*) gtk_button_new_from_icon_name ("user-trash-symbolic", (GtkIconSize) 
GTK_ICON_SIZE_MENU);
+#line 386 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp18_);
+#line 386 "../src/contacts-contact-editor.vala"
+       _data10_->delete_button = _tmp18_;
+#line 387 "../src/contacts-contact-editor.vala"
+       _tmp19_ = _data10_->delete_button;
+#line 387 "../src/contacts-contact-editor.vala"
+       _tmp20_ = gtk_widget_get_accessible ((GtkWidget*) _tmp19_);
+#line 387 "../src/contacts-contact-editor.vala"
+       atk_object_set_name (_tmp20_, _ ("Delete field"));
+#line 388 "../src/contacts-contact-editor.vala"
+       _tmp21_ = ((ContactsContactForm*) self)->container_grid;
+#line 388 "../src/contacts-contact-editor.vala"
+       _tmp22_ = _data10_->delete_button;
+#line 388 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp21_, (GtkWidget*) _tmp22_, 2, row, 1, 1);
+#line 391 "../src/contacts-contact-editor.vala"
+       _tmp23_ = _data10_->combo;
+#line 391 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data ((GtkComboBox*) _tmp23_, "changed", (GCallback) 
___lambda24__gtk_combo_box_changed, block10_data_ref (_data10_), (GClosureNotify) block10_data_unref, 0);
+#line 394 "../src/contacts-contact-editor.vala"
+       _tmp24_ = _data10_->value_entry;
+#line 394 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data ((GtkEditable*) _tmp24_, "changed", (GCallback) 
___lambda25__gtk_editable_changed, block10_data_ref (_data10_), (GClosureNotify) block10_data_unref, 0);
+#line 397 "../src/contacts-contact-editor.vala"
+       _tmp25_ = _data10_->delete_button;
+#line 397 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data (_tmp25_, "clicked", (GCallback) ___lambda26__gtk_button_clicked, 
block10_data_ref (_data10_), (GClosureNotify) block10_data_unref, 0);
+#line 401 "../src/contacts-contact-editor.vala"
+       if (g_strcmp0 (value, "") == 0) {
+#line 3487 "contacts-contact-editor.c"
+               GtkEntry* _tmp26_;
+#line 402 "../src/contacts-contact-editor.vala"
+               _tmp26_ = _data10_->value_entry;
+#line 402 "../src/contacts-contact-editor.vala"
+               self->priv->focus_widget = (GtkWidget*) _tmp26_;
+#line 3493 "contacts-contact-editor.c"
+       }
+#line 366 "../src/contacts-contact-editor.vala"
+       block10_data_unref (_data10_);
+#line 366 "../src/contacts-contact-editor.vala"
+       _data10_ = NULL;
+#line 3499 "contacts-contact-editor.c"
+}
+
+static Block11Data*
+block11_data_ref (Block11Data* _data11_)
+{
+#line 405 "../src/contacts-contact-editor.vala"
+       g_atomic_int_inc (&_data11_->_ref_count_);
+#line 405 "../src/contacts-contact-editor.vala"
+       return _data11_;
+#line 3509 "contacts-contact-editor.c"
+}
+
+static void
+block11_data_unref (void * _userdata_)
+{
+       Block11Data* _data11_;
+       _data11_ = (Block11Data*) _userdata_;
+#line 405 "../src/contacts-contact-editor.vala"
+       if (g_atomic_int_dec_and_test (&_data11_->_ref_count_)) {
+#line 3519 "contacts-contact-editor.c"
+               ContactsContactEditor* self;
+#line 405 "../src/contacts-contact-editor.vala"
+               self = _data11_->self;
+#line 405 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data11_->delete_button);
+#line 405 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data11_->value_entry);
+#line 405 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (self);
+#line 405 "../src/contacts-contact-editor.vala"
+               g_slice_free (Block11Data, _data11_);
+#line 3531 "contacts-contact-editor.c"
+       }
+}
+
+static void
+__lambda27_ (Block11Data* _data11_)
+{
+       ContactsContactEditor* self;
+       GtkEntry* _tmp0_;
+#line 422 "../src/contacts-contact-editor.vala"
+       self = _data11_->self;
+#line 423 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data11_->value_entry;
+#line 423 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _tmp0_));
+#line 3546 "contacts-contact-editor.c"
+}
+
+static void
+___lambda27__gtk_editable_changed (GtkEditable* _sender,
+                                   gpointer self)
+{
+#line 422 "../src/contacts-contact-editor.vala"
+       __lambda27_ (self);
+#line 3555 "contacts-contact-editor.c"
+}
+
+static void
+__lambda28_ (Block11Data* _data11_)
+{
+       ContactsContactEditor* self;
+       GtkButton* _tmp0_;
+#line 425 "../src/contacts-contact-editor.vala"
+       self = _data11_->self;
+#line 426 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data11_->delete_button;
+#line 426 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_remove_row (self, contacts_contact_editor_get_current_row (self, (GtkWidget*) 
_tmp0_));
+#line 3569 "contacts-contact-editor.c"
+}
+
+static void
+___lambda28__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 425 "../src/contacts-contact-editor.vala"
+       __lambda28_ (self);
+#line 3578 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_attach_row_with_entry_labeled (ContactsContactEditor* self,
+                                                       const gchar* title,
+                                                       FolksAbstractFieldDetails* details,
+                                                       const gchar* value,
+                                                       gint row)
+{
+       Block11Data* _data11_;
+       GtkLabel* title_label = NULL;
+       GtkLabel* _tmp0_;
+       GtkLabel* _tmp1_;
+       GtkLabel* _tmp2_;
+       GtkLabel* _tmp3_;
+       GtkGrid* _tmp4_;
+       GtkLabel* _tmp5_;
+       GtkEntry* _tmp6_;
+       GtkEntry* _tmp7_;
+       GtkEntry* _tmp8_;
+       GtkGrid* _tmp9_;
+       GtkEntry* _tmp10_;
+       GtkButton* _tmp11_;
+       GtkButton* _tmp12_;
+       AtkObject* _tmp13_;
+       GtkGrid* _tmp14_;
+       GtkButton* _tmp15_;
+       GtkEntry* _tmp16_;
+       GtkButton* _tmp17_;
+#line 405 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 405 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (title != NULL);
+#line 405 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (value != NULL);
+#line 405 "../src/contacts-contact-editor.vala"
+       _data11_ = g_slice_new0 (Block11Data);
+#line 405 "../src/contacts-contact-editor.vala"
+       _data11_->_ref_count_ = 1;
+#line 405 "../src/contacts-contact-editor.vala"
+       _data11_->self = g_object_ref (self);
+#line 406 "../src/contacts-contact-editor.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new (title);
+#line 406 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp0_);
+#line 406 "../src/contacts-contact-editor.vala"
+       title_label = _tmp0_;
+#line 407 "../src/contacts-contact-editor.vala"
+       _tmp1_ = title_label;
+#line 407 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp1_, FALSE);
+#line 408 "../src/contacts-contact-editor.vala"
+       _tmp2_ = title_label;
+#line 408 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_START);
+#line 409 "../src/contacts-contact-editor.vala"
+       _tmp3_ = title_label;
+#line 409 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_margin_end ((GtkWidget*) _tmp3_, 6);
+#line 410 "../src/contacts-contact-editor.vala"
+       _tmp4_ = ((ContactsContactForm*) self)->container_grid;
+#line 410 "../src/contacts-contact-editor.vala"
+       _tmp5_ = title_label;
+#line 410 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp4_, (GtkWidget*) _tmp5_, 0, row, 1, 1);
+#line 412 "../src/contacts-contact-editor.vala"
+       _tmp6_ = (GtkEntry*) gtk_entry_new ();
+#line 412 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp6_);
+#line 412 "../src/contacts-contact-editor.vala"
+       _data11_->value_entry = _tmp6_;
+#line 413 "../src/contacts-contact-editor.vala"
+       _tmp7_ = _data11_->value_entry;
+#line 413 "../src/contacts-contact-editor.vala"
+       gtk_entry_set_text (_tmp7_, value);
+#line 414 "../src/contacts-contact-editor.vala"
+       _tmp8_ = _data11_->value_entry;
+#line 414 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp8_, TRUE);
+#line 415 "../src/contacts-contact-editor.vala"
+       _tmp9_ = ((ContactsContactForm*) self)->container_grid;
+#line 415 "../src/contacts-contact-editor.vala"
+       _tmp10_ = _data11_->value_entry;
+#line 415 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp9_, (GtkWidget*) _tmp10_, 1, row, 1, 1);
+#line 417 "../src/contacts-contact-editor.vala"
+       _tmp11_ = (GtkButton*) gtk_button_new_from_icon_name ("user-trash-symbolic", (GtkIconSize) 
GTK_ICON_SIZE_MENU);
+#line 417 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp11_);
+#line 417 "../src/contacts-contact-editor.vala"
+       _data11_->delete_button = _tmp11_;
+#line 418 "../src/contacts-contact-editor.vala"
+       _tmp12_ = _data11_->delete_button;
+#line 418 "../src/contacts-contact-editor.vala"
+       _tmp13_ = gtk_widget_get_accessible ((GtkWidget*) _tmp12_);
+#line 418 "../src/contacts-contact-editor.vala"
+       atk_object_set_name (_tmp13_, _ ("Delete field"));
+#line 419 "../src/contacts-contact-editor.vala"
+       _tmp14_ = ((ContactsContactForm*) self)->container_grid;
+#line 419 "../src/contacts-contact-editor.vala"
+       _tmp15_ = _data11_->delete_button;
+#line 419 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp14_, (GtkWidget*) _tmp15_, 2, row, 1, 1);
+#line 422 "../src/contacts-contact-editor.vala"
+       _tmp16_ = _data11_->value_entry;
+#line 422 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data ((GtkEditable*) _tmp16_, "changed", (GCallback) 
___lambda27__gtk_editable_changed, block11_data_ref (_data11_), (GClosureNotify) block11_data_unref, 0);
+#line 425 "../src/contacts-contact-editor.vala"
+       _tmp17_ = _data11_->delete_button;
+#line 425 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data (_tmp17_, "clicked", (GCallback) ___lambda28__gtk_button_clicked, 
block11_data_ref (_data11_), (GClosureNotify) block11_data_unref, G_CONNECT_AFTER);
+#line 429 "../src/contacts-contact-editor.vala"
+       if (g_strcmp0 (value, "") == 0) {
+#line 3692 "contacts-contact-editor.c"
+               GtkEntry* _tmp18_;
+#line 430 "../src/contacts-contact-editor.vala"
+               _tmp18_ = _data11_->value_entry;
+#line 430 "../src/contacts-contact-editor.vala"
+               self->priv->focus_widget = (GtkWidget*) _tmp18_;
+#line 3698 "contacts-contact-editor.c"
+       }
+#line 405 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (title_label);
+#line 405 "../src/contacts-contact-editor.vala"
+       block11_data_unref (_data11_);
+#line 405 "../src/contacts-contact-editor.vala"
+       _data11_ = NULL;
+#line 3706 "contacts-contact-editor.c"
+}
+
+static Block12Data*
+block12_data_ref (Block12Data* _data12_)
+{
+#line 433 "../src/contacts-contact-editor.vala"
+       g_atomic_int_inc (&_data12_->_ref_count_);
+#line 433 "../src/contacts-contact-editor.vala"
+       return _data12_;
+#line 3716 "contacts-contact-editor.c"
+}
+
+static void
+block12_data_unref (void * _userdata_)
+{
+       Block12Data* _data12_;
+       _data12_ = (Block12Data*) _userdata_;
+#line 433 "../src/contacts-contact-editor.vala"
+       if (g_atomic_int_dec_and_test (&_data12_->_ref_count_)) {
+#line 3726 "contacts-contact-editor.c"
+               ContactsContactEditor* self;
+#line 433 "../src/contacts-contact-editor.vala"
+               self = _data12_->self;
+#line 433 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data12_->delete_button);
+#line 433 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data12_->sw);
+#line 433 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (self);
+#line 433 "../src/contacts-contact-editor.vala"
+               g_slice_free (Block12Data, _data12_);
+#line 3738 "contacts-contact-editor.c"
+       }
+}
+
+static void
+__lambda35_ (Block12Data* _data12_)
+{
+       ContactsContactEditor* self;
+       GtkScrolledWindow* _tmp0_;
+#line 457 "../src/contacts-contact-editor.vala"
+       self = _data12_->self;
+#line 458 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data12_->sw;
+#line 458 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _tmp0_));
+#line 3753 "contacts-contact-editor.c"
+}
+
+static void
+___lambda35__gtk_text_buffer_changed (GtkTextBuffer* _sender,
+                                      gpointer self)
+{
+#line 457 "../src/contacts-contact-editor.vala"
+       __lambda35_ (self);
+#line 3762 "contacts-contact-editor.c"
+}
+
+static void
+__lambda36_ (Block12Data* _data12_)
+{
+       ContactsContactEditor* self;
+       GtkButton* _tmp0_;
+#line 460 "../src/contacts-contact-editor.vala"
+       self = _data12_->self;
+#line 461 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data12_->delete_button;
+#line 461 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_remove_row (self, contacts_contact_editor_get_current_row (self, (GtkWidget*) 
_tmp0_));
+#line 463 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_has_notes_row (self, FALSE);
+#line 3778 "contacts-contact-editor.c"
+}
+
+static void
+___lambda36__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 460 "../src/contacts-contact-editor.vala"
+       __lambda36_ (self);
+#line 3787 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_attach_row_with_text_labeled (ContactsContactEditor* self,
+                                                      const gchar* title,
+                                                      FolksAbstractFieldDetails* details,
+                                                      const gchar* value,
+                                                      gint row)
+{
+       Block12Data* _data12_;
+       GtkLabel* title_label = NULL;
+       GtkLabel* _tmp0_;
+       GtkLabel* _tmp1_;
+       GtkLabel* _tmp2_;
+       GtkLabel* _tmp3_;
+       GtkLabel* _tmp4_;
+       GtkLabel* _tmp5_;
+       GtkGrid* _tmp6_;
+       GtkLabel* _tmp7_;
+       GtkScrolledWindow* _tmp8_;
+       GtkScrolledWindow* _tmp9_;
+       GtkScrolledWindow* _tmp10_;
+       GtkTextView* value_text = NULL;
+       GtkTextView* _tmp11_;
+       GtkTextView* _tmp12_;
+       GtkTextBuffer* _tmp13_;
+       GtkTextView* _tmp14_;
+       GtkScrolledWindow* _tmp15_;
+       GtkTextView* _tmp16_;
+       GtkGrid* _tmp17_;
+       GtkScrolledWindow* _tmp18_;
+       GtkButton* _tmp19_;
+       GtkButton* _tmp20_;
+       AtkObject* _tmp21_;
+       GtkButton* _tmp22_;
+       GtkGrid* _tmp23_;
+       GtkButton* _tmp24_;
+       GtkTextView* _tmp25_;
+       GtkTextBuffer* _tmp26_;
+       GtkButton* _tmp27_;
+#line 433 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 433 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (title != NULL);
+#line 433 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (value != NULL);
+#line 433 "../src/contacts-contact-editor.vala"
+       _data12_ = g_slice_new0 (Block12Data);
+#line 433 "../src/contacts-contact-editor.vala"
+       _data12_->_ref_count_ = 1;
+#line 433 "../src/contacts-contact-editor.vala"
+       _data12_->self = g_object_ref (self);
+#line 434 "../src/contacts-contact-editor.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new (title);
+#line 434 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp0_);
+#line 434 "../src/contacts-contact-editor.vala"
+       title_label = _tmp0_;
+#line 435 "../src/contacts-contact-editor.vala"
+       _tmp1_ = title_label;
+#line 435 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp1_, FALSE);
+#line 436 "../src/contacts-contact-editor.vala"
+       _tmp2_ = title_label;
+#line 436 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_START);
+#line 437 "../src/contacts-contact-editor.vala"
+       _tmp3_ = title_label;
+#line 437 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_START);
+#line 438 "../src/contacts-contact-editor.vala"
+       _tmp4_ = title_label;
+#line 438 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_margin_top ((GtkWidget*) _tmp4_, 3);
+#line 439 "../src/contacts-contact-editor.vala"
+       _tmp5_ = title_label;
+#line 439 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_margin_end ((GtkWidget*) _tmp5_, 6);
+#line 440 "../src/contacts-contact-editor.vala"
+       _tmp6_ = ((ContactsContactForm*) self)->container_grid;
+#line 440 "../src/contacts-contact-editor.vala"
+       _tmp7_ = title_label;
+#line 440 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp6_, (GtkWidget*) _tmp7_, 0, row, 1, 1);
+#line 442 "../src/contacts-contact-editor.vala"
+       _tmp8_ = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL);
+#line 442 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp8_);
+#line 442 "../src/contacts-contact-editor.vala"
+       _data12_->sw = _tmp8_;
+#line 443 "../src/contacts-contact-editor.vala"
+       _tmp9_ = _data12_->sw;
+#line 443 "../src/contacts-contact-editor.vala"
+       gtk_scrolled_window_set_shadow_type (_tmp9_, GTK_SHADOW_OUT);
+#line 444 "../src/contacts-contact-editor.vala"
+       _tmp10_ = _data12_->sw;
+#line 444 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_size_request ((GtkWidget*) _tmp10_, -1, 100);
+#line 445 "../src/contacts-contact-editor.vala"
+       _tmp11_ = (GtkTextView*) gtk_text_view_new ();
+#line 445 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp11_);
+#line 445 "../src/contacts-contact-editor.vala"
+       value_text = _tmp11_;
+#line 446 "../src/contacts-contact-editor.vala"
+       _tmp12_ = value_text;
+#line 446 "../src/contacts-contact-editor.vala"
+       _tmp13_ = gtk_text_view_get_buffer (_tmp12_);
+#line 446 "../src/contacts-contact-editor.vala"
+       gtk_text_buffer_set_text (_tmp13_, value, -1);
+#line 447 "../src/contacts-contact-editor.vala"
+       _tmp14_ = value_text;
+#line 447 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp14_, TRUE);
+#line 448 "../src/contacts-contact-editor.vala"
+       _tmp15_ = _data12_->sw;
+#line 448 "../src/contacts-contact-editor.vala"
+       _tmp16_ = value_text;
+#line 448 "../src/contacts-contact-editor.vala"
+       gtk_container_add ((GtkContainer*) _tmp15_, (GtkWidget*) _tmp16_);
+#line 449 "../src/contacts-contact-editor.vala"
+       _tmp17_ = ((ContactsContactForm*) self)->container_grid;
+#line 449 "../src/contacts-contact-editor.vala"
+       _tmp18_ = _data12_->sw;
+#line 449 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp17_, (GtkWidget*) _tmp18_, 1, row, 1, 1);
+#line 451 "../src/contacts-contact-editor.vala"
+       _tmp19_ = (GtkButton*) gtk_button_new_from_icon_name ("user-trash-symbolic", (GtkIconSize) 
GTK_ICON_SIZE_MENU);
+#line 451 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp19_);
+#line 451 "../src/contacts-contact-editor.vala"
+       _data12_->delete_button = _tmp19_;
+#line 452 "../src/contacts-contact-editor.vala"
+       _tmp20_ = _data12_->delete_button;
+#line 452 "../src/contacts-contact-editor.vala"
+       _tmp21_ = gtk_widget_get_accessible ((GtkWidget*) _tmp20_);
+#line 452 "../src/contacts-contact-editor.vala"
+       atk_object_set_name (_tmp21_, _ ("Delete field"));
+#line 453 "../src/contacts-contact-editor.vala"
+       _tmp22_ = _data12_->delete_button;
+#line 453 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_valign ((GtkWidget*) _tmp22_, GTK_ALIGN_START);
+#line 454 "../src/contacts-contact-editor.vala"
+       _tmp23_ = ((ContactsContactForm*) self)->container_grid;
+#line 454 "../src/contacts-contact-editor.vala"
+       _tmp24_ = _data12_->delete_button;
+#line 454 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp23_, (GtkWidget*) _tmp24_, 2, row, 1, 1);
+#line 457 "../src/contacts-contact-editor.vala"
+       _tmp25_ = value_text;
+#line 457 "../src/contacts-contact-editor.vala"
+       _tmp26_ = gtk_text_view_get_buffer (_tmp25_);
+#line 457 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data (_tmp26_, "changed", (GCallback) ___lambda35__gtk_text_buffer_changed, 
block12_data_ref (_data12_), (GClosureNotify) block12_data_unref, 0);
+#line 460 "../src/contacts-contact-editor.vala"
+       _tmp27_ = _data12_->delete_button;
+#line 460 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data (_tmp27_, "clicked", (GCallback) ___lambda36__gtk_button_clicked, 
block12_data_ref (_data12_), (GClosureNotify) block12_data_unref, 0);
+#line 466 "../src/contacts-contact-editor.vala"
+       if (g_strcmp0 (value, "") == 0) {
+#line 3948 "contacts-contact-editor.c"
+               GtkTextView* _tmp28_;
+#line 467 "../src/contacts-contact-editor.vala"
+               _tmp28_ = value_text;
+#line 467 "../src/contacts-contact-editor.vala"
+               self->priv->focus_widget = (GtkWidget*) _tmp28_;
+#line 3954 "contacts-contact-editor.c"
+       }
+#line 433 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (value_text);
+#line 433 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (title_label);
+#line 433 "../src/contacts-contact-editor.vala"
+       block12_data_unref (_data12_);
+#line 433 "../src/contacts-contact-editor.vala"
+       _data12_ = NULL;
+#line 3964 "contacts-contact-editor.c"
+}
+
+static Block13Data*
+block13_data_ref (Block13Data* _data13_)
+{
+#line 472 "../src/contacts-contact-editor.vala"
+       g_atomic_int_inc (&_data13_->_ref_count_);
+#line 472 "../src/contacts-contact-editor.vala"
+       return _data13_;
+#line 3974 "contacts-contact-editor.c"
+}
+
+static void
+block13_data_unref (void * _userdata_)
+{
+       Block13Data* _data13_;
+       _data13_ = (Block13Data*) _userdata_;
+#line 472 "../src/contacts-contact-editor.vala"
+       if (g_atomic_int_dec_and_test (&_data13_->_ref_count_)) {
+#line 3984 "contacts-contact-editor.c"
+               ContactsContactEditor* self;
+#line 472 "../src/contacts-contact-editor.vala"
+               self = _data13_->self;
+#line 472 "../src/contacts-contact-editor.vala"
+               (_data13_->fn_target_destroy_notify == NULL) ? NULL : (_data13_->fn_target_destroy_notify 
(_data13_->fn_target), NULL);
+#line 472 "../src/contacts-contact-editor.vala"
+               _data13_->fn = NULL;
+#line 472 "../src/contacts-contact-editor.vala"
+               _data13_->fn_target = NULL;
+#line 472 "../src/contacts-contact-editor.vala"
+               _data13_->fn_target_destroy_notify = NULL;
+#line 472 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data13_->delete_button);
+#line 472 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data13_->year_spin);
+#line 472 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data13_->month_combo);
+#line 472 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data13_->day_spin);
+#line 472 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (self);
+#line 472 "../src/contacts-contact-editor.vala"
+               g_slice_free (Block13Data, _data13_);
+#line 4008 "contacts-contact-editor.c"
+       }
+}
+
+static gboolean
+_vala_int_array_contains (gint * stack,
+                          gint stack_length,
+                          const gint needle)
+{
+       gint i;
+#line 512 "../src/contacts-contact-editor.vala"
+       for (i = 0; i < stack_length; i++) {
+#line 512 "../src/contacts-contact-editor.vala"
+               if (needle == stack[i]) {
+#line 512 "../src/contacts-contact-editor.vala"
+                       return TRUE;
+#line 4024 "contacts-contact-editor.c"
+               }
+       }
+#line 512 "../src/contacts-contact-editor.vala"
+       return FALSE;
+#line 4029 "contacts-contact-editor.c"
+}
+
+static void
+__lambda30_ (Block13Data* _data13_)
+{
+       ContactsContactEditor* self;
+       gint* month_of_31 = NULL;
+       gint* _tmp0_;
+       gint month_of_31_length1;
+       gint _month_of_31_size_;
+       GtkComboBoxText* _tmp1_;
+       gint* _tmp2_;
+       gint _tmp2__length1;
+#line 510 "../src/contacts-contact-editor.vala"
+       self = _data13_->self;
+#line 511 "../src/contacts-contact-editor.vala"
+       _tmp0_ = g_new0 (gint, 4);
+#line 511 "../src/contacts-contact-editor.vala"
+       _tmp0_[0] = 3;
+#line 511 "../src/contacts-contact-editor.vala"
+       _tmp0_[1] = 5;
+#line 511 "../src/contacts-contact-editor.vala"
+       _tmp0_[2] = 8;
+#line 511 "../src/contacts-contact-editor.vala"
+       _tmp0_[3] = 10;
+#line 511 "../src/contacts-contact-editor.vala"
+       month_of_31 = _tmp0_;
+#line 511 "../src/contacts-contact-editor.vala"
+       month_of_31_length1 = 4;
+#line 511 "../src/contacts-contact-editor.vala"
+       _month_of_31_size_ = month_of_31_length1;
+#line 512 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _data13_->month_combo;
+#line 512 "../src/contacts-contact-editor.vala"
+       _tmp2_ = month_of_31;
+#line 512 "../src/contacts-contact-editor.vala"
+       _tmp2__length1 = month_of_31_length1;
+#line 512 "../src/contacts-contact-editor.vala"
+       if (_vala_int_array_contains (_tmp2_, _tmp2__length1, gtk_combo_box_get_active ((GtkComboBox*) 
_tmp1_))) {
+#line 4069 "contacts-contact-editor.c"
+               GtkSpinButton* _tmp3_;
+#line 513 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _data13_->day_spin;
+#line 513 "../src/contacts-contact-editor.vala"
+               gtk_spin_button_set_range (_tmp3_, (gdouble) 1, (gdouble) 30);
+#line 4075 "contacts-contact-editor.c"
+       } else {
+               GtkComboBoxText* _tmp4_;
+#line 514 "../src/contacts-contact-editor.vala"
+               _tmp4_ = _data13_->month_combo;
+#line 514 "../src/contacts-contact-editor.vala"
+               if (gtk_combo_box_get_active ((GtkComboBox*) _tmp4_) == 1) {
+#line 4082 "contacts-contact-editor.c"
+                       gboolean _tmp5_ = FALSE;
+#line 515 "../src/contacts-contact-editor.vala"
+                       if ((gtk_spin_button_get_value_as_int (_data13_->year_spin) % 4) == 0) {
+#line 516 "../src/contacts-contact-editor.vala"
+                               _tmp5_ = (gtk_spin_button_get_value_as_int (_data13_->year_spin) % 100) != 0;
+#line 4088 "contacts-contact-editor.c"
+                       } else {
+#line 515 "../src/contacts-contact-editor.vala"
+                               _tmp5_ = FALSE;
+#line 4092 "contacts-contact-editor.c"
+                       }
+#line 515 "../src/contacts-contact-editor.vala"
+                       if (_tmp5_) {
+#line 4096 "contacts-contact-editor.c"
+                               GtkSpinButton* _tmp6_;
+#line 517 "../src/contacts-contact-editor.vala"
+                               _tmp6_ = _data13_->day_spin;
+#line 517 "../src/contacts-contact-editor.vala"
+                               gtk_spin_button_set_range (_tmp6_, (gdouble) 1, (gdouble) 29);
+#line 4102 "contacts-contact-editor.c"
+                       } else {
+                               GtkSpinButton* _tmp7_;
+#line 519 "../src/contacts-contact-editor.vala"
+                               _tmp7_ = _data13_->day_spin;
+#line 519 "../src/contacts-contact-editor.vala"
+                               gtk_spin_button_set_range (_tmp7_, (gdouble) 1, (gdouble) 28);
+#line 4109 "contacts-contact-editor.c"
+                       }
+               }
+       }
+#line 510 "../src/contacts-contact-editor.vala"
+       month_of_31 = (g_free (month_of_31), NULL);
+#line 4115 "contacts-contact-editor.c"
+}
+
+static void
+___lambda30__contacts_contact_editor_adjusting_date_fn (gpointer self)
+{
+#line 510 "../src/contacts-contact-editor.vala"
+       __lambda30_ (self);
+#line 4123 "contacts-contact-editor.c"
+}
+
+static void
+__lambda31_ (Block13Data* _data13_)
+{
+       ContactsContactEditor* self;
+       GtkSpinButton* _tmp0_;
+#line 525 "../src/contacts-contact-editor.vala"
+       self = _data13_->self;
+#line 526 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data13_->day_spin;
+#line 526 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _tmp0_));
+#line 4137 "contacts-contact-editor.c"
+}
+
+static void
+___lambda31__gtk_editable_changed (GtkEditable* _sender,
+                                   gpointer self)
+{
+#line 525 "../src/contacts-contact-editor.vala"
+       __lambda31_ (self);
+#line 4146 "contacts-contact-editor.c"
+}
+
+static void
+__lambda32_ (Block13Data* _data13_)
+{
+       ContactsContactEditor* self;
+       GtkComboBoxText* _tmp0_;
+#line 528 "../src/contacts-contact-editor.vala"
+       self = _data13_->self;
+#line 529 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data13_->month_combo;
+#line 529 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _tmp0_));
+#line 532 "../src/contacts-contact-editor.vala"
+       _data13_->fn (_data13_->fn_target);
+#line 4162 "contacts-contact-editor.c"
+}
+
+static void
+___lambda32__gtk_combo_box_changed (GtkComboBox* _sender,
+                                    gpointer self)
+{
+#line 528 "../src/contacts-contact-editor.vala"
+       __lambda32_ (self);
+#line 4171 "contacts-contact-editor.c"
+}
+
+static void
+__lambda33_ (Block13Data* _data13_)
+{
+       ContactsContactEditor* self;
+#line 534 "../src/contacts-contact-editor.vala"
+       self = _data13_->self;
+#line 535 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _data13_->year_spin));
+#line 537 "../src/contacts-contact-editor.vala"
+       _data13_->fn (_data13_->fn_target);
+#line 4184 "contacts-contact-editor.c"
+}
+
+static void
+___lambda33__gtk_editable_changed (GtkEditable* _sender,
+                                   gpointer self)
+{
+#line 534 "../src/contacts-contact-editor.vala"
+       __lambda33_ (self);
+#line 4193 "contacts-contact-editor.c"
+}
+
+static void
+__lambda34_ (Block13Data* _data13_)
+{
+       ContactsContactEditor* self;
+#line 539 "../src/contacts-contact-editor.vala"
+       self = _data13_->self;
+#line 540 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_remove_row (self, contacts_contact_editor_get_current_row (self, (GtkWidget*) 
_data13_->delete_button));
+#line 541 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_has_birthday_row (self, FALSE);
+#line 4206 "contacts-contact-editor.c"
+}
+
+static void
+___lambda34__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 539 "../src/contacts-contact-editor.vala"
+       __lambda34_ (self);
+#line 4215 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_attach_row_for_birthday (ContactsContactEditor* self,
+                                                 const gchar* title,
+                                                 FolksAbstractFieldDetails* details,
+                                                 GDateTime* birthday,
+                                                 gint row)
+{
+       Block13Data* _data13_;
+       GtkLabel* title_label = NULL;
+       GtkLabel* _tmp0_;
+       GtkLabel* _tmp1_;
+       GtkLabel* _tmp2_;
+       GtkLabel* _tmp3_;
+       GtkGrid* _tmp4_;
+       GtkLabel* _tmp5_;
+       GtkGrid* box = NULL;
+       GtkGrid* _tmp6_;
+       GtkGrid* _tmp7_;
+       GtkSpinButton* _tmp8_;
+       GtkSpinButton* _tmp9_;
+       GtkSpinButton* _tmp10_;
+       GtkSpinButton* _tmp11_;
+       GDateTime* _tmp12_;
+       GDateTime* _tmp13_;
+       GtkComboBoxText* _tmp14_;
+       GDateTime* january = NULL;
+       GDateTime* _tmp15_;
+       GtkComboBoxText* _tmp24_;
+       GDateTime* _tmp25_;
+       GDateTime* _tmp26_;
+       GtkComboBoxText* _tmp27_;
+       GtkSpinButton* _tmp28_;
+       GDateTime* _tmp29_;
+       GDateTime* _tmp30_;
+       GtkGrid* _tmp31_;
+       GtkSpinButton* _tmp32_;
+       GtkGrid* _tmp33_;
+       GtkComboBoxText* _tmp34_;
+       GtkGrid* _tmp35_;
+       GtkGrid* _tmp36_;
+       GtkGrid* _tmp37_;
+       GtkButton* _tmp38_;
+       AtkObject* _tmp39_;
+       GtkGrid* _tmp40_;
+       GtkSpinButton* _tmp41_;
+       GtkComboBoxText* _tmp42_;
+#line 472 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 472 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (title != NULL);
+#line 472 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (birthday != NULL);
+#line 472 "../src/contacts-contact-editor.vala"
+       _data13_ = g_slice_new0 (Block13Data);
+#line 472 "../src/contacts-contact-editor.vala"
+       _data13_->_ref_count_ = 1;
+#line 472 "../src/contacts-contact-editor.vala"
+       _data13_->self = g_object_ref (self);
+#line 473 "../src/contacts-contact-editor.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new (title);
+#line 473 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp0_);
+#line 473 "../src/contacts-contact-editor.vala"
+       title_label = _tmp0_;
+#line 474 "../src/contacts-contact-editor.vala"
+       _tmp1_ = title_label;
+#line 474 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp1_, FALSE);
+#line 475 "../src/contacts-contact-editor.vala"
+       _tmp2_ = title_label;
+#line 475 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_START);
+#line 476 "../src/contacts-contact-editor.vala"
+       _tmp3_ = title_label;
+#line 476 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_margin_end ((GtkWidget*) _tmp3_, 6);
+#line 477 "../src/contacts-contact-editor.vala"
+       _tmp4_ = ((ContactsContactForm*) self)->container_grid;
+#line 477 "../src/contacts-contact-editor.vala"
+       _tmp5_ = title_label;
+#line 477 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp4_, (GtkWidget*) _tmp5_, 0, row, 1, 1);
+#line 479 "../src/contacts-contact-editor.vala"
+       _tmp6_ = (GtkGrid*) gtk_grid_new ();
+#line 479 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp6_);
+#line 479 "../src/contacts-contact-editor.vala"
+       box = _tmp6_;
+#line 480 "../src/contacts-contact-editor.vala"
+       _tmp7_ = box;
+#line 480 "../src/contacts-contact-editor.vala"
+       gtk_grid_set_column_spacing (_tmp7_, (guint) 12);
+#line 481 "../src/contacts-contact-editor.vala"
+       _tmp8_ = (GtkSpinButton*) gtk_spin_button_new_with_range (1.0, 31.0, 1.0);
+#line 481 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp8_);
+#line 481 "../src/contacts-contact-editor.vala"
+       _data13_->day_spin = _tmp8_;
+#line 482 "../src/contacts-contact-editor.vala"
+       _tmp9_ = _data13_->day_spin;
+#line 482 "../src/contacts-contact-editor.vala"
+       gtk_spin_button_set_digits (_tmp9_, (guint) 0);
+#line 483 "../src/contacts-contact-editor.vala"
+       _tmp10_ = _data13_->day_spin;
+#line 483 "../src/contacts-contact-editor.vala"
+       gtk_spin_button_set_numeric (_tmp10_, TRUE);
+#line 484 "../src/contacts-contact-editor.vala"
+       _tmp11_ = _data13_->day_spin;
+#line 484 "../src/contacts-contact-editor.vala"
+       _tmp12_ = g_date_time_to_local (birthday);
+#line 484 "../src/contacts-contact-editor.vala"
+       _tmp13_ = _tmp12_;
+#line 484 "../src/contacts-contact-editor.vala"
+       gtk_spin_button_set_value (_tmp11_, (gdouble) g_date_time_get_day_of_month (_tmp13_));
+#line 484 "../src/contacts-contact-editor.vala"
+       _g_date_time_unref0 (_tmp13_);
+#line 486 "../src/contacts-contact-editor.vala"
+       _tmp14_ = (GtkComboBoxText*) gtk_combo_box_text_new ();
+#line 486 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp14_);
+#line 486 "../src/contacts-contact-editor.vala"
+       _data13_->month_combo = _tmp14_;
+#line 487 "../src/contacts-contact-editor.vala"
+       _tmp15_ = g_date_time_new_local (1, 1, 1, 1, 1, (gdouble) 1);
+#line 487 "../src/contacts-contact-editor.vala"
+       january = _tmp15_;
+#line 4344 "contacts-contact-editor.c"
+       {
+               gint i = 0;
+#line 488 "../src/contacts-contact-editor.vala"
+               i = 0;
+#line 4349 "contacts-contact-editor.c"
+               {
+                       gboolean _tmp16_ = FALSE;
+#line 488 "../src/contacts-contact-editor.vala"
+                       _tmp16_ = TRUE;
+#line 488 "../src/contacts-contact-editor.vala"
+                       while (TRUE) {
+#line 4356 "contacts-contact-editor.c"
+                               GDateTime* month = NULL;
+                               GDateTime* _tmp18_;
+                               GDateTime* _tmp19_;
+                               GtkComboBoxText* _tmp20_;
+                               GDateTime* _tmp21_;
+                               gchar* _tmp22_;
+                               gchar* _tmp23_;
+#line 488 "../src/contacts-contact-editor.vala"
+                               if (!_tmp16_) {
+#line 4366 "contacts-contact-editor.c"
+                                       gint _tmp17_;
+#line 488 "../src/contacts-contact-editor.vala"
+                                       _tmp17_ = i;
+#line 488 "../src/contacts-contact-editor.vala"
+                                       i = _tmp17_ + 1;
+#line 4372 "contacts-contact-editor.c"
+                               }
+#line 488 "../src/contacts-contact-editor.vala"
+                               _tmp16_ = FALSE;
+#line 488 "../src/contacts-contact-editor.vala"
+                               if (!(i < 12)) {
+#line 488 "../src/contacts-contact-editor.vala"
+                                       break;
+#line 4380 "contacts-contact-editor.c"
+                               }
+#line 489 "../src/contacts-contact-editor.vala"
+                               _tmp18_ = january;
+#line 489 "../src/contacts-contact-editor.vala"
+                               _tmp19_ = g_date_time_add_months (_tmp18_, i);
+#line 489 "../src/contacts-contact-editor.vala"
+                               month = _tmp19_;
+#line 490 "../src/contacts-contact-editor.vala"
+                               _tmp20_ = _data13_->month_combo;
+#line 490 "../src/contacts-contact-editor.vala"
+                               _tmp21_ = month;
+#line 490 "../src/contacts-contact-editor.vala"
+                               _tmp22_ = g_date_time_format (_tmp21_, "%B");
+#line 490 "../src/contacts-contact-editor.vala"
+                               _tmp23_ = _tmp22_;
+#line 490 "../src/contacts-contact-editor.vala"
+                               gtk_combo_box_text_append_text (_tmp20_, _tmp23_);
+#line 490 "../src/contacts-contact-editor.vala"
+                               _g_free0 (_tmp23_);
+#line 488 "../src/contacts-contact-editor.vala"
+                               _g_date_time_unref0 (month);
+#line 4402 "contacts-contact-editor.c"
+                       }
+               }
+       }
+#line 492 "../src/contacts-contact-editor.vala"
+       _tmp24_ = _data13_->month_combo;
+#line 492 "../src/contacts-contact-editor.vala"
+       _tmp25_ = g_date_time_to_local (birthday);
+#line 492 "../src/contacts-contact-editor.vala"
+       _tmp26_ = _tmp25_;
+#line 492 "../src/contacts-contact-editor.vala"
+       gtk_combo_box_set_active ((GtkComboBox*) _tmp24_, g_date_time_get_month (_tmp26_) - 1);
+#line 492 "../src/contacts-contact-editor.vala"
+       _g_date_time_unref0 (_tmp26_);
+#line 493 "../src/contacts-contact-editor.vala"
+       _tmp27_ = _data13_->month_combo;
+#line 493 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp27_, TRUE);
+#line 495 "../src/contacts-contact-editor.vala"
+       _tmp28_ = (GtkSpinButton*) gtk_spin_button_new_with_range ((gdouble) 1800, (gdouble) 3000, (gdouble) 
1);
+#line 495 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp28_);
+#line 495 "../src/contacts-contact-editor.vala"
+       _data13_->year_spin = _tmp28_;
+#line 496 "../src/contacts-contact-editor.vala"
+       gtk_spin_button_set_digits (_data13_->year_spin, (guint) 0);
+#line 497 "../src/contacts-contact-editor.vala"
+       gtk_spin_button_set_numeric (_data13_->year_spin, TRUE);
+#line 498 "../src/contacts-contact-editor.vala"
+       _tmp29_ = g_date_time_to_local (birthday);
+#line 498 "../src/contacts-contact-editor.vala"
+       _tmp30_ = _tmp29_;
+#line 498 "../src/contacts-contact-editor.vala"
+       gtk_spin_button_set_value (_data13_->year_spin, (gdouble) g_date_time_get_year (_tmp30_));
+#line 498 "../src/contacts-contact-editor.vala"
+       _g_date_time_unref0 (_tmp30_);
+#line 500 "../src/contacts-contact-editor.vala"
+       _tmp31_ = box;
+#line 500 "../src/contacts-contact-editor.vala"
+       _tmp32_ = _data13_->day_spin;
+#line 500 "../src/contacts-contact-editor.vala"
+       gtk_container_add ((GtkContainer*) _tmp31_, (GtkWidget*) _tmp32_);
+#line 501 "../src/contacts-contact-editor.vala"
+       _tmp33_ = box;
+#line 501 "../src/contacts-contact-editor.vala"
+       _tmp34_ = _data13_->month_combo;
+#line 501 "../src/contacts-contact-editor.vala"
+       gtk_container_add ((GtkContainer*) _tmp33_, (GtkWidget*) _tmp34_);
+#line 502 "../src/contacts-contact-editor.vala"
+       _tmp35_ = box;
+#line 502 "../src/contacts-contact-editor.vala"
+       gtk_container_add ((GtkContainer*) _tmp35_, (GtkWidget*) _data13_->year_spin);
+#line 504 "../src/contacts-contact-editor.vala"
+       _tmp36_ = ((ContactsContactForm*) self)->container_grid;
+#line 504 "../src/contacts-contact-editor.vala"
+       _tmp37_ = box;
+#line 504 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp36_, (GtkWidget*) _tmp37_, 1, row, 1, 1);
+#line 506 "../src/contacts-contact-editor.vala"
+       _tmp38_ = (GtkButton*) gtk_button_new_from_icon_name ("user-trash-symbolic", (GtkIconSize) 
GTK_ICON_SIZE_MENU);
+#line 506 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp38_);
+#line 506 "../src/contacts-contact-editor.vala"
+       _data13_->delete_button = _tmp38_;
+#line 507 "../src/contacts-contact-editor.vala"
+       _tmp39_ = gtk_widget_get_accessible ((GtkWidget*) _data13_->delete_button);
+#line 507 "../src/contacts-contact-editor.vala"
+       atk_object_set_name (_tmp39_, _ ("Delete field"));
+#line 508 "../src/contacts-contact-editor.vala"
+       _tmp40_ = ((ContactsContactForm*) self)->container_grid;
+#line 508 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp40_, (GtkWidget*) _data13_->delete_button, 2, row, 1, 1);
+#line 510 "../src/contacts-contact-editor.vala"
+       _data13_->fn = ___lambda30__contacts_contact_editor_adjusting_date_fn;
+#line 510 "../src/contacts-contact-editor.vala"
+       _data13_->fn_target = block13_data_ref (_data13_);
+#line 510 "../src/contacts-contact-editor.vala"
+       _data13_->fn_target_destroy_notify = block13_data_unref;
+#line 525 "../src/contacts-contact-editor.vala"
+       _tmp41_ = _data13_->day_spin;
+#line 525 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data ((GtkEditable*) _tmp41_, "changed", (GCallback) 
___lambda31__gtk_editable_changed, block13_data_ref (_data13_), (GClosureNotify) block13_data_unref, 0);
+#line 528 "../src/contacts-contact-editor.vala"
+       _tmp42_ = _data13_->month_combo;
+#line 528 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data ((GtkComboBox*) _tmp42_, "changed", (GCallback) 
___lambda32__gtk_combo_box_changed, block13_data_ref (_data13_), (GClosureNotify) block13_data_unref, 0);
+#line 534 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data ((GtkEditable*) _data13_->year_spin, "changed", (GCallback) 
___lambda33__gtk_editable_changed, block13_data_ref (_data13_), (GClosureNotify) block13_data_unref, 0);
+#line 539 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data (_data13_->delete_button, "clicked", (GCallback) 
___lambda34__gtk_button_clicked, block13_data_ref (_data13_), (GClosureNotify) block13_data_unref, 0);
+#line 472 "../src/contacts-contact-editor.vala"
+       _g_date_time_unref0 (january);
+#line 472 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (box);
+#line 472 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (title_label);
+#line 472 "../src/contacts-contact-editor.vala"
+       block13_data_unref (_data13_);
+#line 472 "../src/contacts-contact-editor.vala"
+       _data13_ = NULL;
+#line 4502 "contacts-contact-editor.c"
+}
+
+static Block14Data*
+block14_data_ref (Block14Data* _data14_)
+{
+#line 545 "../src/contacts-contact-editor.vala"
+       g_atomic_int_inc (&_data14_->_ref_count_);
+#line 545 "../src/contacts-contact-editor.vala"
+       return _data14_;
+#line 4512 "contacts-contact-editor.c"
+}
+
+static void
+block14_data_unref (void * _userdata_)
+{
+       Block14Data* _data14_;
+       _data14_ = (Block14Data*) _userdata_;
+#line 545 "../src/contacts-contact-editor.vala"
+       if (g_atomic_int_dec_and_test (&_data14_->_ref_count_)) {
+#line 4522 "contacts-contact-editor.c"
+               ContactsContactEditor* self;
+#line 545 "../src/contacts-contact-editor.vala"
+               self = _data14_->self;
+#line 545 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data14_->delete_button);
+#line 545 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data14_->value_address);
+#line 545 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_data14_->combo);
+#line 545 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (self);
+#line 545 "../src/contacts-contact-editor.vala"
+               g_slice_free (Block14Data, _data14_);
+#line 4536 "contacts-contact-editor.c"
+       }
+}
+
+static void
+__lambda38_ (Block14Data* _data14_)
+{
+       ContactsContactEditor* self;
+       ContactsTypeCombo* _tmp0_;
+#line 562 "../src/contacts-contact-editor.vala"
+       self = _data14_->self;
+#line 563 "../src/contacts-contact-editor.vala"
+       _tmp0_ = _data14_->combo;
+#line 563 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _tmp0_));
+#line 4551 "contacts-contact-editor.c"
+}
+
+static void
+___lambda38__gtk_combo_box_changed (GtkComboBox* _sender,
+                                    gpointer self)
+{
+#line 562 "../src/contacts-contact-editor.vala"
+       __lambda38_ (self);
+#line 4560 "contacts-contact-editor.c"
+}
+
+static void
+__lambda39_ (Block14Data* _data14_)
+{
+       ContactsContactEditor* self;
+#line 565 "../src/contacts-contact-editor.vala"
+       self = _data14_->self;
+#line 566 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_field_changed (self, contacts_contact_editor_get_current_row (self, 
(GtkWidget*) _data14_->value_address));
+#line 4571 "contacts-contact-editor.c"
+}
+
+static void
+___lambda39__contacts_address_editor_changed (ContactsAddressEditor* _sender,
+                                              gpointer self)
+{
+#line 565 "../src/contacts-contact-editor.vala"
+       __lambda39_ (self);
+#line 4580 "contacts-contact-editor.c"
+}
+
+static void
+__lambda40_ (Block14Data* _data14_)
+{
+       ContactsContactEditor* self;
+#line 568 "../src/contacts-contact-editor.vala"
+       self = _data14_->self;
+#line 569 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_remove_row (self, contacts_contact_editor_get_current_row (self, (GtkWidget*) 
_data14_->delete_button));
+#line 4591 "contacts-contact-editor.c"
+}
+
+static void
+___lambda40__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 568 "../src/contacts-contact-editor.vala"
+       __lambda40_ (self);
+#line 4600 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_attach_row_for_address (ContactsContactEditor* self,
+                                                gint row,
+                                                ContactsTypeSet* type_set,
+                                                FolksPostalAddressFieldDetails* details,
+                                                const gchar* type)
+{
+       Block14Data* _data14_;
+       ContactsTypeCombo* _tmp0_;
+       ContactsTypeCombo* _tmp1_;
+       ContactsTypeCombo* _tmp2_;
+       GtkGrid* _tmp4_;
+       ContactsTypeCombo* _tmp5_;
+       ContactsAddressEditor* _tmp6_;
+       GtkGrid* _tmp7_;
+       GtkButton* _tmp8_;
+       AtkObject* _tmp9_;
+       GtkGrid* _tmp10_;
+       ContactsTypeCombo* _tmp11_;
+#line 545 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 545 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (type_set != NULL);
+#line 545 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (details != NULL);
+#line 545 "../src/contacts-contact-editor.vala"
+       _data14_ = g_slice_new0 (Block14Data);
+#line 545 "../src/contacts-contact-editor.vala"
+       _data14_->_ref_count_ = 1;
+#line 545 "../src/contacts-contact-editor.vala"
+       _data14_->self = g_object_ref (self);
+#line 546 "../src/contacts-contact-editor.vala"
+       _tmp0_ = contacts_typecombo_new (type_set);
+#line 546 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp0_);
+#line 546 "../src/contacts-contact-editor.vala"
+       _data14_->combo = _tmp0_;
+#line 547 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _data14_->combo;
+#line 547 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp1_, FALSE);
+#line 548 "../src/contacts-contact-editor.vala"
+       _tmp2_ = _data14_->combo;
+#line 548 "../src/contacts-contact-editor.vala"
+       contacts_typecombo_set_active_from_field_details (_tmp2_, (FolksAbstractFieldDetails*) details);
+#line 549 "../src/contacts-contact-editor.vala"
+       if (type != NULL) {
+#line 4650 "contacts-contact-editor.c"
+               ContactsTypeCombo* _tmp3_;
+#line 550 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _data14_->combo;
+#line 550 "../src/contacts-contact-editor.vala"
+               contacts_typecombo_set_active_from_vcard_type (_tmp3_, type);
+#line 4656 "contacts-contact-editor.c"
+       }
+#line 551 "../src/contacts-contact-editor.vala"
+       _tmp4_ = ((ContactsContactForm*) self)->container_grid;
+#line 551 "../src/contacts-contact-editor.vala"
+       _tmp5_ = _data14_->combo;
+#line 551 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp4_, (GtkWidget*) _tmp5_, 0, row, 1, 1);
+#line 553 "../src/contacts-contact-editor.vala"
+       _tmp6_ = contacts_address_editor_new (details);
+#line 553 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp6_);
+#line 553 "../src/contacts-contact-editor.vala"
+       _data14_->value_address = _tmp6_;
+#line 554 "../src/contacts-contact-editor.vala"
+       _tmp7_ = ((ContactsContactForm*) self)->container_grid;
+#line 554 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp7_, (GtkWidget*) _data14_->value_address, 1, row, 1, 1);
+#line 556 "../src/contacts-contact-editor.vala"
+       _tmp8_ = (GtkButton*) gtk_button_new_from_icon_name ("user-trash-symbolic", (GtkIconSize) 
GTK_ICON_SIZE_MENU);
+#line 556 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp8_);
+#line 556 "../src/contacts-contact-editor.vala"
+       _data14_->delete_button = _tmp8_;
+#line 557 "../src/contacts-contact-editor.vala"
+       _tmp9_ = gtk_widget_get_accessible ((GtkWidget*) _data14_->delete_button);
+#line 557 "../src/contacts-contact-editor.vala"
+       atk_object_set_name (_tmp9_, _ ("Delete field"));
+#line 558 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_valign ((GtkWidget*) _data14_->delete_button, GTK_ALIGN_START);
+#line 559 "../src/contacts-contact-editor.vala"
+       _tmp10_ = ((ContactsContactForm*) self)->container_grid;
+#line 559 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp10_, (GtkWidget*) _data14_->delete_button, 2, row, 1, 1);
+#line 562 "../src/contacts-contact-editor.vala"
+       _tmp11_ = _data14_->combo;
+#line 562 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data ((GtkComboBox*) _tmp11_, "changed", (GCallback) 
___lambda38__gtk_combo_box_changed, block14_data_ref (_data14_), (GClosureNotify) block14_data_unref, 0);
+#line 565 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data (_data14_->value_address, "changed", (GCallback) 
___lambda39__contacts_address_editor_changed, block14_data_ref (_data14_), (GClosureNotify) 
block14_data_unref, 0);
+#line 568 "../src/contacts-contact-editor.vala"
+       g_signal_connect_data (_data14_->delete_button, "clicked", (GCallback) 
___lambda40__gtk_button_clicked, block14_data_ref (_data14_), (GClosureNotify) block14_data_unref, 0);
+#line 572 "../src/contacts-contact-editor.vala"
+       self->priv->focus_widget = (GtkWidget*) _data14_->value_address;
+#line 545 "../src/contacts-contact-editor.vala"
+       block14_data_unref (_data14_);
+#line 545 "../src/contacts-contact-editor.vala"
+       _data14_ = NULL;
+#line 4704 "contacts-contact-editor.c"
+}
+
+static void
+____lambda29_ (ContactsContactEditor* self)
+{
+#line 683 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_set_has_nickname_row (self, FALSE);
+#line 4712 "contacts-contact-editor.c"
+}
+
+static void
+_____lambda29__gtk_button_clicked (GtkButton* _sender,
+                                   gpointer self)
+{
+#line 682 "../src/contacts-contact-editor.vala"
+       ____lambda29_ ((ContactsContactEditor*) self);
+#line 4721 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_add_edit_row (ContactsContactEditor* self,
+                                      FolksPersona* p,
+                                      const gchar* prop_name,
+                                      gint* row,
+                                      gboolean add_empty,
+                                      const gchar* type)
+{
+       const gchar* _tmp0_ = NULL;
+       gchar* persona_uid = NULL;
+       gchar* _tmp3_;
+       const gchar* _tmp4_;
+       GQuark _tmp6_ = 0U;
+#line 579 "../src/contacts-contact-editor.vala"
+       static GQuark _tmp5_label0 = 0;
+#line 579 "../src/contacts-contact-editor.vala"
+       static GQuark _tmp5_label1 = 0;
+#line 579 "../src/contacts-contact-editor.vala"
+       static GQuark _tmp5_label2 = 0;
+#line 579 "../src/contacts-contact-editor.vala"
+       static GQuark _tmp5_label3 = 0;
+#line 579 "../src/contacts-contact-editor.vala"
+       static GQuark _tmp5_label4 = 0;
+#line 579 "../src/contacts-contact-editor.vala"
+       static GQuark _tmp5_label5 = 0;
+#line 579 "../src/contacts-contact-editor.vala"
+       static GQuark _tmp5_label6 = 0;
+#line 575 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 575 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (prop_name != NULL);
+#line 578 "../src/contacts-contact-editor.vala"
+       if (p != NULL) {
+#line 4757 "contacts-contact-editor.c"
+               const gchar* _tmp1_;
+               const gchar* _tmp2_;
+#line 578 "../src/contacts-contact-editor.vala"
+               _tmp1_ = folks_persona_get_uid (p);
+#line 578 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 578 "../src/contacts-contact-editor.vala"
+               _tmp0_ = _tmp2_;
+#line 4766 "contacts-contact-editor.c"
+       } else {
+#line 578 "../src/contacts-contact-editor.vala"
+               _tmp0_ = "null-persona.hack";
+#line 4770 "contacts-contact-editor.c"
+       }
+#line 578 "../src/contacts-contact-editor.vala"
+       _tmp3_ = g_strdup (_tmp0_);
+#line 578 "../src/contacts-contact-editor.vala"
+       persona_uid = _tmp3_;
+#line 579 "../src/contacts-contact-editor.vala"
+       _tmp4_ = prop_name;
+#line 579 "../src/contacts-contact-editor.vala"
+       _tmp6_ = (NULL == _tmp4_) ? 0 : g_quark_from_string (_tmp4_);
+#line 579 "../src/contacts-contact-editor.vala"
+       if (_tmp6_ == ((0 != _tmp5_label0) ? _tmp5_label0 : (_tmp5_label0 = g_quark_from_static_string 
("email-addresses")))) {
+#line 579 "../src/contacts-contact-editor.vala"
+               switch (0) {
+#line 4784 "contacts-contact-editor.c"
+                       default:
+                       {
+                               GeeHashMap* rows = NULL;
+                               GeeHashMap* _tmp7_;
+                               GeeHashMap* _tmp39_;
+                               gboolean _tmp40_;
+                               gboolean _tmp41_;
+#line 581 "../src/contacts-contact-editor.vala"
+                               _tmp7_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, 
CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 581 "../src/contacts-contact-editor.vala"
+                               rows = _tmp7_;
+#line 582 "../src/contacts-contact-editor.vala"
+                               if (add_empty) {
+#line 4798 "contacts-contact-editor.c"
+                                       FolksEmailFieldDetails* detail_field = NULL;
+                                       FolksEmailFieldDetails* _tmp8_;
+                                       ContactsTypeSet* _tmp9_;
+                                       ContactsTypeSet* _tmp10_;
+                                       FolksEmailFieldDetails* _tmp11_;
+                                       GeeHashMap* _tmp12_;
+                                       FolksEmailFieldDetails* _tmp13_;
+                                       ContactsContactEditorRowData _tmp14_ = {0};
+                                       gint _tmp15_;
+#line 583 "../src/contacts-contact-editor.vala"
+                                       _tmp8_ = folks_email_field_details_new ("", NULL);
+#line 583 "../src/contacts-contact-editor.vala"
+                                       detail_field = _tmp8_;
+#line 584 "../src/contacts-contact-editor.vala"
+                                       _tmp9_ = contacts_typeset_get_email ();
+#line 584 "../src/contacts-contact-editor.vala"
+                                       _tmp10_ = _tmp9_;
+#line 584 "../src/contacts-contact-editor.vala"
+                                       _tmp11_ = detail_field;
+#line 584 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_attach_row_with_entry (self, *row, _tmp10_, 
(FolksAbstractFieldDetails*) _tmp11_, "", type);
+#line 585 "../src/contacts-contact-editor.vala"
+                                       _tmp12_ = rows;
+#line 585 "../src/contacts-contact-editor.vala"
+                                       _tmp13_ = detail_field;
+#line 585 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp14_.details);
+#line 585 "../src/contacts-contact-editor.vala"
+                                       _tmp14_.details = (FolksAbstractFieldDetails*) _tmp13_;
+#line 585 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp12_, (gpointer) 
((gintptr) (*row)), &_tmp14_);
+#line 586 "../src/contacts-contact-editor.vala"
+                                       _tmp15_ = *row;
+#line 586 "../src/contacts-contact-editor.vala"
+                                       *row = _tmp15_ + 1;
+#line 582 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (detail_field);
+#line 4836 "contacts-contact-editor.c"
+                               } else {
+                                       FolksEmailDetails* details = NULL;
+                                       FolksEmailDetails* _tmp16_;
+                                       FolksEmailDetails* _tmp17_;
+#line 588 "../src/contacts-contact-editor.vala"
+                                       _tmp16_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, 
FOLKS_TYPE_EMAIL_DETAILS) ? ((FolksEmailDetails*) p) : NULL);
+#line 588 "../src/contacts-contact-editor.vala"
+                                       details = _tmp16_;
+#line 589 "../src/contacts-contact-editor.vala"
+                                       _tmp17_ = details;
+#line 589 "../src/contacts-contact-editor.vala"
+                                       if (_tmp17_ != NULL) {
+#line 4849 "contacts-contact-editor.c"
+                                               GeeList* emails = NULL;
+                                               FolksEmailDetails* _tmp18_;
+                                               GeeSet* _tmp19_;
+                                               GeeSet* _tmp20_;
+                                               GeeList* _tmp21_;
+#line 590 "../src/contacts-contact-editor.vala"
+                                               _tmp18_ = details;
+#line 590 "../src/contacts-contact-editor.vala"
+                                               _tmp19_ = folks_email_details_get_email_addresses (_tmp18_);
+#line 590 "../src/contacts-contact-editor.vala"
+                                               _tmp20_ = _tmp19_;
+#line 590 "../src/contacts-contact-editor.vala"
+                                               _tmp21_ = contacts_utils_sort_fields 
(FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, 
(GeeCollection*) _tmp20_);
+#line 590 "../src/contacts-contact-editor.vala"
+                                               emails = _tmp21_;
+#line 4865 "contacts-contact-editor.c"
+                                               {
+                                                       GeeList* _email_list = NULL;
+                                                       GeeList* _tmp22_;
+                                                       GeeList* _tmp23_;
+                                                       gint _email_size = 0;
+                                                       GeeList* _tmp24_;
+                                                       gint _tmp25_;
+                                                       gint _tmp26_;
+                                                       gint _email_index = 0;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _tmp22_ = emails;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _tmp23_ = _g_object_ref0 (_tmp22_);
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _email_list = _tmp23_;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _tmp24_ = _email_list;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _tmp25_ = gee_collection_get_size ((GeeCollection*) 
_tmp24_);
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _tmp26_ = _tmp25_;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _email_size = _tmp26_;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _email_index = -1;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 4893 "contacts-contact-editor.c"
+                                                               FolksEmailFieldDetails* email = NULL;
+                                                               GeeList* _tmp27_;
+                                                               gpointer _tmp28_;
+                                                               ContactsTypeSet* _tmp29_;
+                                                               ContactsTypeSet* _tmp30_;
+                                                               FolksEmailFieldDetails* _tmp31_;
+                                                               FolksEmailFieldDetails* _tmp32_;
+                                                               gconstpointer _tmp33_;
+                                                               const gchar* _tmp34_;
+                                                               GeeHashMap* _tmp35_;
+                                                               FolksEmailFieldDetails* _tmp36_;
+                                                               ContactsContactEditorRowData _tmp37_ = {0};
+                                                               gint _tmp38_;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                               _email_index = _email_index + 1;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                               if (!(_email_index < _email_size)) {
+#line 591 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 4913 "contacts-contact-editor.c"
+                                                               }
+#line 591 "../src/contacts-contact-editor.vala"
+                                                               _tmp27_ = _email_list;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                               _tmp28_ = gee_list_get (_tmp27_, 
_email_index);
+#line 591 "../src/contacts-contact-editor.vala"
+                                                               email = (FolksEmailFieldDetails*) _tmp28_;
+#line 592 "../src/contacts-contact-editor.vala"
+                                                               _tmp29_ = contacts_typeset_get_email ();
+#line 592 "../src/contacts-contact-editor.vala"
+                                                               _tmp30_ = _tmp29_;
+#line 592 "../src/contacts-contact-editor.vala"
+                                                               _tmp31_ = email;
+#line 592 "../src/contacts-contact-editor.vala"
+                                                               _tmp32_ = email;
+#line 592 "../src/contacts-contact-editor.vala"
+                                                               _tmp33_ = 
folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp32_);
+#line 592 "../src/contacts-contact-editor.vala"
+                                                               _tmp34_ = _tmp33_;
+#line 592 "../src/contacts-contact-editor.vala"
+                                                               contacts_contact_editor_attach_row_with_entry 
(self, *row, _tmp30_, (FolksAbstractFieldDetails*) _tmp31_, (const gchar*) _tmp34_, NULL);
+#line 593 "../src/contacts-contact-editor.vala"
+                                                               _tmp35_ = rows;
+#line 593 "../src/contacts-contact-editor.vala"
+                                                               _tmp36_ = email;
+#line 593 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp37_.details);
+#line 593 "../src/contacts-contact-editor.vala"
+                                                               _tmp37_.details = 
(FolksAbstractFieldDetails*) _tmp36_;
+#line 593 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp35_, (gpointer) ((gintptr) (*row)), &_tmp37_);
+#line 594 "../src/contacts-contact-editor.vala"
+                                                               _tmp38_ = *row;
+#line 594 "../src/contacts-contact-editor.vala"
+                                                               *row = _tmp38_ + 1;
+#line 591 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (email);
+#line 4951 "contacts-contact-editor.c"
+                                                       }
+#line 591 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_email_list);
+#line 4955 "contacts-contact-editor.c"
+                                               }
+#line 589 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (emails);
+#line 4959 "contacts-contact-editor.c"
+                                       }
+#line 582 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (details);
+#line 4963 "contacts-contact-editor.c"
+                               }
+#line 598 "../src/contacts-contact-editor.vala"
+                               _tmp39_ = rows;
+#line 598 "../src/contacts-contact-editor.vala"
+                               _tmp40_ = gee_map_get_is_empty ((GeeMap*) _tmp39_);
+#line 598 "../src/contacts-contact-editor.vala"
+                               _tmp41_ = _tmp40_;
+#line 598 "../src/contacts-contact-editor.vala"
+                               if (!_tmp41_) {
+#line 4973 "contacts-contact-editor.c"
+                                       GeeHashMap* _tmp42_;
+                                       const gchar* _tmp43_;
+                                       gpointer _tmp44_;
+                                       GeeHashMap* _tmp45_;
+                                       gboolean _tmp46_;
+#line 599 "../src/contacts-contact-editor.vala"
+                                       _tmp42_ = self->priv->writable_personas;
+#line 599 "../src/contacts-contact-editor.vala"
+                                       _tmp43_ = persona_uid;
+#line 599 "../src/contacts-contact-editor.vala"
+                                       _tmp44_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp42_, _tmp43_);
+#line 599 "../src/contacts-contact-editor.vala"
+                                       _tmp45_ = (GeeHashMap*) _tmp44_;
+#line 599 "../src/contacts-contact-editor.vala"
+                                       _tmp46_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp45_, 
prop_name);
+#line 599 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp45_);
+#line 599 "../src/contacts-contact-editor.vala"
+                                       if (_tmp46_) {
+#line 4993 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _entry_it = NULL;
+                                                       GeeHashMap* _tmp47_;
+                                                       GeeSet* _tmp48_;
+                                                       GeeSet* _tmp49_;
+                                                       GeeSet* _tmp50_;
+                                                       GeeIterator* _tmp51_;
+                                                       GeeIterator* _tmp52_;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _tmp47_ = rows;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _tmp48_ = gee_abstract_map_get_entries 
((GeeAbstractMap*) _tmp47_);
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _tmp49_ = _tmp48_;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _tmp50_ = _tmp49_;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _tmp51_ = gee_iterable_iterator ((GeeIterable*) 
_tmp50_);
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _tmp52_ = _tmp51_;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp50_);
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _entry_it = _tmp52_;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 5020 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp53_;
+                                                               GeeMapEntry* entry = NULL;
+                                                               GeeIterator* _tmp54_;
+                                                               gpointer _tmp55_;
+                                                               GeeHashMap* _tmp56_;
+                                                               const gchar* _tmp57_;
+                                                               gpointer _tmp58_;
+                                                               GeeHashMap* _tmp59_;
+                                                               gpointer _tmp60_;
+                                                               ContactsContactEditorField* _tmp61_;
+                                                               GeeHashMap* _tmp62_;
+                                                               GeeMapEntry* _tmp63_;
+                                                               gconstpointer _tmp64_;
+                                                               gint _tmp65_;
+                                                               GeeMapEntry* _tmp66_;
+                                                               gconstpointer _tmp67_;
+                                                               ContactsContactEditorRowData* _tmp68_;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                               _tmp53_ = _entry_it;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp53_)) {
+#line 600 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 5044 "contacts-contact-editor.c"
+                                                               }
+#line 600 "../src/contacts-contact-editor.vala"
+                                                               _tmp54_ = _entry_it;
+#line 600 "../src/contacts-contact-editor.vala"
+                                                               _tmp55_ = gee_iterator_get (_tmp54_);
+#line 600 "../src/contacts-contact-editor.vala"
+                                                               entry = (GeeMapEntry*) _tmp55_;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp56_ = self->priv->writable_personas;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp57_ = persona_uid;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp58_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp56_, _tmp57_);
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp59_ = (GeeHashMap*) _tmp58_;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp60_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp59_, prop_name);
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp61_ = (ContactsContactEditorField*) 
_tmp60_;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp62_ = (*_tmp61_).rows;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp63_ = entry;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp64_ = gee_map_entry_get_key (_tmp63_);
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp65_ = _tmp64_;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp66_ = entry;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp67_ = gee_map_entry_get_value (_tmp66_);
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _tmp68_ = _tmp67_;
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp62_, (gpointer) ((gintptr) ((gint) ((gintptr) _tmp65_))), (ContactsContactEditorRowData*) _tmp68_);
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _contacts_contact_editor_field_free0 
(_tmp61_);
+#line 601 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp59_);
+#line 600 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (entry);
+#line 5086 "contacts-contact-editor.c"
+                                                       }
+#line 600 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_entry_it);
+#line 5090 "contacts-contact-editor.c"
+                                               }
+                                       } else {
+                                               GeeHashMap* _tmp69_;
+                                               const gchar* _tmp70_;
+                                               gpointer _tmp71_;
+                                               GeeHashMap* _tmp72_;
+                                               GeeHashMap* _tmp73_;
+                                               ContactsContactEditorField _tmp74_ = {0};
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _tmp69_ = self->priv->writable_personas;
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _tmp70_ = persona_uid;
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _tmp71_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp69_, 
_tmp70_);
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _tmp72_ = (GeeHashMap*) _tmp71_;
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _tmp73_ = rows;
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _tmp74_.changed = FALSE;
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp74_.rows);
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _tmp74_.rows = _tmp73_;
+#line 604 "../src/contacts-contact-editor.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp72_, prop_name, 
&_tmp74_);
+#line 604 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp72_);
+#line 5119 "contacts-contact-editor.c"
+                                       }
+                               }
+#line 607 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (rows);
+#line 607 "../src/contacts-contact-editor.vala"
+                               break;
+#line 5126 "contacts-contact-editor.c"
+                       }
+               }
+       } else if (_tmp6_ == ((0 != _tmp5_label1) ? _tmp5_label1 : (_tmp5_label1 = g_quark_from_static_string 
("phone-numbers")))) {
+#line 579 "../src/contacts-contact-editor.vala"
+               switch (0) {
+#line 5132 "contacts-contact-editor.c"
+                       default:
+                       {
+                               GeeHashMap* rows = NULL;
+                               GeeHashMap* _tmp75_;
+                               GeeHashMap* _tmp107_;
+                               gboolean _tmp108_;
+                               gboolean _tmp109_;
+#line 609 "../src/contacts-contact-editor.vala"
+                               _tmp75_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, 
CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 609 "../src/contacts-contact-editor.vala"
+                               rows = _tmp75_;
+#line 610 "../src/contacts-contact-editor.vala"
+                               if (add_empty) {
+#line 5146 "contacts-contact-editor.c"
+                                       FolksPhoneFieldDetails* detail_field = NULL;
+                                       FolksPhoneFieldDetails* _tmp76_;
+                                       ContactsTypeSet* _tmp77_;
+                                       ContactsTypeSet* _tmp78_;
+                                       FolksPhoneFieldDetails* _tmp79_;
+                                       GeeHashMap* _tmp80_;
+                                       FolksPhoneFieldDetails* _tmp81_;
+                                       ContactsContactEditorRowData _tmp82_ = {0};
+                                       gint _tmp83_;
+#line 611 "../src/contacts-contact-editor.vala"
+                                       _tmp76_ = folks_phone_field_details_new ("", NULL);
+#line 611 "../src/contacts-contact-editor.vala"
+                                       detail_field = _tmp76_;
+#line 612 "../src/contacts-contact-editor.vala"
+                                       _tmp77_ = contacts_typeset_get_phone ();
+#line 612 "../src/contacts-contact-editor.vala"
+                                       _tmp78_ = _tmp77_;
+#line 612 "../src/contacts-contact-editor.vala"
+                                       _tmp79_ = detail_field;
+#line 612 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_attach_row_with_entry (self, *row, _tmp78_, 
(FolksAbstractFieldDetails*) _tmp79_, "", type);
+#line 613 "../src/contacts-contact-editor.vala"
+                                       _tmp80_ = rows;
+#line 613 "../src/contacts-contact-editor.vala"
+                                       _tmp81_ = detail_field;
+#line 613 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp82_.details);
+#line 613 "../src/contacts-contact-editor.vala"
+                                       _tmp82_.details = (FolksAbstractFieldDetails*) _tmp81_;
+#line 613 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp80_, (gpointer) 
((gintptr) (*row)), &_tmp82_);
+#line 614 "../src/contacts-contact-editor.vala"
+                                       _tmp83_ = *row;
+#line 614 "../src/contacts-contact-editor.vala"
+                                       *row = _tmp83_ + 1;
+#line 610 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (detail_field);
+#line 5184 "contacts-contact-editor.c"
+                               } else {
+                                       FolksPhoneDetails* details = NULL;
+                                       FolksPhoneDetails* _tmp84_;
+                                       FolksPhoneDetails* _tmp85_;
+#line 616 "../src/contacts-contact-editor.vala"
+                                       _tmp84_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, 
FOLKS_TYPE_PHONE_DETAILS) ? ((FolksPhoneDetails*) p) : NULL);
+#line 616 "../src/contacts-contact-editor.vala"
+                                       details = _tmp84_;
+#line 617 "../src/contacts-contact-editor.vala"
+                                       _tmp85_ = details;
+#line 617 "../src/contacts-contact-editor.vala"
+                                       if (_tmp85_ != NULL) {
+#line 5197 "contacts-contact-editor.c"
+                                               GeeList* phones = NULL;
+                                               FolksPhoneDetails* _tmp86_;
+                                               GeeSet* _tmp87_;
+                                               GeeSet* _tmp88_;
+                                               GeeList* _tmp89_;
+#line 618 "../src/contacts-contact-editor.vala"
+                                               _tmp86_ = details;
+#line 618 "../src/contacts-contact-editor.vala"
+                                               _tmp87_ = folks_phone_details_get_phone_numbers (_tmp86_);
+#line 618 "../src/contacts-contact-editor.vala"
+                                               _tmp88_ = _tmp87_;
+#line 618 "../src/contacts-contact-editor.vala"
+                                               _tmp89_ = contacts_utils_sort_fields 
(FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, 
(GeeCollection*) _tmp88_);
+#line 618 "../src/contacts-contact-editor.vala"
+                                               phones = _tmp89_;
+#line 5213 "contacts-contact-editor.c"
+                                               {
+                                                       GeeList* _phone_list = NULL;
+                                                       GeeList* _tmp90_;
+                                                       GeeList* _tmp91_;
+                                                       gint _phone_size = 0;
+                                                       GeeList* _tmp92_;
+                                                       gint _tmp93_;
+                                                       gint _tmp94_;
+                                                       gint _phone_index = 0;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _tmp90_ = phones;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _tmp91_ = _g_object_ref0 (_tmp90_);
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _phone_list = _tmp91_;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _tmp92_ = _phone_list;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _tmp93_ = gee_collection_get_size ((GeeCollection*) 
_tmp92_);
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _tmp94_ = _tmp93_;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _phone_size = _tmp94_;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _phone_index = -1;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 5241 "contacts-contact-editor.c"
+                                                               FolksPhoneFieldDetails* phone = NULL;
+                                                               GeeList* _tmp95_;
+                                                               gpointer _tmp96_;
+                                                               ContactsTypeSet* _tmp97_;
+                                                               ContactsTypeSet* _tmp98_;
+                                                               FolksPhoneFieldDetails* _tmp99_;
+                                                               FolksPhoneFieldDetails* _tmp100_;
+                                                               gconstpointer _tmp101_;
+                                                               const gchar* _tmp102_;
+                                                               GeeHashMap* _tmp103_;
+                                                               FolksPhoneFieldDetails* _tmp104_;
+                                                               ContactsContactEditorRowData _tmp105_ = {0};
+                                                               gint _tmp106_;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                               _phone_index = _phone_index + 1;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                               if (!(_phone_index < _phone_size)) {
+#line 619 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 5261 "contacts-contact-editor.c"
+                                                               }
+#line 619 "../src/contacts-contact-editor.vala"
+                                                               _tmp95_ = _phone_list;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                               _tmp96_ = gee_list_get (_tmp95_, 
_phone_index);
+#line 619 "../src/contacts-contact-editor.vala"
+                                                               phone = (FolksPhoneFieldDetails*) _tmp96_;
+#line 620 "../src/contacts-contact-editor.vala"
+                                                               _tmp97_ = contacts_typeset_get_phone ();
+#line 620 "../src/contacts-contact-editor.vala"
+                                                               _tmp98_ = _tmp97_;
+#line 620 "../src/contacts-contact-editor.vala"
+                                                               _tmp99_ = phone;
+#line 620 "../src/contacts-contact-editor.vala"
+                                                               _tmp100_ = phone;
+#line 620 "../src/contacts-contact-editor.vala"
+                                                               _tmp101_ = 
folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp100_);
+#line 620 "../src/contacts-contact-editor.vala"
+                                                               _tmp102_ = _tmp101_;
+#line 620 "../src/contacts-contact-editor.vala"
+                                                               contacts_contact_editor_attach_row_with_entry 
(self, *row, _tmp98_, (FolksAbstractFieldDetails*) _tmp99_, (const gchar*) _tmp102_, type);
+#line 621 "../src/contacts-contact-editor.vala"
+                                                               _tmp103_ = rows;
+#line 621 "../src/contacts-contact-editor.vala"
+                                                               _tmp104_ = phone;
+#line 621 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp105_.details);
+#line 621 "../src/contacts-contact-editor.vala"
+                                                               _tmp105_.details = 
(FolksAbstractFieldDetails*) _tmp104_;
+#line 621 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp103_, (gpointer) ((gintptr) (*row)), &_tmp105_);
+#line 622 "../src/contacts-contact-editor.vala"
+                                                               _tmp106_ = *row;
+#line 622 "../src/contacts-contact-editor.vala"
+                                                               *row = _tmp106_ + 1;
+#line 619 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (phone);
+#line 5299 "contacts-contact-editor.c"
+                                                       }
+#line 619 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_phone_list);
+#line 5303 "contacts-contact-editor.c"
+                                               }
+#line 617 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (phones);
+#line 5307 "contacts-contact-editor.c"
+                                       }
+#line 610 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (details);
+#line 5311 "contacts-contact-editor.c"
+                               }
+#line 626 "../src/contacts-contact-editor.vala"
+                               _tmp107_ = rows;
+#line 626 "../src/contacts-contact-editor.vala"
+                               _tmp108_ = gee_map_get_is_empty ((GeeMap*) _tmp107_);
+#line 626 "../src/contacts-contact-editor.vala"
+                               _tmp109_ = _tmp108_;
+#line 626 "../src/contacts-contact-editor.vala"
+                               if (!_tmp109_) {
+#line 5321 "contacts-contact-editor.c"
+                                       GeeHashMap* _tmp110_;
+                                       const gchar* _tmp111_;
+                                       gpointer _tmp112_;
+                                       GeeHashMap* _tmp113_;
+                                       gboolean _tmp114_;
+#line 627 "../src/contacts-contact-editor.vala"
+                                       _tmp110_ = self->priv->writable_personas;
+#line 627 "../src/contacts-contact-editor.vala"
+                                       _tmp111_ = persona_uid;
+#line 627 "../src/contacts-contact-editor.vala"
+                                       _tmp112_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp110_, 
_tmp111_);
+#line 627 "../src/contacts-contact-editor.vala"
+                                       _tmp113_ = (GeeHashMap*) _tmp112_;
+#line 627 "../src/contacts-contact-editor.vala"
+                                       _tmp114_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp113_, 
prop_name);
+#line 627 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp113_);
+#line 627 "../src/contacts-contact-editor.vala"
+                                       if (_tmp114_) {
+#line 5341 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _entry_it = NULL;
+                                                       GeeHashMap* _tmp115_;
+                                                       GeeSet* _tmp116_;
+                                                       GeeSet* _tmp117_;
+                                                       GeeSet* _tmp118_;
+                                                       GeeIterator* _tmp119_;
+                                                       GeeIterator* _tmp120_;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _tmp115_ = rows;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _tmp116_ = gee_abstract_map_get_entries 
((GeeAbstractMap*) _tmp115_);
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _tmp117_ = _tmp116_;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _tmp118_ = _tmp117_;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _tmp119_ = gee_iterable_iterator ((GeeIterable*) 
_tmp118_);
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _tmp120_ = _tmp119_;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp118_);
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _entry_it = _tmp120_;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 5368 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp121_;
+                                                               GeeMapEntry* entry = NULL;
+                                                               GeeIterator* _tmp122_;
+                                                               gpointer _tmp123_;
+                                                               GeeHashMap* _tmp124_;
+                                                               const gchar* _tmp125_;
+                                                               gpointer _tmp126_;
+                                                               GeeHashMap* _tmp127_;
+                                                               gpointer _tmp128_;
+                                                               ContactsContactEditorField* _tmp129_;
+                                                               GeeHashMap* _tmp130_;
+                                                               GeeMapEntry* _tmp131_;
+                                                               gconstpointer _tmp132_;
+                                                               gint _tmp133_;
+                                                               GeeMapEntry* _tmp134_;
+                                                               gconstpointer _tmp135_;
+                                                               ContactsContactEditorRowData* _tmp136_;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                               _tmp121_ = _entry_it;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp121_)) {
+#line 628 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 5392 "contacts-contact-editor.c"
+                                                               }
+#line 628 "../src/contacts-contact-editor.vala"
+                                                               _tmp122_ = _entry_it;
+#line 628 "../src/contacts-contact-editor.vala"
+                                                               _tmp123_ = gee_iterator_get (_tmp122_);
+#line 628 "../src/contacts-contact-editor.vala"
+                                                               entry = (GeeMapEntry*) _tmp123_;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp124_ = self->priv->writable_personas;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp125_ = persona_uid;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp126_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp124_, _tmp125_);
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp127_ = (GeeHashMap*) _tmp126_;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp128_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp127_, prop_name);
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp129_ = (ContactsContactEditorField*) 
_tmp128_;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp130_ = (*_tmp129_).rows;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp131_ = entry;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp132_ = gee_map_entry_get_key (_tmp131_);
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp133_ = _tmp132_;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp134_ = entry;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp135_ = gee_map_entry_get_value (_tmp134_);
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _tmp136_ = _tmp135_;
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp130_, (gpointer) ((gintptr) ((gint) ((gintptr) _tmp133_))), (ContactsContactEditorRowData*) _tmp136_);
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _contacts_contact_editor_field_free0 
(_tmp129_);
+#line 629 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp127_);
+#line 628 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (entry);
+#line 5434 "contacts-contact-editor.c"
+                                                       }
+#line 628 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_entry_it);
+#line 5438 "contacts-contact-editor.c"
+                                               }
+                                       } else {
+                                               GeeHashMap* _tmp137_;
+                                               const gchar* _tmp138_;
+                                               gpointer _tmp139_;
+                                               GeeHashMap* _tmp140_;
+                                               GeeHashMap* _tmp141_;
+                                               ContactsContactEditorField _tmp142_ = {0};
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _tmp137_ = self->priv->writable_personas;
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _tmp138_ = persona_uid;
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _tmp139_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp137_, 
_tmp138_);
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _tmp140_ = (GeeHashMap*) _tmp139_;
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _tmp141_ = rows;
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _tmp142_.changed = FALSE;
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp142_.rows);
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _tmp142_.rows = _tmp141_;
+#line 632 "../src/contacts-contact-editor.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp140_, prop_name, 
&_tmp142_);
+#line 632 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp140_);
+#line 5467 "contacts-contact-editor.c"
+                                       }
+                               }
+#line 635 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (rows);
+#line 635 "../src/contacts-contact-editor.vala"
+                               break;
+#line 5474 "contacts-contact-editor.c"
+                       }
+               }
+       } else if (_tmp6_ == ((0 != _tmp5_label2) ? _tmp5_label2 : (_tmp5_label2 = g_quark_from_static_string 
("urls")))) {
+#line 579 "../src/contacts-contact-editor.vala"
+               switch (0) {
+#line 5480 "contacts-contact-editor.c"
+                       default:
+                       {
+                               GeeHashMap* rows = NULL;
+                               GeeHashMap* _tmp143_;
+                               GeeHashMap* _tmp167_;
+                               gboolean _tmp168_;
+                               gboolean _tmp169_;
+#line 637 "../src/contacts-contact-editor.vala"
+                               _tmp143_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, 
CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 637 "../src/contacts-contact-editor.vala"
+                               rows = _tmp143_;
+#line 638 "../src/contacts-contact-editor.vala"
+                               if (add_empty) {
+#line 5494 "contacts-contact-editor.c"
+                                       FolksUrlFieldDetails* detail_field = NULL;
+                                       FolksUrlFieldDetails* _tmp144_;
+                                       FolksUrlFieldDetails* _tmp145_;
+                                       GeeHashMap* _tmp146_;
+                                       FolksUrlFieldDetails* _tmp147_;
+                                       ContactsContactEditorRowData _tmp148_ = {0};
+                                       gint _tmp149_;
+#line 639 "../src/contacts-contact-editor.vala"
+                                       _tmp144_ = folks_url_field_details_new ("", NULL);
+#line 639 "../src/contacts-contact-editor.vala"
+                                       detail_field = _tmp144_;
+#line 640 "../src/contacts-contact-editor.vala"
+                                       _tmp145_ = detail_field;
+#line 640 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_attach_row_with_entry_labeled (self, _ 
("Website"), (FolksAbstractFieldDetails*) _tmp145_, "", *row);
+#line 641 "../src/contacts-contact-editor.vala"
+                                       _tmp146_ = rows;
+#line 641 "../src/contacts-contact-editor.vala"
+                                       _tmp147_ = detail_field;
+#line 641 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp148_.details);
+#line 641 "../src/contacts-contact-editor.vala"
+                                       _tmp148_.details = (FolksAbstractFieldDetails*) _tmp147_;
+#line 641 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp146_, (gpointer) 
((gintptr) (*row)), &_tmp148_);
+#line 642 "../src/contacts-contact-editor.vala"
+                                       _tmp149_ = *row;
+#line 642 "../src/contacts-contact-editor.vala"
+                                       *row = _tmp149_ + 1;
+#line 638 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (detail_field);
+#line 5526 "contacts-contact-editor.c"
+                               } else {
+                                       FolksUrlDetails* url_details = NULL;
+                                       FolksUrlDetails* _tmp150_;
+                                       FolksUrlDetails* _tmp151_;
+#line 644 "../src/contacts-contact-editor.vala"
+                                       _tmp150_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, 
FOLKS_TYPE_URL_DETAILS) ? ((FolksUrlDetails*) p) : NULL);
+#line 644 "../src/contacts-contact-editor.vala"
+                                       url_details = _tmp150_;
+#line 645 "../src/contacts-contact-editor.vala"
+                                       _tmp151_ = url_details;
+#line 645 "../src/contacts-contact-editor.vala"
+                                       if (_tmp151_ != NULL) {
+#line 5539 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _url_it = NULL;
+                                                       FolksUrlDetails* _tmp152_;
+                                                       GeeSet* _tmp153_;
+                                                       GeeSet* _tmp154_;
+                                                       GeeIterator* _tmp155_;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                       _tmp152_ = url_details;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                       _tmp153_ = folks_url_details_get_urls (_tmp152_);
+#line 646 "../src/contacts-contact-editor.vala"
+                                                       _tmp154_ = _tmp153_;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                       _tmp155_ = gee_iterable_iterator ((GeeIterable*) 
_tmp154_);
+#line 646 "../src/contacts-contact-editor.vala"
+                                                       _url_it = _tmp155_;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 5558 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp156_;
+                                                               FolksUrlFieldDetails* url = NULL;
+                                                               GeeIterator* _tmp157_;
+                                                               gpointer _tmp158_;
+                                                               FolksUrlFieldDetails* _tmp159_;
+                                                               FolksUrlFieldDetails* _tmp160_;
+                                                               gconstpointer _tmp161_;
+                                                               const gchar* _tmp162_;
+                                                               GeeHashMap* _tmp163_;
+                                                               FolksUrlFieldDetails* _tmp164_;
+                                                               ContactsContactEditorRowData _tmp165_ = {0};
+                                                               gint _tmp166_;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                               _tmp156_ = _url_it;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp156_)) {
+#line 646 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 5577 "contacts-contact-editor.c"
+                                                               }
+#line 646 "../src/contacts-contact-editor.vala"
+                                                               _tmp157_ = _url_it;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                               _tmp158_ = gee_iterator_get (_tmp157_);
+#line 646 "../src/contacts-contact-editor.vala"
+                                                               url = (FolksUrlFieldDetails*) _tmp158_;
+#line 647 "../src/contacts-contact-editor.vala"
+                                                               _tmp159_ = url;
+#line 647 "../src/contacts-contact-editor.vala"
+                                                               _tmp160_ = url;
+#line 647 "../src/contacts-contact-editor.vala"
+                                                               _tmp161_ = 
folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp160_);
+#line 647 "../src/contacts-contact-editor.vala"
+                                                               _tmp162_ = _tmp161_;
+#line 647 "../src/contacts-contact-editor.vala"
+                                                               
contacts_contact_editor_attach_row_with_entry_labeled (self, _ ("Website"), (FolksAbstractFieldDetails*) 
_tmp159_, (const gchar*) _tmp162_, *row);
+#line 648 "../src/contacts-contact-editor.vala"
+                                                               _tmp163_ = rows;
+#line 648 "../src/contacts-contact-editor.vala"
+                                                               _tmp164_ = url;
+#line 648 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp165_.details);
+#line 648 "../src/contacts-contact-editor.vala"
+                                                               _tmp165_.details = 
(FolksAbstractFieldDetails*) _tmp164_;
+#line 648 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp163_, (gpointer) ((gintptr) (*row)), &_tmp165_);
+#line 649 "../src/contacts-contact-editor.vala"
+                                                               _tmp166_ = *row;
+#line 649 "../src/contacts-contact-editor.vala"
+                                                               *row = _tmp166_ + 1;
+#line 646 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (url);
+#line 5611 "contacts-contact-editor.c"
+                                                       }
+#line 646 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_url_it);
+#line 5615 "contacts-contact-editor.c"
+                                               }
+                                       }
+#line 638 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (url_details);
+#line 5620 "contacts-contact-editor.c"
+                               }
+#line 653 "../src/contacts-contact-editor.vala"
+                               _tmp167_ = rows;
+#line 653 "../src/contacts-contact-editor.vala"
+                               _tmp168_ = gee_map_get_is_empty ((GeeMap*) _tmp167_);
+#line 653 "../src/contacts-contact-editor.vala"
+                               _tmp169_ = _tmp168_;
+#line 653 "../src/contacts-contact-editor.vala"
+                               if (!_tmp169_) {
+#line 5630 "contacts-contact-editor.c"
+                                       GeeHashMap* _tmp170_;
+                                       const gchar* _tmp171_;
+                                       gpointer _tmp172_;
+                                       GeeHashMap* _tmp173_;
+                                       gboolean _tmp174_;
+#line 654 "../src/contacts-contact-editor.vala"
+                                       _tmp170_ = self->priv->writable_personas;
+#line 654 "../src/contacts-contact-editor.vala"
+                                       _tmp171_ = persona_uid;
+#line 654 "../src/contacts-contact-editor.vala"
+                                       _tmp172_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp170_, 
_tmp171_);
+#line 654 "../src/contacts-contact-editor.vala"
+                                       _tmp173_ = (GeeHashMap*) _tmp172_;
+#line 654 "../src/contacts-contact-editor.vala"
+                                       _tmp174_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp173_, 
prop_name);
+#line 654 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp173_);
+#line 654 "../src/contacts-contact-editor.vala"
+                                       if (_tmp174_) {
+#line 5650 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _entry_it = NULL;
+                                                       GeeHashMap* _tmp175_;
+                                                       GeeSet* _tmp176_;
+                                                       GeeSet* _tmp177_;
+                                                       GeeSet* _tmp178_;
+                                                       GeeIterator* _tmp179_;
+                                                       GeeIterator* _tmp180_;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _tmp175_ = rows;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _tmp176_ = gee_abstract_map_get_entries 
((GeeAbstractMap*) _tmp175_);
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _tmp177_ = _tmp176_;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _tmp178_ = _tmp177_;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _tmp179_ = gee_iterable_iterator ((GeeIterable*) 
_tmp178_);
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _tmp180_ = _tmp179_;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp178_);
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _entry_it = _tmp180_;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 5677 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp181_;
+                                                               GeeMapEntry* entry = NULL;
+                                                               GeeIterator* _tmp182_;
+                                                               gpointer _tmp183_;
+                                                               GeeHashMap* _tmp184_;
+                                                               const gchar* _tmp185_;
+                                                               gpointer _tmp186_;
+                                                               GeeHashMap* _tmp187_;
+                                                               gpointer _tmp188_;
+                                                               ContactsContactEditorField* _tmp189_;
+                                                               GeeHashMap* _tmp190_;
+                                                               GeeMapEntry* _tmp191_;
+                                                               gconstpointer _tmp192_;
+                                                               gint _tmp193_;
+                                                               GeeMapEntry* _tmp194_;
+                                                               gconstpointer _tmp195_;
+                                                               ContactsContactEditorRowData* _tmp196_;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                               _tmp181_ = _entry_it;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp181_)) {
+#line 655 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 5701 "contacts-contact-editor.c"
+                                                               }
+#line 655 "../src/contacts-contact-editor.vala"
+                                                               _tmp182_ = _entry_it;
+#line 655 "../src/contacts-contact-editor.vala"
+                                                               _tmp183_ = gee_iterator_get (_tmp182_);
+#line 655 "../src/contacts-contact-editor.vala"
+                                                               entry = (GeeMapEntry*) _tmp183_;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp184_ = self->priv->writable_personas;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp185_ = persona_uid;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp186_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp184_, _tmp185_);
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp187_ = (GeeHashMap*) _tmp186_;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp188_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp187_, prop_name);
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp189_ = (ContactsContactEditorField*) 
_tmp188_;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp190_ = (*_tmp189_).rows;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp191_ = entry;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp192_ = gee_map_entry_get_key (_tmp191_);
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp193_ = _tmp192_;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp194_ = entry;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp195_ = gee_map_entry_get_value (_tmp194_);
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _tmp196_ = _tmp195_;
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp190_, (gpointer) ((gintptr) ((gint) ((gintptr) _tmp193_))), (ContactsContactEditorRowData*) _tmp196_);
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _contacts_contact_editor_field_free0 
(_tmp189_);
+#line 656 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp187_);
+#line 655 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (entry);
+#line 5743 "contacts-contact-editor.c"
+                                                       }
+#line 655 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_entry_it);
+#line 5747 "contacts-contact-editor.c"
+                                               }
+                                       } else {
+                                               GeeHashMap* _tmp197_;
+                                               const gchar* _tmp198_;
+                                               gpointer _tmp199_;
+                                               GeeHashMap* _tmp200_;
+                                               GeeHashMap* _tmp201_;
+                                               ContactsContactEditorField _tmp202_ = {0};
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _tmp197_ = self->priv->writable_personas;
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _tmp198_ = persona_uid;
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _tmp199_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp197_, 
_tmp198_);
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _tmp200_ = (GeeHashMap*) _tmp199_;
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _tmp201_ = rows;
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _tmp202_.changed = FALSE;
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp202_.rows);
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _tmp202_.rows = _tmp201_;
+#line 659 "../src/contacts-contact-editor.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp200_, prop_name, 
&_tmp202_);
+#line 659 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp200_);
+#line 5776 "contacts-contact-editor.c"
+                                       }
+                               }
+#line 662 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (rows);
+#line 662 "../src/contacts-contact-editor.vala"
+                               break;
+#line 5783 "contacts-contact-editor.c"
+                       }
+               }
+       } else if (_tmp6_ == ((0 != _tmp5_label3) ? _tmp5_label3 : (_tmp5_label3 = g_quark_from_static_string 
("nickname")))) {
+#line 579 "../src/contacts-contact-editor.vala"
+               switch (0) {
+#line 5789 "contacts-contact-editor.c"
+                       default:
+                       {
+                               GeeHashMap* rows = NULL;
+                               GeeHashMap* _tmp203_;
+                               GeeHashMap* _tmp218_;
+                               gboolean _tmp219_;
+                               gboolean _tmp220_;
+#line 664 "../src/contacts-contact-editor.vala"
+                               _tmp203_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, 
CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 664 "../src/contacts-contact-editor.vala"
+                               rows = _tmp203_;
+#line 665 "../src/contacts-contact-editor.vala"
+                               if (add_empty) {
+#line 5803 "contacts-contact-editor.c"
+                                       GeeHashMap* _tmp204_;
+                                       ContactsContactEditorRowData _tmp205_ = {0};
+                                       gint _tmp206_;
+#line 666 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_attach_row_with_entry_labeled (self, _ 
("Nickname"), NULL, "", *row);
+#line 667 "../src/contacts-contact-editor.vala"
+                                       _tmp204_ = rows;
+#line 667 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp205_.details);
+#line 667 "../src/contacts-contact-editor.vala"
+                                       _tmp205_.details = NULL;
+#line 667 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp204_, (gpointer) 
((gintptr) (*row)), &_tmp205_);
+#line 668 "../src/contacts-contact-editor.vala"
+                                       _tmp206_ = *row;
+#line 668 "../src/contacts-contact-editor.vala"
+                                       *row = _tmp206_ + 1;
+#line 5821 "contacts-contact-editor.c"
+                               } else {
+                                       FolksNameDetails* name_details = NULL;
+                                       FolksNameDetails* _tmp207_;
+                                       FolksNameDetails* _tmp208_;
+#line 670 "../src/contacts-contact-editor.vala"
+                                       _tmp207_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, 
FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) p) : NULL);
+#line 670 "../src/contacts-contact-editor.vala"
+                                       name_details = _tmp207_;
+#line 671 "../src/contacts-contact-editor.vala"
+                                       _tmp208_ = name_details;
+#line 671 "../src/contacts-contact-editor.vala"
+                                       if (_tmp208_ != NULL) {
+#line 5834 "contacts-contact-editor.c"
+                                               FolksNameDetails* _tmp209_;
+                                               const gchar* _tmp210_;
+                                               const gchar* _tmp211_;
+#line 672 "../src/contacts-contact-editor.vala"
+                                               _tmp209_ = name_details;
+#line 672 "../src/contacts-contact-editor.vala"
+                                               _tmp210_ = folks_name_details_get_nickname (_tmp209_);
+#line 672 "../src/contacts-contact-editor.vala"
+                                               _tmp211_ = _tmp210_;
+#line 672 "../src/contacts-contact-editor.vala"
+                                               if (contacts_is_set (_tmp211_)) {
+#line 5846 "contacts-contact-editor.c"
+                                                       FolksNameDetails* _tmp212_;
+                                                       const gchar* _tmp213_;
+                                                       const gchar* _tmp214_;
+                                                       GeeHashMap* _tmp215_;
+                                                       ContactsContactEditorRowData _tmp216_ = {0};
+                                                       gint _tmp217_;
+#line 673 "../src/contacts-contact-editor.vala"
+                                                       _tmp212_ = name_details;
+#line 673 "../src/contacts-contact-editor.vala"
+                                                       _tmp213_ = folks_name_details_get_nickname (_tmp212_);
+#line 673 "../src/contacts-contact-editor.vala"
+                                                       _tmp214_ = _tmp213_;
+#line 673 "../src/contacts-contact-editor.vala"
+                                                       contacts_contact_editor_attach_row_with_entry_labeled 
(self, _ ("Nickname"), NULL, _tmp214_, *row);
+#line 674 "../src/contacts-contact-editor.vala"
+                                                       _tmp215_ = rows;
+#line 674 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp216_.details);
+#line 674 "../src/contacts-contact-editor.vala"
+                                                       _tmp216_.details = NULL;
+#line 674 "../src/contacts-contact-editor.vala"
+                                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp215_, 
(gpointer) ((gintptr) (*row)), &_tmp216_);
+#line 675 "../src/contacts-contact-editor.vala"
+                                                       _tmp217_ = *row;
+#line 675 "../src/contacts-contact-editor.vala"
+                                                       *row = _tmp217_ + 1;
+#line 5873 "contacts-contact-editor.c"
+                                               }
+                                       }
+#line 665 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (name_details);
+#line 5878 "contacts-contact-editor.c"
+                               }
+#line 679 "../src/contacts-contact-editor.vala"
+                               _tmp218_ = rows;
+#line 679 "../src/contacts-contact-editor.vala"
+                               _tmp219_ = gee_map_get_is_empty ((GeeMap*) _tmp218_);
+#line 679 "../src/contacts-contact-editor.vala"
+                               _tmp220_ = _tmp219_;
+#line 679 "../src/contacts-contact-editor.vala"
+                               if (!_tmp220_) {
+#line 5888 "contacts-contact-editor.c"
+                                       GtkButton* delete_button = NULL;
+                                       GtkGrid* _tmp221_;
+                                       GtkWidget* _tmp222_;
+                                       GtkButton* _tmp223_;
+                                       GtkButton* _tmp224_;
+                                       GeeHashMap* _tmp225_;
+                                       const gchar* _tmp226_;
+                                       gpointer _tmp227_;
+                                       GeeHashMap* _tmp228_;
+                                       gboolean _tmp229_;
+#line 680 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_set_has_nickname_row (self, TRUE);
+#line 681 "../src/contacts-contact-editor.vala"
+                                       _tmp221_ = ((ContactsContactForm*) self)->container_grid;
+#line 681 "../src/contacts-contact-editor.vala"
+                                       _tmp222_ = gtk_grid_get_child_at (_tmp221_, 2, (*row) - 1);
+#line 681 "../src/contacts-contact-editor.vala"
+                                       _tmp223_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp222_, 
gtk_button_get_type ()) ? ((GtkButton*) _tmp222_) : NULL);
+#line 681 "../src/contacts-contact-editor.vala"
+                                       delete_button = _tmp223_;
+#line 682 "../src/contacts-contact-editor.vala"
+                                       _tmp224_ = delete_button;
+#line 682 "../src/contacts-contact-editor.vala"
+                                       g_signal_connect_object (_tmp224_, "clicked", (GCallback) 
_____lambda29__gtk_button_clicked, self, 0);
+#line 686 "../src/contacts-contact-editor.vala"
+                                       _tmp225_ = self->priv->writable_personas;
+#line 686 "../src/contacts-contact-editor.vala"
+                                       _tmp226_ = persona_uid;
+#line 686 "../src/contacts-contact-editor.vala"
+                                       _tmp227_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp225_, 
_tmp226_);
+#line 686 "../src/contacts-contact-editor.vala"
+                                       _tmp228_ = (GeeHashMap*) _tmp227_;
+#line 686 "../src/contacts-contact-editor.vala"
+                                       _tmp229_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp228_, 
prop_name);
+#line 686 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp228_);
+#line 686 "../src/contacts-contact-editor.vala"
+                                       if (_tmp229_) {
+#line 5927 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _entry_it = NULL;
+                                                       GeeHashMap* _tmp230_;
+                                                       GeeSet* _tmp231_;
+                                                       GeeSet* _tmp232_;
+                                                       GeeSet* _tmp233_;
+                                                       GeeIterator* _tmp234_;
+                                                       GeeIterator* _tmp235_;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _tmp230_ = rows;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _tmp231_ = gee_abstract_map_get_entries 
((GeeAbstractMap*) _tmp230_);
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _tmp232_ = _tmp231_;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _tmp233_ = _tmp232_;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _tmp234_ = gee_iterable_iterator ((GeeIterable*) 
_tmp233_);
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _tmp235_ = _tmp234_;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp233_);
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _entry_it = _tmp235_;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 5954 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp236_;
+                                                               GeeMapEntry* entry = NULL;
+                                                               GeeIterator* _tmp237_;
+                                                               gpointer _tmp238_;
+                                                               GeeHashMap* _tmp239_;
+                                                               const gchar* _tmp240_;
+                                                               gpointer _tmp241_;
+                                                               GeeHashMap* _tmp242_;
+                                                               gpointer _tmp243_;
+                                                               ContactsContactEditorField* _tmp244_;
+                                                               GeeHashMap* _tmp245_;
+                                                               GeeMapEntry* _tmp246_;
+                                                               gconstpointer _tmp247_;
+                                                               gint _tmp248_;
+                                                               GeeMapEntry* _tmp249_;
+                                                               gconstpointer _tmp250_;
+                                                               ContactsContactEditorRowData* _tmp251_;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                               _tmp236_ = _entry_it;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp236_)) {
+#line 687 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 5978 "contacts-contact-editor.c"
+                                                               }
+#line 687 "../src/contacts-contact-editor.vala"
+                                                               _tmp237_ = _entry_it;
+#line 687 "../src/contacts-contact-editor.vala"
+                                                               _tmp238_ = gee_iterator_get (_tmp237_);
+#line 687 "../src/contacts-contact-editor.vala"
+                                                               entry = (GeeMapEntry*) _tmp238_;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp239_ = self->priv->writable_personas;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp240_ = persona_uid;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp241_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp239_, _tmp240_);
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp242_ = (GeeHashMap*) _tmp241_;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp243_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp242_, prop_name);
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp244_ = (ContactsContactEditorField*) 
_tmp243_;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp245_ = (*_tmp244_).rows;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp246_ = entry;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp247_ = gee_map_entry_get_key (_tmp246_);
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp248_ = _tmp247_;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp249_ = entry;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp250_ = gee_map_entry_get_value (_tmp249_);
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _tmp251_ = _tmp250_;
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp245_, (gpointer) ((gintptr) ((gint) ((gintptr) _tmp248_))), (ContactsContactEditorRowData*) _tmp251_);
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _contacts_contact_editor_field_free0 
(_tmp244_);
+#line 688 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp242_);
+#line 687 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (entry);
+#line 6020 "contacts-contact-editor.c"
+                                                       }
+#line 687 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_entry_it);
+#line 6024 "contacts-contact-editor.c"
+                                               }
+                                       } else {
+                                               GeeHashMap* _tmp252_;
+                                               const gchar* _tmp253_;
+                                               gpointer _tmp254_;
+                                               GeeHashMap* _tmp255_;
+                                               GeeHashMap* _tmp256_;
+                                               ContactsContactEditorField _tmp257_ = {0};
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _tmp252_ = self->priv->writable_personas;
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _tmp253_ = persona_uid;
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _tmp254_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp252_, 
_tmp253_);
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _tmp255_ = (GeeHashMap*) _tmp254_;
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _tmp256_ = rows;
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _tmp257_.changed = FALSE;
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp257_.rows);
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _tmp257_.rows = _tmp256_;
+#line 691 "../src/contacts-contact-editor.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp255_, prop_name, 
&_tmp257_);
+#line 691 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp255_);
+#line 6053 "contacts-contact-editor.c"
+                                       }
+#line 679 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (delete_button);
+#line 6057 "contacts-contact-editor.c"
+                               }
+#line 694 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (rows);
+#line 694 "../src/contacts-contact-editor.vala"
+                               break;
+#line 6063 "contacts-contact-editor.c"
+                       }
+               }
+       } else if (_tmp6_ == ((0 != _tmp5_label4) ? _tmp5_label4 : (_tmp5_label4 = g_quark_from_static_string 
("birthday")))) {
+#line 579 "../src/contacts-contact-editor.vala"
+               switch (0) {
+#line 6069 "contacts-contact-editor.c"
+                       default:
+                       {
+                               GeeHashMap* rows = NULL;
+                               GeeHashMap* _tmp258_;
+                               GeeHashMap* _tmp275_;
+                               gboolean _tmp276_;
+                               gboolean _tmp277_;
+#line 696 "../src/contacts-contact-editor.vala"
+                               _tmp258_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, 
CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 696 "../src/contacts-contact-editor.vala"
+                               rows = _tmp258_;
+#line 697 "../src/contacts-contact-editor.vala"
+                               if (add_empty) {
+#line 6083 "contacts-contact-editor.c"
+                                       GDateTime* today = NULL;
+                                       GDateTime* _tmp259_;
+                                       GDateTime* _tmp260_;
+                                       GeeHashMap* _tmp261_;
+                                       ContactsContactEditorRowData _tmp262_ = {0};
+                                       gint _tmp263_;
+#line 698 "../src/contacts-contact-editor.vala"
+                                       _tmp259_ = g_date_time_new_now_local ();
+#line 698 "../src/contacts-contact-editor.vala"
+                                       today = _tmp259_;
+#line 699 "../src/contacts-contact-editor.vala"
+                                       _tmp260_ = today;
+#line 699 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_attach_row_for_birthday (self, _ 
("Birthday"), NULL, _tmp260_, *row);
+#line 700 "../src/contacts-contact-editor.vala"
+                                       _tmp261_ = rows;
+#line 700 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp262_.details);
+#line 700 "../src/contacts-contact-editor.vala"
+                                       _tmp262_.details = NULL;
+#line 700 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp261_, (gpointer) 
((gintptr) (*row)), &_tmp262_);
+#line 701 "../src/contacts-contact-editor.vala"
+                                       _tmp263_ = *row;
+#line 701 "../src/contacts-contact-editor.vala"
+                                       *row = _tmp263_ + 1;
+#line 697 "../src/contacts-contact-editor.vala"
+                                       _g_date_time_unref0 (today);
+#line 6112 "contacts-contact-editor.c"
+                               } else {
+                                       FolksBirthdayDetails* birthday_details = NULL;
+                                       FolksBirthdayDetails* _tmp264_;
+                                       FolksBirthdayDetails* _tmp265_;
+#line 703 "../src/contacts-contact-editor.vala"
+                                       _tmp264_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, 
FOLKS_TYPE_BIRTHDAY_DETAILS) ? ((FolksBirthdayDetails*) p) : NULL);
+#line 703 "../src/contacts-contact-editor.vala"
+                                       birthday_details = _tmp264_;
+#line 704 "../src/contacts-contact-editor.vala"
+                                       _tmp265_ = birthday_details;
+#line 704 "../src/contacts-contact-editor.vala"
+                                       if (_tmp265_ != NULL) {
+#line 6125 "contacts-contact-editor.c"
+                                               FolksBirthdayDetails* _tmp266_;
+                                               GDateTime* _tmp267_;
+                                               GDateTime* _tmp268_;
+#line 705 "../src/contacts-contact-editor.vala"
+                                               _tmp266_ = birthday_details;
+#line 705 "../src/contacts-contact-editor.vala"
+                                               _tmp267_ = folks_birthday_details_get_birthday (_tmp266_);
+#line 705 "../src/contacts-contact-editor.vala"
+                                               _tmp268_ = _tmp267_;
+#line 705 "../src/contacts-contact-editor.vala"
+                                               if (_tmp268_ != NULL) {
+#line 6137 "contacts-contact-editor.c"
+                                                       FolksBirthdayDetails* _tmp269_;
+                                                       GDateTime* _tmp270_;
+                                                       GDateTime* _tmp271_;
+                                                       GeeHashMap* _tmp272_;
+                                                       ContactsContactEditorRowData _tmp273_ = {0};
+                                                       gint _tmp274_;
+#line 706 "../src/contacts-contact-editor.vala"
+                                                       _tmp269_ = birthday_details;
+#line 706 "../src/contacts-contact-editor.vala"
+                                                       _tmp270_ = folks_birthday_details_get_birthday 
(_tmp269_);
+#line 706 "../src/contacts-contact-editor.vala"
+                                                       _tmp271_ = _tmp270_;
+#line 706 "../src/contacts-contact-editor.vala"
+                                                       contacts_contact_editor_attach_row_for_birthday 
(self, _ ("Birthday"), NULL, _tmp271_, *row);
+#line 707 "../src/contacts-contact-editor.vala"
+                                                       _tmp272_ = rows;
+#line 707 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp273_.details);
+#line 707 "../src/contacts-contact-editor.vala"
+                                                       _tmp273_.details = NULL;
+#line 707 "../src/contacts-contact-editor.vala"
+                                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp272_, 
(gpointer) ((gintptr) (*row)), &_tmp273_);
+#line 708 "../src/contacts-contact-editor.vala"
+                                                       _tmp274_ = *row;
+#line 708 "../src/contacts-contact-editor.vala"
+                                                       *row = _tmp274_ + 1;
+#line 6164 "contacts-contact-editor.c"
+                                               }
+                                       }
+#line 697 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (birthday_details);
+#line 6169 "contacts-contact-editor.c"
+                               }
+#line 712 "../src/contacts-contact-editor.vala"
+                               _tmp275_ = rows;
+#line 712 "../src/contacts-contact-editor.vala"
+                               _tmp276_ = gee_map_get_is_empty ((GeeMap*) _tmp275_);
+#line 712 "../src/contacts-contact-editor.vala"
+                               _tmp277_ = _tmp276_;
+#line 712 "../src/contacts-contact-editor.vala"
+                               if (!_tmp277_) {
+#line 6179 "contacts-contact-editor.c"
+                                       GeeHashMap* _tmp278_;
+                                       const gchar* _tmp279_;
+                                       gpointer _tmp280_;
+                                       GeeHashMap* _tmp281_;
+                                       GeeHashMap* _tmp282_;
+                                       ContactsContactEditorField _tmp283_ = {0};
+#line 713 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_set_has_birthday_row (self, TRUE);
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _tmp278_ = self->priv->writable_personas;
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _tmp279_ = persona_uid;
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _tmp280_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp278_, 
_tmp279_);
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _tmp281_ = (GeeHashMap*) _tmp280_;
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _tmp282_ = rows;
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _tmp283_.changed = add_empty;
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp283_.rows);
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _tmp283_.rows = _tmp282_;
+#line 714 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp281_, prop_name, 
&_tmp283_);
+#line 714 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp281_);
+#line 6208 "contacts-contact-editor.c"
+                               }
+#line 716 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (rows);
+#line 716 "../src/contacts-contact-editor.vala"
+                               break;
+#line 6214 "contacts-contact-editor.c"
+                       }
+               }
+       } else if (_tmp6_ == ((0 != _tmp5_label5) ? _tmp5_label5 : (_tmp5_label5 = g_quark_from_static_string 
("notes")))) {
+#line 579 "../src/contacts-contact-editor.vala"
+               switch (0) {
+#line 6220 "contacts-contact-editor.c"
+                       default:
+                       {
+                               GeeHashMap* rows = NULL;
+                               GeeHashMap* _tmp284_;
+                               GeeHashMap* _tmp309_;
+                               gboolean _tmp310_;
+                               gboolean _tmp311_;
+#line 718 "../src/contacts-contact-editor.vala"
+                               _tmp284_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, 
CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 718 "../src/contacts-contact-editor.vala"
+                               rows = _tmp284_;
+#line 719 "../src/contacts-contact-editor.vala"
+                               if (add_empty) {
+#line 6234 "contacts-contact-editor.c"
+                                       FolksNoteFieldDetails* detail_field = NULL;
+                                       FolksNoteFieldDetails* _tmp285_;
+                                       FolksNoteFieldDetails* _tmp286_;
+                                       GeeHashMap* _tmp287_;
+                                       FolksNoteFieldDetails* _tmp288_;
+                                       ContactsContactEditorRowData _tmp289_ = {0};
+                                       gint _tmp290_;
+#line 720 "../src/contacts-contact-editor.vala"
+                                       _tmp285_ = folks_note_field_details_new ("", NULL, NULL);
+#line 720 "../src/contacts-contact-editor.vala"
+                                       detail_field = _tmp285_;
+#line 721 "../src/contacts-contact-editor.vala"
+                                       _tmp286_ = detail_field;
+#line 721 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_attach_row_with_text_labeled (self, _ 
("Note"), (FolksAbstractFieldDetails*) _tmp286_, "", *row);
+#line 722 "../src/contacts-contact-editor.vala"
+                                       _tmp287_ = rows;
+#line 722 "../src/contacts-contact-editor.vala"
+                                       _tmp288_ = detail_field;
+#line 722 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp289_.details);
+#line 722 "../src/contacts-contact-editor.vala"
+                                       _tmp289_.details = (FolksAbstractFieldDetails*) _tmp288_;
+#line 722 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp287_, (gpointer) 
((gintptr) (*row)), &_tmp289_);
+#line 723 "../src/contacts-contact-editor.vala"
+                                       _tmp290_ = *row;
+#line 723 "../src/contacts-contact-editor.vala"
+                                       *row = _tmp290_ + 1;
+#line 719 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (detail_field);
+#line 6266 "contacts-contact-editor.c"
+                               } else {
+                                       FolksNoteDetails* note_details = NULL;
+                                       FolksNoteDetails* _tmp291_;
+                                       gboolean _tmp292_ = FALSE;
+                                       FolksNoteDetails* _tmp293_;
+#line 725 "../src/contacts-contact-editor.vala"
+                                       _tmp291_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, 
FOLKS_TYPE_NOTE_DETAILS) ? ((FolksNoteDetails*) p) : NULL);
+#line 725 "../src/contacts-contact-editor.vala"
+                                       note_details = _tmp291_;
+#line 726 "../src/contacts-contact-editor.vala"
+                                       _tmp293_ = note_details;
+#line 726 "../src/contacts-contact-editor.vala"
+                                       if (_tmp293_ != NULL) {
+#line 726 "../src/contacts-contact-editor.vala"
+                                               _tmp292_ = TRUE;
+#line 6282 "contacts-contact-editor.c"
+                                       } else {
+#line 726 "../src/contacts-contact-editor.vala"
+                                               _tmp292_ = add_empty;
+#line 6286 "contacts-contact-editor.c"
+                                       }
+#line 726 "../src/contacts-contact-editor.vala"
+                                       if (_tmp292_) {
+#line 6290 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _note_it = NULL;
+                                                       FolksNoteDetails* _tmp294_;
+                                                       GeeSet* _tmp295_;
+                                                       GeeSet* _tmp296_;
+                                                       GeeIterator* _tmp297_;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                       _tmp294_ = note_details;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                       _tmp295_ = folks_note_details_get_notes (_tmp294_);
+#line 727 "../src/contacts-contact-editor.vala"
+                                                       _tmp296_ = _tmp295_;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                       _tmp297_ = gee_iterable_iterator ((GeeIterable*) 
_tmp296_);
+#line 727 "../src/contacts-contact-editor.vala"
+                                                       _note_it = _tmp297_;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 6309 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp298_;
+                                                               FolksNoteFieldDetails* note = NULL;
+                                                               GeeIterator* _tmp299_;
+                                                               gpointer _tmp300_;
+                                                               FolksNoteFieldDetails* _tmp301_;
+                                                               FolksNoteFieldDetails* _tmp302_;
+                                                               gconstpointer _tmp303_;
+                                                               const gchar* _tmp304_;
+                                                               GeeHashMap* _tmp305_;
+                                                               FolksNoteFieldDetails* _tmp306_;
+                                                               ContactsContactEditorRowData _tmp307_ = {0};
+                                                               gint _tmp308_;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                               _tmp298_ = _note_it;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp298_)) {
+#line 727 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 6328 "contacts-contact-editor.c"
+                                                               }
+#line 727 "../src/contacts-contact-editor.vala"
+                                                               _tmp299_ = _note_it;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                               _tmp300_ = gee_iterator_get (_tmp299_);
+#line 727 "../src/contacts-contact-editor.vala"
+                                                               note = (FolksNoteFieldDetails*) _tmp300_;
+#line 728 "../src/contacts-contact-editor.vala"
+                                                               _tmp301_ = note;
+#line 728 "../src/contacts-contact-editor.vala"
+                                                               _tmp302_ = note;
+#line 728 "../src/contacts-contact-editor.vala"
+                                                               _tmp303_ = 
folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp302_);
+#line 728 "../src/contacts-contact-editor.vala"
+                                                               _tmp304_ = _tmp303_;
+#line 728 "../src/contacts-contact-editor.vala"
+                                                               
contacts_contact_editor_attach_row_with_text_labeled (self, _ ("Note"), (FolksAbstractFieldDetails*) 
_tmp301_, (const gchar*) _tmp304_, *row);
+#line 729 "../src/contacts-contact-editor.vala"
+                                                               _tmp305_ = rows;
+#line 729 "../src/contacts-contact-editor.vala"
+                                                               _tmp306_ = note;
+#line 729 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp307_.details);
+#line 729 "../src/contacts-contact-editor.vala"
+                                                               _tmp307_.details = 
(FolksAbstractFieldDetails*) _tmp306_;
+#line 729 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp305_, (gpointer) ((gintptr) (*row)), &_tmp307_);
+#line 730 "../src/contacts-contact-editor.vala"
+                                                               _tmp308_ = *row;
+#line 730 "../src/contacts-contact-editor.vala"
+                                                               *row = _tmp308_ + 1;
+#line 727 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (note);
+#line 6362 "contacts-contact-editor.c"
+                                                       }
+#line 727 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_note_it);
+#line 6366 "contacts-contact-editor.c"
+                                               }
+                                       }
+#line 719 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (note_details);
+#line 6371 "contacts-contact-editor.c"
+                               }
+#line 734 "../src/contacts-contact-editor.vala"
+                               _tmp309_ = rows;
+#line 734 "../src/contacts-contact-editor.vala"
+                               _tmp310_ = gee_map_get_is_empty ((GeeMap*) _tmp309_);
+#line 734 "../src/contacts-contact-editor.vala"
+                               _tmp311_ = _tmp310_;
+#line 734 "../src/contacts-contact-editor.vala"
+                               if (!_tmp311_) {
+#line 6381 "contacts-contact-editor.c"
+                                       GeeHashMap* _tmp312_;
+                                       const gchar* _tmp313_;
+                                       gpointer _tmp314_;
+                                       GeeHashMap* _tmp315_;
+                                       gboolean _tmp316_;
+#line 735 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_set_has_notes_row (self, TRUE);
+#line 736 "../src/contacts-contact-editor.vala"
+                                       _tmp312_ = self->priv->writable_personas;
+#line 736 "../src/contacts-contact-editor.vala"
+                                       _tmp313_ = persona_uid;
+#line 736 "../src/contacts-contact-editor.vala"
+                                       _tmp314_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp312_, 
_tmp313_);
+#line 736 "../src/contacts-contact-editor.vala"
+                                       _tmp315_ = (GeeHashMap*) _tmp314_;
+#line 736 "../src/contacts-contact-editor.vala"
+                                       _tmp316_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp315_, 
prop_name);
+#line 736 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp315_);
+#line 736 "../src/contacts-contact-editor.vala"
+                                       if (_tmp316_) {
+#line 6403 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _entry_it = NULL;
+                                                       GeeHashMap* _tmp317_;
+                                                       GeeSet* _tmp318_;
+                                                       GeeSet* _tmp319_;
+                                                       GeeSet* _tmp320_;
+                                                       GeeIterator* _tmp321_;
+                                                       GeeIterator* _tmp322_;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _tmp317_ = rows;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _tmp318_ = gee_abstract_map_get_entries 
((GeeAbstractMap*) _tmp317_);
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _tmp319_ = _tmp318_;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _tmp320_ = _tmp319_;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _tmp321_ = gee_iterable_iterator ((GeeIterable*) 
_tmp320_);
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _tmp322_ = _tmp321_;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp320_);
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _entry_it = _tmp322_;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 6430 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp323_;
+                                                               GeeMapEntry* entry = NULL;
+                                                               GeeIterator* _tmp324_;
+                                                               gpointer _tmp325_;
+                                                               GeeHashMap* _tmp326_;
+                                                               const gchar* _tmp327_;
+                                                               gpointer _tmp328_;
+                                                               GeeHashMap* _tmp329_;
+                                                               gpointer _tmp330_;
+                                                               ContactsContactEditorField* _tmp331_;
+                                                               GeeHashMap* _tmp332_;
+                                                               GeeMapEntry* _tmp333_;
+                                                               gconstpointer _tmp334_;
+                                                               gint _tmp335_;
+                                                               GeeMapEntry* _tmp336_;
+                                                               gconstpointer _tmp337_;
+                                                               ContactsContactEditorRowData* _tmp338_;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                               _tmp323_ = _entry_it;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp323_)) {
+#line 737 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 6454 "contacts-contact-editor.c"
+                                                               }
+#line 737 "../src/contacts-contact-editor.vala"
+                                                               _tmp324_ = _entry_it;
+#line 737 "../src/contacts-contact-editor.vala"
+                                                               _tmp325_ = gee_iterator_get (_tmp324_);
+#line 737 "../src/contacts-contact-editor.vala"
+                                                               entry = (GeeMapEntry*) _tmp325_;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp326_ = self->priv->writable_personas;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp327_ = persona_uid;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp328_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp326_, _tmp327_);
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp329_ = (GeeHashMap*) _tmp328_;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp330_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp329_, prop_name);
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp331_ = (ContactsContactEditorField*) 
_tmp330_;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp332_ = (*_tmp331_).rows;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp333_ = entry;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp334_ = gee_map_entry_get_key (_tmp333_);
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp335_ = _tmp334_;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp336_ = entry;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp337_ = gee_map_entry_get_value (_tmp336_);
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _tmp338_ = _tmp337_;
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp332_, (gpointer) ((gintptr) ((gint) ((gintptr) _tmp335_))), (ContactsContactEditorRowData*) _tmp338_);
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _contacts_contact_editor_field_free0 
(_tmp331_);
+#line 738 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp329_);
+#line 737 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (entry);
+#line 6496 "contacts-contact-editor.c"
+                                                       }
+#line 737 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_entry_it);
+#line 6500 "contacts-contact-editor.c"
+                                               }
+                                       } else {
+                                               GeeHashMap* _tmp339_;
+                                               const gchar* _tmp340_;
+                                               gpointer _tmp341_;
+                                               GeeHashMap* _tmp342_;
+                                               GeeHashMap* _tmp343_;
+                                               ContactsContactEditorField _tmp344_ = {0};
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _tmp339_ = self->priv->writable_personas;
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _tmp340_ = persona_uid;
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _tmp341_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp339_, 
_tmp340_);
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _tmp342_ = (GeeHashMap*) _tmp341_;
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _tmp343_ = rows;
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _tmp344_.changed = FALSE;
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp344_.rows);
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _tmp344_.rows = _tmp343_;
+#line 741 "../src/contacts-contact-editor.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp342_, prop_name, 
&_tmp344_);
+#line 741 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp342_);
+#line 6529 "contacts-contact-editor.c"
+                                       }
+                               }
+#line 744 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (rows);
+#line 744 "../src/contacts-contact-editor.vala"
+                               break;
+#line 6536 "contacts-contact-editor.c"
+                       }
+               }
+       } else if (_tmp6_ == ((0 != _tmp5_label6) ? _tmp5_label6 : (_tmp5_label6 = g_quark_from_static_string 
("postal-addresses")))) {
+#line 579 "../src/contacts-contact-editor.vala"
+               switch (0) {
+#line 6542 "contacts-contact-editor.c"
+                       default:
+                       {
+                               GeeHashMap* rows = NULL;
+                               GeeHashMap* _tmp345_;
+                               GeeHashMap* _tmp373_;
+                               gboolean _tmp374_;
+                               gboolean _tmp375_;
+#line 746 "../src/contacts-contact-editor.vala"
+                               _tmp345_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, 
CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 746 "../src/contacts-contact-editor.vala"
+                               rows = _tmp345_;
+#line 747 "../src/contacts-contact-editor.vala"
+                               if (add_empty) {
+#line 6556 "contacts-contact-editor.c"
+                                       FolksPostalAddressFieldDetails* detail_field = NULL;
+                                       FolksPostalAddress* _tmp346_;
+                                       FolksPostalAddress* _tmp347_;
+                                       FolksPostalAddressFieldDetails* _tmp348_;
+                                       FolksPostalAddressFieldDetails* _tmp349_;
+                                       ContactsTypeSet* _tmp350_;
+                                       ContactsTypeSet* _tmp351_;
+                                       FolksPostalAddressFieldDetails* _tmp352_;
+                                       GeeHashMap* _tmp353_;
+                                       FolksPostalAddressFieldDetails* _tmp354_;
+                                       ContactsContactEditorRowData _tmp355_ = {0};
+                                       gint _tmp356_;
+#line 748 "../src/contacts-contact-editor.vala"
+                                       _tmp346_ = folks_postal_address_new (NULL, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL, NULL);
+#line 748 "../src/contacts-contact-editor.vala"
+                                       _tmp347_ = _tmp346_;
+#line 748 "../src/contacts-contact-editor.vala"
+                                       _tmp348_ = folks_postal_address_field_details_new (_tmp347_, NULL);
+#line 748 "../src/contacts-contact-editor.vala"
+                                       _tmp349_ = _tmp348_;
+#line 748 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp347_);
+#line 748 "../src/contacts-contact-editor.vala"
+                                       detail_field = _tmp349_;
+#line 758 "../src/contacts-contact-editor.vala"
+                                       _tmp350_ = contacts_typeset_get_general ();
+#line 758 "../src/contacts-contact-editor.vala"
+                                       _tmp351_ = _tmp350_;
+#line 758 "../src/contacts-contact-editor.vala"
+                                       _tmp352_ = detail_field;
+#line 758 "../src/contacts-contact-editor.vala"
+                                       contacts_contact_editor_attach_row_for_address (self, *row, _tmp351_, 
_tmp352_, type);
+#line 759 "../src/contacts-contact-editor.vala"
+                                       _tmp353_ = rows;
+#line 759 "../src/contacts-contact-editor.vala"
+                                       _tmp354_ = detail_field;
+#line 759 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp355_.details);
+#line 759 "../src/contacts-contact-editor.vala"
+                                       _tmp355_.details = (FolksAbstractFieldDetails*) _tmp354_;
+#line 759 "../src/contacts-contact-editor.vala"
+                                       gee_abstract_map_set ((GeeAbstractMap*) _tmp353_, (gpointer) 
((gintptr) (*row)), &_tmp355_);
+#line 760 "../src/contacts-contact-editor.vala"
+                                       _tmp356_ = *row;
+#line 760 "../src/contacts-contact-editor.vala"
+                                       *row = _tmp356_ + 1;
+#line 747 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (detail_field);
+#line 6605 "contacts-contact-editor.c"
+                               } else {
+                                       FolksPostalAddressDetails* address_details = NULL;
+                                       FolksPostalAddressDetails* _tmp357_;
+                                       FolksPostalAddressDetails* _tmp358_;
+#line 762 "../src/contacts-contact-editor.vala"
+                                       _tmp357_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (p, 
FOLKS_TYPE_POSTAL_ADDRESS_DETAILS) ? ((FolksPostalAddressDetails*) p) : NULL);
+#line 762 "../src/contacts-contact-editor.vala"
+                                       address_details = _tmp357_;
+#line 763 "../src/contacts-contact-editor.vala"
+                                       _tmp358_ = address_details;
+#line 763 "../src/contacts-contact-editor.vala"
+                                       if (_tmp358_ != NULL) {
+#line 6618 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _addr_it = NULL;
+                                                       FolksPostalAddressDetails* _tmp359_;
+                                                       GeeSet* _tmp360_;
+                                                       GeeSet* _tmp361_;
+                                                       GeeIterator* _tmp362_;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                       _tmp359_ = address_details;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                       _tmp360_ = 
folks_postal_address_details_get_postal_addresses (_tmp359_);
+#line 764 "../src/contacts-contact-editor.vala"
+                                                       _tmp361_ = _tmp360_;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                       _tmp362_ = gee_iterable_iterator ((GeeIterable*) 
_tmp361_);
+#line 764 "../src/contacts-contact-editor.vala"
+                                                       _addr_it = _tmp362_;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 6637 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp363_;
+                                                               FolksPostalAddressFieldDetails* addr = NULL;
+                                                               GeeIterator* _tmp364_;
+                                                               gpointer _tmp365_;
+                                                               ContactsTypeSet* _tmp366_;
+                                                               ContactsTypeSet* _tmp367_;
+                                                               FolksPostalAddressFieldDetails* _tmp368_;
+                                                               GeeHashMap* _tmp369_;
+                                                               FolksPostalAddressFieldDetails* _tmp370_;
+                                                               ContactsContactEditorRowData _tmp371_ = {0};
+                                                               gint _tmp372_;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                               _tmp363_ = _addr_it;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp363_)) {
+#line 764 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 6655 "contacts-contact-editor.c"
+                                                               }
+#line 764 "../src/contacts-contact-editor.vala"
+                                                               _tmp364_ = _addr_it;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                               _tmp365_ = gee_iterator_get (_tmp364_);
+#line 764 "../src/contacts-contact-editor.vala"
+                                                               addr = (FolksPostalAddressFieldDetails*) 
_tmp365_;
+#line 765 "../src/contacts-contact-editor.vala"
+                                                               _tmp366_ = contacts_typeset_get_general ();
+#line 765 "../src/contacts-contact-editor.vala"
+                                                               _tmp367_ = _tmp366_;
+#line 765 "../src/contacts-contact-editor.vala"
+                                                               _tmp368_ = addr;
+#line 765 "../src/contacts-contact-editor.vala"
+                                                               
contacts_contact_editor_attach_row_for_address (self, *row, _tmp367_, _tmp368_, type);
+#line 766 "../src/contacts-contact-editor.vala"
+                                                               _tmp369_ = rows;
+#line 766 "../src/contacts-contact-editor.vala"
+                                                               _tmp370_ = addr;
+#line 766 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp371_.details);
+#line 766 "../src/contacts-contact-editor.vala"
+                                                               _tmp371_.details = 
(FolksAbstractFieldDetails*) _tmp370_;
+#line 766 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp369_, (gpointer) ((gintptr) (*row)), &_tmp371_);
+#line 767 "../src/contacts-contact-editor.vala"
+                                                               _tmp372_ = *row;
+#line 767 "../src/contacts-contact-editor.vala"
+                                                               *row = _tmp372_ + 1;
+#line 764 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (addr);
+#line 6687 "contacts-contact-editor.c"
+                                                       }
+#line 764 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_addr_it);
+#line 6691 "contacts-contact-editor.c"
+                                               }
+                                       }
+#line 747 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (address_details);
+#line 6696 "contacts-contact-editor.c"
+                               }
+#line 771 "../src/contacts-contact-editor.vala"
+                               _tmp373_ = rows;
+#line 771 "../src/contacts-contact-editor.vala"
+                               _tmp374_ = gee_map_get_is_empty ((GeeMap*) _tmp373_);
+#line 771 "../src/contacts-contact-editor.vala"
+                               _tmp375_ = _tmp374_;
+#line 771 "../src/contacts-contact-editor.vala"
+                               if (!_tmp375_) {
+#line 6706 "contacts-contact-editor.c"
+                                       GeeHashMap* _tmp376_;
+                                       const gchar* _tmp377_;
+                                       gpointer _tmp378_;
+                                       GeeHashMap* _tmp379_;
+                                       gboolean _tmp380_;
+#line 772 "../src/contacts-contact-editor.vala"
+                                       _tmp376_ = self->priv->writable_personas;
+#line 772 "../src/contacts-contact-editor.vala"
+                                       _tmp377_ = persona_uid;
+#line 772 "../src/contacts-contact-editor.vala"
+                                       _tmp378_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp376_, 
_tmp377_);
+#line 772 "../src/contacts-contact-editor.vala"
+                                       _tmp379_ = (GeeHashMap*) _tmp378_;
+#line 772 "../src/contacts-contact-editor.vala"
+                                       _tmp380_ = gee_abstract_map_has_key ((GeeAbstractMap*) _tmp379_, 
prop_name);
+#line 772 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp379_);
+#line 772 "../src/contacts-contact-editor.vala"
+                                       if (_tmp380_) {
+#line 6726 "contacts-contact-editor.c"
+                                               {
+                                                       GeeIterator* _entry_it = NULL;
+                                                       GeeHashMap* _tmp381_;
+                                                       GeeSet* _tmp382_;
+                                                       GeeSet* _tmp383_;
+                                                       GeeSet* _tmp384_;
+                                                       GeeIterator* _tmp385_;
+                                                       GeeIterator* _tmp386_;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _tmp381_ = rows;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _tmp382_ = gee_abstract_map_get_entries 
((GeeAbstractMap*) _tmp381_);
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _tmp383_ = _tmp382_;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _tmp384_ = _tmp383_;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _tmp385_ = gee_iterable_iterator ((GeeIterable*) 
_tmp384_);
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _tmp386_ = _tmp385_;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_tmp384_);
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _entry_it = _tmp386_;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       while (TRUE) {
+#line 6753 "contacts-contact-editor.c"
+                                                               GeeIterator* _tmp387_;
+                                                               GeeMapEntry* entry = NULL;
+                                                               GeeIterator* _tmp388_;
+                                                               gpointer _tmp389_;
+                                                               GeeHashMap* _tmp390_;
+                                                               const gchar* _tmp391_;
+                                                               gpointer _tmp392_;
+                                                               GeeHashMap* _tmp393_;
+                                                               gpointer _tmp394_;
+                                                               ContactsContactEditorField* _tmp395_;
+                                                               GeeHashMap* _tmp396_;
+                                                               GeeMapEntry* _tmp397_;
+                                                               gconstpointer _tmp398_;
+                                                               gint _tmp399_;
+                                                               GeeMapEntry* _tmp400_;
+                                                               gconstpointer _tmp401_;
+                                                               ContactsContactEditorRowData* _tmp402_;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                               _tmp387_ = _entry_it;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                               if (!gee_iterator_next (_tmp387_)) {
+#line 773 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 6777 "contacts-contact-editor.c"
+                                                               }
+#line 773 "../src/contacts-contact-editor.vala"
+                                                               _tmp388_ = _entry_it;
+#line 773 "../src/contacts-contact-editor.vala"
+                                                               _tmp389_ = gee_iterator_get (_tmp388_);
+#line 773 "../src/contacts-contact-editor.vala"
+                                                               entry = (GeeMapEntry*) _tmp389_;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp390_ = self->priv->writable_personas;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp391_ = persona_uid;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp392_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp390_, _tmp391_);
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp393_ = (GeeHashMap*) _tmp392_;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp394_ = gee_abstract_map_get 
((GeeAbstractMap*) _tmp393_, prop_name);
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp395_ = (ContactsContactEditorField*) 
_tmp394_;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp396_ = (*_tmp395_).rows;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp397_ = entry;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp398_ = gee_map_entry_get_key (_tmp397_);
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp399_ = _tmp398_;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp400_ = entry;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp401_ = gee_map_entry_get_value (_tmp400_);
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _tmp402_ = _tmp401_;
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               gee_abstract_map_set ((GeeAbstractMap*) 
_tmp396_, (gpointer) ((gintptr) ((gint) ((gintptr) _tmp399_))), (ContactsContactEditorRowData*) _tmp402_);
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _contacts_contact_editor_field_free0 
(_tmp395_);
+#line 774 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (_tmp393_);
+#line 773 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (entry);
+#line 6819 "contacts-contact-editor.c"
+                                                       }
+#line 773 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (_entry_it);
+#line 6823 "contacts-contact-editor.c"
+                                               }
+                                       } else {
+                                               GeeHashMap* _tmp403_;
+                                               const gchar* _tmp404_;
+                                               gpointer _tmp405_;
+                                               GeeHashMap* _tmp406_;
+                                               GeeHashMap* _tmp407_;
+                                               ContactsContactEditorField _tmp408_ = {0};
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _tmp403_ = self->priv->writable_personas;
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _tmp404_ = persona_uid;
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _tmp405_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp403_, 
_tmp404_);
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _tmp406_ = (GeeHashMap*) _tmp405_;
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _tmp407_ = rows;
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _tmp408_.changed = FALSE;
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp408_.rows);
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _tmp408_.rows = _tmp407_;
+#line 777 "../src/contacts-contact-editor.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp406_, prop_name, 
&_tmp408_);
+#line 777 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp406_);
+#line 6852 "contacts-contact-editor.c"
+                                       }
+                               }
+#line 780 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (rows);
+#line 780 "../src/contacts-contact-editor.vala"
+                               break;
+#line 6859 "contacts-contact-editor.c"
+                       }
+               }
+       }
+#line 575 "../src/contacts-contact-editor.vala"
+       _g_free0 (persona_uid);
+#line 6865 "contacts-contact-editor.c"
+}
+
+static gint
+contacts_contact_editor_get_current_row (ContactsContactEditor* self,
+                                         GtkWidget* child)
+{
+       gint row = 0;
+       GtkGrid* _tmp0_;
+       gint _tmp1_ = 0;
+       gint result = 0;
+#line 784 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 784 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (child != NULL, 0);
+#line 787 "../src/contacts-contact-editor.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->container_grid;
+#line 787 "../src/contacts-contact-editor.vala"
+       gtk_container_child_get ((GtkContainer*) _tmp0_, child, "top-attach", &_tmp1_, NULL);
+#line 787 "../src/contacts-contact-editor.vala"
+       row = _tmp1_;
+#line 788 "../src/contacts-contact-editor.vala"
+       result = row;
+#line 788 "../src/contacts-contact-editor.vala"
+       return result;
+#line 6890 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_insert_row_at (ContactsContactEditor* self,
+                                       gint idx)
+{
+       GtkGrid* _tmp104_;
+#line 791 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 6900 "contacts-contact-editor.c"
+       {
+               GeeIterator* _field_maps_it = NULL;
+               GeeHashMap* _tmp0_;
+               GeeCollection* _tmp1_;
+               GeeCollection* _tmp2_;
+               GeeCollection* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 792 "../src/contacts-contact-editor.vala"
+               _tmp0_ = self->priv->writable_personas;
+#line 792 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_values ((GeeAbstractMap*) _tmp0_);
+#line 792 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 792 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 792 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 792 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 792 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 792 "../src/contacts-contact-editor.vala"
+               _field_maps_it = _tmp5_;
+#line 792 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 6927 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeHashMap* field_maps = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+#line 792 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _field_maps_it;
+#line 792 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 792 "../src/contacts-contact-editor.vala"
+                               break;
+#line 6938 "contacts-contact-editor.c"
+                       }
+#line 792 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _field_maps_it;
+#line 792 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 792 "../src/contacts-contact-editor.vala"
+                       field_maps = (GeeHashMap*) _tmp8_;
+#line 6946 "contacts-contact-editor.c"
+                       {
+                               GeeIterator* _field_it = NULL;
+                               GeeHashMap* _tmp9_;
+                               GeeCollection* _tmp10_;
+                               GeeCollection* _tmp11_;
+                               GeeCollection* _tmp12_;
+                               GeeIterator* _tmp13_;
+                               GeeIterator* _tmp14_;
+#line 793 "../src/contacts-contact-editor.vala"
+                               _tmp9_ = field_maps;
+#line 793 "../src/contacts-contact-editor.vala"
+                               _tmp10_ = gee_abstract_map_get_values ((GeeAbstractMap*) _tmp9_);
+#line 793 "../src/contacts-contact-editor.vala"
+                               _tmp11_ = _tmp10_;
+#line 793 "../src/contacts-contact-editor.vala"
+                               _tmp12_ = _tmp11_;
+#line 793 "../src/contacts-contact-editor.vala"
+                               _tmp13_ = gee_iterable_iterator ((GeeIterable*) _tmp12_);
+#line 793 "../src/contacts-contact-editor.vala"
+                               _tmp14_ = _tmp13_;
+#line 793 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_tmp12_);
+#line 793 "../src/contacts-contact-editor.vala"
+                               _field_it = _tmp14_;
+#line 793 "../src/contacts-contact-editor.vala"
+                               while (TRUE) {
+#line 6973 "contacts-contact-editor.c"
+                                       GeeIterator* _tmp15_;
+                                       ContactsContactEditorField* field = NULL;
+                                       GeeIterator* _tmp16_;
+                                       gpointer _tmp17_;
+#line 793 "../src/contacts-contact-editor.vala"
+                                       _tmp15_ = _field_it;
+#line 793 "../src/contacts-contact-editor.vala"
+                                       if (!gee_iterator_next (_tmp15_)) {
+#line 793 "../src/contacts-contact-editor.vala"
+                                               break;
+#line 6984 "contacts-contact-editor.c"
+                                       }
+#line 793 "../src/contacts-contact-editor.vala"
+                                       _tmp16_ = _field_it;
+#line 793 "../src/contacts-contact-editor.vala"
+                                       _tmp17_ = gee_iterator_get (_tmp16_);
+#line 793 "../src/contacts-contact-editor.vala"
+                                       field = (ContactsContactEditorField*) _tmp17_;
+#line 6992 "contacts-contact-editor.c"
+                                       {
+                                               GeeIterator* _row_it = NULL;
+                                               ContactsContactEditorField* _tmp18_;
+                                               GeeHashMap* _tmp19_;
+                                               GeeSet* _tmp20_;
+                                               GeeSet* _tmp21_;
+                                               GeeSet* _tmp22_;
+                                               GeeIterator* _tmp23_;
+                                               GeeIterator* _tmp24_;
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _tmp18_ = field;
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _tmp19_ = (*_tmp18_).rows;
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _tmp20_ = gee_abstract_map_get_keys ((GeeAbstractMap*) 
_tmp19_);
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _tmp21_ = _tmp20_;
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _tmp22_ = _tmp21_;
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _tmp23_ = gee_iterable_iterator ((GeeIterable*) _tmp22_);
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _tmp24_ = _tmp23_;
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp22_);
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _row_it = _tmp24_;
+#line 794 "../src/contacts-contact-editor.vala"
+                                               while (TRUE) {
+#line 7022 "contacts-contact-editor.c"
+                                                       GeeIterator* _tmp25_;
+                                                       gint row = 0;
+                                                       GeeIterator* _tmp26_;
+                                                       gpointer _tmp27_;
+#line 794 "../src/contacts-contact-editor.vala"
+                                                       _tmp25_ = _row_it;
+#line 794 "../src/contacts-contact-editor.vala"
+                                                       if (!gee_iterator_next (_tmp25_)) {
+#line 794 "../src/contacts-contact-editor.vala"
+                                                               break;
+#line 7033 "contacts-contact-editor.c"
+                                                       }
+#line 794 "../src/contacts-contact-editor.vala"
+                                                       _tmp26_ = _row_it;
+#line 794 "../src/contacts-contact-editor.vala"
+                                                       _tmp27_ = gee_iterator_get (_tmp26_);
+#line 794 "../src/contacts-contact-editor.vala"
+                                                       row = (gint) ((gintptr) _tmp27_);
+#line 795 "../src/contacts-contact-editor.vala"
+                                                       if (row >= idx) {
+#line 7043 "contacts-contact-editor.c"
+                                                               GeeHashMap* new_rows = NULL;
+                                                               GeeHashMap* _tmp28_;
+                                                               ContactsContactEditorField* _tmp44_;
+                                                               GeeHashMap* _tmp45_;
+                                                               GeeHashMap* _tmp46_;
+#line 796 "../src/contacts-contact-editor.vala"
+                                                               _tmp28_ = gee_hash_map_new (G_TYPE_INT, NULL, 
NULL, CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 796 "../src/contacts-contact-editor.vala"
+                                                               new_rows = _tmp28_;
+#line 7053 "contacts-contact-editor.c"
+                                                               {
+                                                                       GeeIterator* _old_row_it = NULL;
+                                                                       ContactsContactEditorField* _tmp29_;
+                                                                       GeeHashMap* _tmp30_;
+                                                                       GeeSet* _tmp31_;
+                                                                       GeeSet* _tmp32_;
+                                                                       GeeSet* _tmp33_;
+                                                                       GeeIterator* _tmp34_;
+                                                                       GeeIterator* _tmp35_;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _tmp29_ = field;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _tmp30_ = (*_tmp29_).rows;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _tmp31_ = gee_abstract_map_get_keys 
((GeeAbstractMap*) _tmp30_);
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _tmp32_ = _tmp31_;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _tmp33_ = _tmp32_;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _tmp34_ = gee_iterable_iterator 
((GeeIterable*) _tmp33_);
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _tmp35_ = _tmp34_;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _g_object_unref0 (_tmp33_);
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _old_row_it = _tmp35_;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       while (TRUE) {
+#line 7083 "contacts-contact-editor.c"
+                                                                               GeeIterator* _tmp36_;
+                                                                               gint old_row = 0;
+                                                                               GeeIterator* _tmp37_;
+                                                                               gpointer _tmp38_;
+                                                                               GeeHashMap* _tmp39_;
+                                                                               ContactsContactEditorField* 
_tmp40_;
+                                                                               GeeHashMap* _tmp41_;
+                                                                               gpointer _tmp42_;
+                                                                               ContactsContactEditorRowData* 
_tmp43_;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                               _tmp36_ = _old_row_it;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                               if (!gee_iterator_next 
(_tmp36_)) {
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                                       break;
+#line 7099 "contacts-contact-editor.c"
+                                                                               }
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                               _tmp37_ = _old_row_it;
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                               _tmp38_ = gee_iterator_get 
(_tmp37_);
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                               old_row = (gint) ((gintptr) 
_tmp38_);
+#line 799 "../src/contacts-contact-editor.vala"
+                                                                               _tmp39_ = new_rows;
+#line 799 "../src/contacts-contact-editor.vala"
+                                                                               _tmp40_ = field;
+#line 799 "../src/contacts-contact-editor.vala"
+                                                                               _tmp41_ = (*_tmp40_).rows;
+#line 799 "../src/contacts-contact-editor.vala"
+                                                                               _tmp42_ = 
gee_abstract_map_get ((GeeAbstractMap*) _tmp41_, (gpointer) ((gintptr) old_row));
+#line 799 "../src/contacts-contact-editor.vala"
+                                                                               _tmp43_ = 
(ContactsContactEditorRowData*) _tmp42_;
+#line 799 "../src/contacts-contact-editor.vala"
+                                                                               gee_abstract_map_set 
((GeeAbstractMap*) _tmp39_, (gpointer) ((gintptr) (old_row + 1)), _tmp43_);
+#line 799 "../src/contacts-contact-editor.vala"
+                                                                               
_contacts_contact_editor_row_data_free0 (_tmp43_);
+#line 7121 "contacts-contact-editor.c"
+                                                                       }
+#line 797 "../src/contacts-contact-editor.vala"
+                                                                       _g_object_unref0 (_old_row_it);
+#line 7125 "contacts-contact-editor.c"
+                                                               }
+#line 801 "../src/contacts-contact-editor.vala"
+                                                               _tmp44_ = field;
+#line 801 "../src/contacts-contact-editor.vala"
+                                                               _tmp45_ = new_rows;
+#line 801 "../src/contacts-contact-editor.vala"
+                                                               _tmp46_ = _g_object_ref0 (_tmp45_);
+#line 801 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 ((*_tmp44_).rows);
+#line 801 "../src/contacts-contact-editor.vala"
+                                                               (*_tmp44_).rows = _tmp46_;
+#line 802 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (new_rows);
+#line 802 "../src/contacts-contact-editor.vala"
+                                                               break;
+#line 7141 "contacts-contact-editor.c"
+                                                       }
+                                               }
+#line 794 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_row_it);
+#line 7146 "contacts-contact-editor.c"
+                                       }
+#line 793 "../src/contacts-contact-editor.vala"
+                                       _contacts_contact_editor_field_free0 (field);
+#line 7150 "contacts-contact-editor.c"
+                               }
+#line 793 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_field_it);
+#line 7154 "contacts-contact-editor.c"
+                       }
+#line 792 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (field_maps);
+#line 7158 "contacts-contact-editor.c"
+               }
+#line 792 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_field_maps_it);
+#line 7162 "contacts-contact-editor.c"
+       }
+       {
+               GeeIterator* _entry_it = NULL;
+               GeeHashMap* _tmp47_;
+               GeeSet* _tmp48_;
+               GeeSet* _tmp49_;
+               GeeSet* _tmp50_;
+               GeeIterator* _tmp51_;
+               GeeIterator* _tmp52_;
+#line 807 "../src/contacts-contact-editor.vala"
+               _tmp47_ = self->priv->writable_personas;
+#line 807 "../src/contacts-contact-editor.vala"
+               _tmp48_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp47_);
+#line 807 "../src/contacts-contact-editor.vala"
+               _tmp49_ = _tmp48_;
+#line 807 "../src/contacts-contact-editor.vala"
+               _tmp50_ = _tmp49_;
+#line 807 "../src/contacts-contact-editor.vala"
+               _tmp51_ = gee_iterable_iterator ((GeeIterable*) _tmp50_);
+#line 807 "../src/contacts-contact-editor.vala"
+               _tmp52_ = _tmp51_;
+#line 807 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp50_);
+#line 807 "../src/contacts-contact-editor.vala"
+               _entry_it = _tmp52_;
+#line 807 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 7190 "contacts-contact-editor.c"
+                       GeeIterator* _tmp53_;
+                       GeeMapEntry* entry = NULL;
+                       GeeIterator* _tmp54_;
+                       gpointer _tmp55_;
+#line 807 "../src/contacts-contact-editor.vala"
+                       _tmp53_ = _entry_it;
+#line 807 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp53_)) {
+#line 807 "../src/contacts-contact-editor.vala"
+                               break;
+#line 7201 "contacts-contact-editor.c"
+                       }
+#line 807 "../src/contacts-contact-editor.vala"
+                       _tmp54_ = _entry_it;
+#line 807 "../src/contacts-contact-editor.vala"
+                       _tmp55_ = gee_iterator_get (_tmp54_);
+#line 807 "../src/contacts-contact-editor.vala"
+                       entry = (GeeMapEntry*) _tmp55_;
+#line 7209 "contacts-contact-editor.c"
+                       {
+                               GeeIterator* _field_entry_it = NULL;
+                               GeeMapEntry* _tmp56_;
+                               gconstpointer _tmp57_;
+                               GeeHashMap* _tmp58_;
+                               GeeSet* _tmp59_;
+                               GeeSet* _tmp60_;
+                               GeeSet* _tmp61_;
+                               GeeIterator* _tmp62_;
+                               GeeIterator* _tmp63_;
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp56_ = entry;
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp57_ = gee_map_entry_get_value (_tmp56_);
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp58_ = _tmp57_;
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp59_ = gee_abstract_map_get_entries ((GeeAbstractMap*) ((GeeHashMap*) 
_tmp58_));
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp60_ = _tmp59_;
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp61_ = _tmp60_;
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp62_ = gee_iterable_iterator ((GeeIterable*) _tmp61_);
+#line 808 "../src/contacts-contact-editor.vala"
+                               _tmp63_ = _tmp62_;
+#line 808 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_tmp61_);
+#line 808 "../src/contacts-contact-editor.vala"
+                               _field_entry_it = _tmp63_;
+#line 808 "../src/contacts-contact-editor.vala"
+                               while (TRUE) {
+#line 7242 "contacts-contact-editor.c"
+                                       GeeIterator* _tmp64_;
+                                       GeeMapEntry* field_entry = NULL;
+                                       GeeIterator* _tmp65_;
+                                       gpointer _tmp66_;
+#line 808 "../src/contacts-contact-editor.vala"
+                                       _tmp64_ = _field_entry_it;
+#line 808 "../src/contacts-contact-editor.vala"
+                                       if (!gee_iterator_next (_tmp64_)) {
+#line 808 "../src/contacts-contact-editor.vala"
+                                               break;
+#line 7253 "contacts-contact-editor.c"
+                                       }
+#line 808 "../src/contacts-contact-editor.vala"
+                                       _tmp65_ = _field_entry_it;
+#line 808 "../src/contacts-contact-editor.vala"
+                                       _tmp66_ = gee_iterator_get (_tmp65_);
+#line 808 "../src/contacts-contact-editor.vala"
+                                       field_entry = (GeeMapEntry*) _tmp66_;
+#line 7261 "contacts-contact-editor.c"
+                                       {
+                                               GeeIterator* _row_it = NULL;
+                                               GeeMapEntry* _tmp67_;
+                                               gconstpointer _tmp68_;
+                                               ContactsContactEditorField* _tmp69_;
+                                               GeeHashMap* _tmp70_;
+                                               GeeSet* _tmp71_;
+                                               GeeSet* _tmp72_;
+                                               GeeSet* _tmp73_;
+                                               GeeIterator* _tmp74_;
+                                               GeeIterator* _tmp75_;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp67_ = field_entry;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp68_ = gee_map_entry_get_value (_tmp67_);
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp69_ = _tmp68_;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp70_ = (*((ContactsContactEditorField*) _tmp69_)).rows;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp71_ = gee_abstract_map_get_keys ((GeeAbstractMap*) 
_tmp70_);
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp72_ = _tmp71_;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp73_ = _tmp72_;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp74_ = gee_iterable_iterator ((GeeIterable*) _tmp73_);
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _tmp75_ = _tmp74_;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_tmp73_);
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _row_it = _tmp75_;
+#line 809 "../src/contacts-contact-editor.vala"
+                                               while (TRUE) {
+#line 7297 "contacts-contact-editor.c"
+                                                       GeeIterator* _tmp76_;
+                                                       gint row = 0;
+                                                       GeeIterator* _tmp77_;
+                                                       gpointer _tmp78_;
+#line 809 "../src/contacts-contact-editor.vala"
+                                                       _tmp76_ = _row_it;
+#line 809 "../src/contacts-contact-editor.vala"
+                                                       if (!gee_iterator_next (_tmp76_)) {
+#line 809 "../src/contacts-contact-editor.vala"
+                                                               break;
+#line 7308 "contacts-contact-editor.c"
+                                                       }
+#line 809 "../src/contacts-contact-editor.vala"
+                                                       _tmp77_ = _row_it;
+#line 809 "../src/contacts-contact-editor.vala"
+                                                       _tmp78_ = gee_iterator_get (_tmp77_);
+#line 809 "../src/contacts-contact-editor.vala"
+                                                       row = (gint) ((gintptr) _tmp78_);
+#line 810 "../src/contacts-contact-editor.vala"
+                                                       if (row >= idx) {
+#line 7318 "contacts-contact-editor.c"
+                                                               GeeHashMap* new_rows = NULL;
+                                                               GeeHashMap* _tmp79_;
+                                                               GeeMapEntry* _tmp99_;
+                                                               gconstpointer _tmp100_;
+                                                               ContactsContactEditorField* _tmp101_;
+                                                               GeeHashMap* _tmp102_;
+                                                               GeeHashMap* _tmp103_;
+#line 811 "../src/contacts-contact-editor.vala"
+                                                               _tmp79_ = gee_hash_map_new (G_TYPE_INT, NULL, 
NULL, CONTACTS_CONTACT_EDITOR_TYPE_ROW_DATA, (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, 
(GDestroyNotify) contacts_contact_editor_row_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 811 "../src/contacts-contact-editor.vala"
+                                                               new_rows = _tmp79_;
+#line 7330 "contacts-contact-editor.c"
+                                                               {
+                                                                       GeeIterator* _old_row_it = NULL;
+                                                                       GeeMapEntry* _tmp80_;
+                                                                       gconstpointer _tmp81_;
+                                                                       ContactsContactEditorField* _tmp82_;
+                                                                       GeeHashMap* _tmp83_;
+                                                                       GeeSet* _tmp84_;
+                                                                       GeeSet* _tmp85_;
+                                                                       GeeSet* _tmp86_;
+                                                                       GeeIterator* _tmp87_;
+                                                                       GeeIterator* _tmp88_;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp80_ = field_entry;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp81_ = gee_map_entry_get_value 
(_tmp80_);
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp82_ = _tmp81_;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp83_ = 
(*((ContactsContactEditorField*) _tmp82_)).rows;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp84_ = gee_abstract_map_get_keys 
((GeeAbstractMap*) _tmp83_);
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp85_ = _tmp84_;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp86_ = _tmp85_;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp87_ = gee_iterable_iterator 
((GeeIterable*) _tmp86_);
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _tmp88_ = _tmp87_;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _g_object_unref0 (_tmp86_);
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _old_row_it = _tmp88_;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       while (TRUE) {
+#line 7366 "contacts-contact-editor.c"
+                                                                               GeeIterator* _tmp89_;
+                                                                               gint old_row = 0;
+                                                                               GeeIterator* _tmp90_;
+                                                                               gpointer _tmp91_;
+                                                                               GeeHashMap* _tmp92_;
+                                                                               GeeMapEntry* _tmp93_;
+                                                                               gconstpointer _tmp94_;
+                                                                               ContactsContactEditorField* 
_tmp95_;
+                                                                               GeeHashMap* _tmp96_;
+                                                                               gpointer _tmp97_;
+                                                                               ContactsContactEditorRowData* 
_tmp98_;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                               _tmp89_ = _old_row_it;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                               if (!gee_iterator_next 
(_tmp89_)) {
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                                       break;
+#line 7384 "contacts-contact-editor.c"
+                                                                               }
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                               _tmp90_ = _old_row_it;
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                               _tmp91_ = gee_iterator_get 
(_tmp90_);
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                               old_row = (gint) ((gintptr) 
_tmp91_);
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               _tmp92_ = new_rows;
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               _tmp93_ = field_entry;
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               _tmp94_ = 
gee_map_entry_get_value (_tmp93_);
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               _tmp95_ = _tmp94_;
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               _tmp96_ = 
(*((ContactsContactEditorField*) _tmp95_)).rows;
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               _tmp97_ = 
gee_abstract_map_get ((GeeAbstractMap*) _tmp96_, (gpointer) ((gintptr) old_row));
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               _tmp98_ = 
(ContactsContactEditorRowData*) _tmp97_;
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               gee_abstract_map_set 
((GeeAbstractMap*) _tmp92_, (gpointer) ((gintptr) (old_row + 1)), _tmp98_);
+#line 813 "../src/contacts-contact-editor.vala"
+                                                                               
_contacts_contact_editor_row_data_free0 (_tmp98_);
+#line 7410 "contacts-contact-editor.c"
+                                                                       }
+#line 812 "../src/contacts-contact-editor.vala"
+                                                                       _g_object_unref0 (_old_row_it);
+#line 7414 "contacts-contact-editor.c"
+                                                               }
+#line 815 "../src/contacts-contact-editor.vala"
+                                                               _tmp99_ = field_entry;
+#line 815 "../src/contacts-contact-editor.vala"
+                                                               _tmp100_ = gee_map_entry_get_value (_tmp99_);
+#line 815 "../src/contacts-contact-editor.vala"
+                                                               _tmp101_ = _tmp100_;
+#line 815 "../src/contacts-contact-editor.vala"
+                                                               _tmp102_ = new_rows;
+#line 815 "../src/contacts-contact-editor.vala"
+                                                               _tmp103_ = _g_object_ref0 (_tmp102_);
+#line 815 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 
((*((ContactsContactEditorField*) _tmp101_)).rows);
+#line 815 "../src/contacts-contact-editor.vala"
+                                                               (*((ContactsContactEditorField*) 
_tmp101_)).rows = _tmp103_;
+#line 816 "../src/contacts-contact-editor.vala"
+                                                               _g_object_unref0 (new_rows);
+#line 816 "../src/contacts-contact-editor.vala"
+                                                               break;
+#line 7434 "contacts-contact-editor.c"
+                                                       }
+                                               }
+#line 809 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (_row_it);
+#line 7439 "contacts-contact-editor.c"
+                                       }
+#line 808 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (field_entry);
+#line 7443 "contacts-contact-editor.c"
+                               }
+#line 808 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_field_entry_it);
+#line 7447 "contacts-contact-editor.c"
+                       }
+#line 807 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (entry);
+#line 7451 "contacts-contact-editor.c"
+               }
+#line 807 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_entry_it);
+#line 7455 "contacts-contact-editor.c"
+       }
+#line 821 "../src/contacts-contact-editor.vala"
+       _tmp104_ = ((ContactsContactForm*) self)->container_grid;
+#line 821 "../src/contacts-contact-editor.vala"
+       gtk_grid_insert_row (_tmp104_, idx);
+#line 7461 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_on_container_grid_size_allocate (ContactsContactEditor* self,
+                                                         GtkAllocation* alloc)
+{
+       gboolean _tmp0_ = FALSE;
+       GtkWidget* _tmp1_;
+#line 824 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 824 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (alloc != NULL);
+#line 825 "../src/contacts-contact-editor.vala"
+       _tmp1_ = self->priv->focus_widget;
+#line 825 "../src/contacts-contact-editor.vala"
+       if (_tmp1_ != NULL) {
+#line 7478 "contacts-contact-editor.c"
+               GtkWidget* _tmp2_;
+#line 825 "../src/contacts-contact-editor.vala"
+               _tmp2_ = self->priv->focus_widget;
+#line 825 "../src/contacts-contact-editor.vala"
+               _tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, gtk_widget_get_type ());
+#line 7484 "contacts-contact-editor.c"
+       } else {
+#line 825 "../src/contacts-contact-editor.vala"
+               _tmp0_ = FALSE;
+#line 7488 "contacts-contact-editor.c"
+       }
+#line 825 "../src/contacts-contact-editor.vala"
+       if (_tmp0_) {
+#line 7492 "contacts-contact-editor.c"
+               GtkWidget* _tmp3_;
+#line 826 "../src/contacts-contact-editor.vala"
+               _tmp3_ = self->priv->focus_widget;
+#line 826 "../src/contacts-contact-editor.vala"
+               gtk_widget_grab_focus (_tmp3_);
+#line 827 "../src/contacts-contact-editor.vala"
+               self->priv->focus_widget = NULL;
+#line 7500 "contacts-contact-editor.c"
+       }
+}
+
+GeeHashMap*
+contacts_contact_editor_properties_changed (ContactsContactEditor* self)
+{
+       GeeHashMap* props_set = NULL;
+       GeeHashMap* _tmp0_;
+       GeeHashMap* result = NULL;
+#line 831 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 832 "../src/contacts-contact-editor.vala"
+       _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, 
CONTACTS_CONTACT_EDITOR_TYPE_PROPERTY_DATA, (GBoxedCopyFunc) contacts_contact_editor_property_data_dup, 
(GDestroyNotify) contacts_contact_editor_property_data_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL);
+#line 832 "../src/contacts-contact-editor.vala"
+       props_set = _tmp0_;
+#line 7516 "contacts-contact-editor.c"
+       {
+               GeeIterator* _entry_it = NULL;
+               GeeHashMap* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeSet* _tmp4_;
+               GeeIterator* _tmp5_;
+               GeeIterator* _tmp6_;
+#line 834 "../src/contacts-contact-editor.vala"
+               _tmp1_ = self->priv->writable_personas;
+#line 834 "../src/contacts-contact-editor.vala"
+               _tmp2_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _tmp1_);
+#line 834 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 834 "../src/contacts-contact-editor.vala"
+               _tmp4_ = _tmp3_;
+#line 834 "../src/contacts-contact-editor.vala"
+               _tmp5_ = gee_iterable_iterator ((GeeIterable*) _tmp4_);
+#line 834 "../src/contacts-contact-editor.vala"
+               _tmp6_ = _tmp5_;
+#line 834 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp4_);
+#line 834 "../src/contacts-contact-editor.vala"
+               _entry_it = _tmp6_;
+#line 834 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 7543 "contacts-contact-editor.c"
+                       GeeIterator* _tmp7_;
+                       GeeMapEntry* entry = NULL;
+                       GeeIterator* _tmp8_;
+                       gpointer _tmp9_;
+#line 834 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _entry_it;
+#line 834 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp7_)) {
+#line 834 "../src/contacts-contact-editor.vala"
+                               break;
+#line 7554 "contacts-contact-editor.c"
+                       }
+#line 834 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = _entry_it;
+#line 834 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = gee_iterator_get (_tmp8_);
+#line 834 "../src/contacts-contact-editor.vala"
+                       entry = (GeeMapEntry*) _tmp9_;
+#line 7562 "contacts-contact-editor.c"
+                       {
+                               GeeIterator* _field_entry_it = NULL;
+                               GeeMapEntry* _tmp10_;
+                               gconstpointer _tmp11_;
+                               GeeHashMap* _tmp12_;
+                               GeeSet* _tmp13_;
+                               GeeSet* _tmp14_;
+                               GeeSet* _tmp15_;
+                               GeeIterator* _tmp16_;
+                               GeeIterator* _tmp17_;
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp10_ = entry;
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp11_ = gee_map_entry_get_value (_tmp10_);
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp12_ = _tmp11_;
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp13_ = gee_abstract_map_get_entries ((GeeAbstractMap*) ((GeeHashMap*) 
_tmp12_));
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp14_ = _tmp13_;
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp15_ = _tmp14_;
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp16_ = gee_iterable_iterator ((GeeIterable*) _tmp15_);
+#line 835 "../src/contacts-contact-editor.vala"
+                               _tmp17_ = _tmp16_;
+#line 835 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_tmp15_);
+#line 835 "../src/contacts-contact-editor.vala"
+                               _field_entry_it = _tmp17_;
+#line 835 "../src/contacts-contact-editor.vala"
+                               while (TRUE) {
+#line 7595 "contacts-contact-editor.c"
+                                       GeeIterator* _tmp18_;
+                                       GeeMapEntry* field_entry = NULL;
+                                       GeeIterator* _tmp19_;
+                                       gpointer _tmp20_;
+                                       gboolean _tmp21_ = FALSE;
+                                       GeeMapEntry* _tmp22_;
+                                       gconstpointer _tmp23_;
+                                       ContactsContactEditorField* _tmp24_;
+#line 835 "../src/contacts-contact-editor.vala"
+                                       _tmp18_ = _field_entry_it;
+#line 835 "../src/contacts-contact-editor.vala"
+                                       if (!gee_iterator_next (_tmp18_)) {
+#line 835 "../src/contacts-contact-editor.vala"
+                                               break;
+#line 7610 "contacts-contact-editor.c"
+                                       }
+#line 835 "../src/contacts-contact-editor.vala"
+                                       _tmp19_ = _field_entry_it;
+#line 835 "../src/contacts-contact-editor.vala"
+                                       _tmp20_ = gee_iterator_get (_tmp19_);
+#line 835 "../src/contacts-contact-editor.vala"
+                                       field_entry = (GeeMapEntry*) _tmp20_;
+#line 836 "../src/contacts-contact-editor.vala"
+                                       _tmp22_ = field_entry;
+#line 836 "../src/contacts-contact-editor.vala"
+                                       _tmp23_ = gee_map_entry_get_value (_tmp22_);
+#line 836 "../src/contacts-contact-editor.vala"
+                                       _tmp24_ = _tmp23_;
+#line 836 "../src/contacts-contact-editor.vala"
+                                       if ((*((ContactsContactEditorField*) _tmp24_)).changed) {
+#line 7626 "contacts-contact-editor.c"
+                                               GeeHashMap* _tmp25_;
+                                               GeeMapEntry* _tmp26_;
+                                               gconstpointer _tmp27_;
+                                               const gchar* _tmp28_;
+#line 836 "../src/contacts-contact-editor.vala"
+                                               _tmp25_ = props_set;
+#line 836 "../src/contacts-contact-editor.vala"
+                                               _tmp26_ = field_entry;
+#line 836 "../src/contacts-contact-editor.vala"
+                                               _tmp27_ = gee_map_entry_get_key (_tmp26_);
+#line 836 "../src/contacts-contact-editor.vala"
+                                               _tmp28_ = _tmp27_;
+#line 836 "../src/contacts-contact-editor.vala"
+                                               _tmp21_ = !gee_abstract_map_has_key ((GeeAbstractMap*) 
_tmp25_, (const gchar*) _tmp28_);
+#line 7641 "contacts-contact-editor.c"
+                                       } else {
+#line 836 "../src/contacts-contact-editor.vala"
+                                               _tmp21_ = FALSE;
+#line 7645 "contacts-contact-editor.c"
+                                       }
+#line 836 "../src/contacts-contact-editor.vala"
+                                       if (_tmp21_) {
+#line 7649 "contacts-contact-editor.c"
+                                               ContactsContactEditorPropertyData p = {0};
+                                               FolksIndividual* _tmp29_;
+                                               GeeMapEntry* _tmp35_;
+                                               gconstpointer _tmp36_;
+                                               const gchar* _tmp37_;
+                                               const gchar* _tmp38_;
+                                               GQuark _tmp40_ = 0U;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               static GQuark _tmp39_label0 = 0;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               static GQuark _tmp39_label1 = 0;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               static GQuark _tmp39_label2 = 0;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               static GQuark _tmp39_label3 = 0;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               static GQuark _tmp39_label4 = 0;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               static GQuark _tmp39_label5 = 0;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               static GQuark _tmp39_label6 = 0;
+#line 7671 "contacts-contact-editor.c"
+                                               GeeHashMap* _tmp76_;
+                                               GeeMapEntry* _tmp77_;
+                                               gconstpointer _tmp78_;
+                                               const gchar* _tmp79_;
+                                               ContactsContactEditorPropertyData _tmp80_;
+#line 837 "../src/contacts-contact-editor.vala"
+                                               memset (&p, 0, sizeof (ContactsContactEditorPropertyData));
+#line 838 "../src/contacts-contact-editor.vala"
+                                               _g_object_unref0 (p.persona);
+#line 838 "../src/contacts-contact-editor.vala"
+                                               p.persona = NULL;
+#line 839 "../src/contacts-contact-editor.vala"
+                                               _tmp29_ = ((ContactsContactForm*) self)->individual;
+#line 839 "../src/contacts-contact-editor.vala"
+                                               if (_tmp29_ != NULL) {
+#line 7687 "contacts-contact-editor.c"
+                                                       FolksIndividual* _tmp30_;
+                                                       GeeMapEntry* _tmp31_;
+                                                       gconstpointer _tmp32_;
+                                                       const gchar* _tmp33_;
+                                                       FolksPersona* _tmp34_;
+#line 840 "../src/contacts-contact-editor.vala"
+                                                       _tmp30_ = ((ContactsContactForm*) self)->individual;
+#line 840 "../src/contacts-contact-editor.vala"
+                                                       _tmp31_ = entry;
+#line 840 "../src/contacts-contact-editor.vala"
+                                                       _tmp32_ = gee_map_entry_get_key (_tmp31_);
+#line 840 "../src/contacts-contact-editor.vala"
+                                                       _tmp33_ = _tmp32_;
+#line 840 "../src/contacts-contact-editor.vala"
+                                                       _tmp34_ = contacts_utils_find_persona_from_uid 
(_tmp30_, (const gchar*) _tmp33_);
+#line 840 "../src/contacts-contact-editor.vala"
+                                                       _g_object_unref0 (p.persona);
+#line 840 "../src/contacts-contact-editor.vala"
+                                                       p.persona = _tmp34_;
+#line 7707 "contacts-contact-editor.c"
+                                               }
+#line 843 "../src/contacts-contact-editor.vala"
+                                               _tmp35_ = field_entry;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               _tmp36_ = gee_map_entry_get_key (_tmp35_);
+#line 843 "../src/contacts-contact-editor.vala"
+                                               _tmp37_ = _tmp36_;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               _tmp38_ = (const gchar*) _tmp37_;
+#line 843 "../src/contacts-contact-editor.vala"
+                                               _tmp40_ = (NULL == _tmp38_) ? 0 : g_quark_from_string 
(_tmp38_);
+#line 843 "../src/contacts-contact-editor.vala"
+                                               if (_tmp40_ == ((0 != _tmp39_label0) ? _tmp39_label0 : 
(_tmp39_label0 = g_quark_from_static_string ("email-addresses")))) {
+#line 843 "../src/contacts-contact-editor.vala"
+                                                       switch (0) {
+#line 7723 "contacts-contact-editor.c"
+                                                               default:
+                                                               {
+                                                                       GeeMapEntry* _tmp41_;
+                                                                       gconstpointer _tmp42_;
+                                                                       ContactsContactEditorField* _tmp43_;
+                                                                       GeeHashMap* _tmp44_;
+                                                                       GValue _tmp45_ = {0};
+#line 845 "../src/contacts-contact-editor.vala"
+                                                                       _tmp41_ = field_entry;
+#line 845 "../src/contacts-contact-editor.vala"
+                                                                       _tmp42_ = gee_map_entry_get_value 
(_tmp41_);
+#line 845 "../src/contacts-contact-editor.vala"
+                                                                       _tmp43_ = _tmp42_;
+#line 845 "../src/contacts-contact-editor.vala"
+                                                                       _tmp44_ = 
(*((ContactsContactEditorField*) _tmp43_)).rows;
+#line 845 "../src/contacts-contact-editor.vala"
+                                                                       
contacts_contact_editor_get_value_from_emails (self, _tmp44_, &_tmp45_);
+#line 845 "../src/contacts-contact-editor.vala"
+                                                                       G_IS_VALUE (&p.value) ? 
(g_value_unset (&p.value), NULL) : NULL;
+#line 845 "../src/contacts-contact-editor.vala"
+                                                                       p.value = _tmp45_;
+#line 846 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 7747 "contacts-contact-editor.c"
+                                                               }
+                                                       }
+                                               } else if (_tmp40_ == ((0 != _tmp39_label1) ? _tmp39_label1 : 
(_tmp39_label1 = g_quark_from_static_string ("phone-numbers")))) {
+#line 843 "../src/contacts-contact-editor.vala"
+                                                       switch (0) {
+#line 7753 "contacts-contact-editor.c"
+                                                               default:
+                                                               {
+                                                                       GeeMapEntry* _tmp46_;
+                                                                       gconstpointer _tmp47_;
+                                                                       ContactsContactEditorField* _tmp48_;
+                                                                       GeeHashMap* _tmp49_;
+                                                                       GValue _tmp50_ = {0};
+#line 848 "../src/contacts-contact-editor.vala"
+                                                                       _tmp46_ = field_entry;
+#line 848 "../src/contacts-contact-editor.vala"
+                                                                       _tmp47_ = gee_map_entry_get_value 
(_tmp46_);
+#line 848 "../src/contacts-contact-editor.vala"
+                                                                       _tmp48_ = _tmp47_;
+#line 848 "../src/contacts-contact-editor.vala"
+                                                                       _tmp49_ = 
(*((ContactsContactEditorField*) _tmp48_)).rows;
+#line 848 "../src/contacts-contact-editor.vala"
+                                                                       
contacts_contact_editor_get_value_from_phones (self, _tmp49_, &_tmp50_);
+#line 848 "../src/contacts-contact-editor.vala"
+                                                                       G_IS_VALUE (&p.value) ? 
(g_value_unset (&p.value), NULL) : NULL;
+#line 848 "../src/contacts-contact-editor.vala"
+                                                                       p.value = _tmp50_;
+#line 849 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 7777 "contacts-contact-editor.c"
+                                                               }
+                                                       }
+                                               } else if (_tmp40_ == ((0 != _tmp39_label2) ? _tmp39_label2 : 
(_tmp39_label2 = g_quark_from_static_string ("urls")))) {
+#line 843 "../src/contacts-contact-editor.vala"
+                                                       switch (0) {
+#line 7783 "contacts-contact-editor.c"
+                                                               default:
+                                                               {
+                                                                       GeeMapEntry* _tmp51_;
+                                                                       gconstpointer _tmp52_;
+                                                                       ContactsContactEditorField* _tmp53_;
+                                                                       GeeHashMap* _tmp54_;
+                                                                       GValue _tmp55_ = {0};
+#line 851 "../src/contacts-contact-editor.vala"
+                                                                       _tmp51_ = field_entry;
+#line 851 "../src/contacts-contact-editor.vala"
+                                                                       _tmp52_ = gee_map_entry_get_value 
(_tmp51_);
+#line 851 "../src/contacts-contact-editor.vala"
+                                                                       _tmp53_ = _tmp52_;
+#line 851 "../src/contacts-contact-editor.vala"
+                                                                       _tmp54_ = 
(*((ContactsContactEditorField*) _tmp53_)).rows;
+#line 851 "../src/contacts-contact-editor.vala"
+                                                                       
contacts_contact_editor_get_value_from_urls (self, _tmp54_, &_tmp55_);
+#line 851 "../src/contacts-contact-editor.vala"
+                                                                       G_IS_VALUE (&p.value) ? 
(g_value_unset (&p.value), NULL) : NULL;
+#line 851 "../src/contacts-contact-editor.vala"
+                                                                       p.value = _tmp55_;
+#line 852 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 7807 "contacts-contact-editor.c"
+                                                               }
+                                                       }
+                                               } else if (_tmp40_ == ((0 != _tmp39_label3) ? _tmp39_label3 : 
(_tmp39_label3 = g_quark_from_static_string ("nickname")))) {
+#line 843 "../src/contacts-contact-editor.vala"
+                                                       switch (0) {
+#line 7813 "contacts-contact-editor.c"
+                                                               default:
+                                                               {
+                                                                       GeeMapEntry* _tmp56_;
+                                                                       gconstpointer _tmp57_;
+                                                                       ContactsContactEditorField* _tmp58_;
+                                                                       GeeHashMap* _tmp59_;
+                                                                       GValue _tmp60_ = {0};
+#line 854 "../src/contacts-contact-editor.vala"
+                                                                       _tmp56_ = field_entry;
+#line 854 "../src/contacts-contact-editor.vala"
+                                                                       _tmp57_ = gee_map_entry_get_value 
(_tmp56_);
+#line 854 "../src/contacts-contact-editor.vala"
+                                                                       _tmp58_ = _tmp57_;
+#line 854 "../src/contacts-contact-editor.vala"
+                                                                       _tmp59_ = 
(*((ContactsContactEditorField*) _tmp58_)).rows;
+#line 854 "../src/contacts-contact-editor.vala"
+                                                                       
contacts_contact_editor_get_value_from_nickname (self, _tmp59_, &_tmp60_);
+#line 854 "../src/contacts-contact-editor.vala"
+                                                                       G_IS_VALUE (&p.value) ? 
(g_value_unset (&p.value), NULL) : NULL;
+#line 854 "../src/contacts-contact-editor.vala"
+                                                                       p.value = _tmp60_;
+#line 855 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 7837 "contacts-contact-editor.c"
+                                                               }
+                                                       }
+                                               } else if (_tmp40_ == ((0 != _tmp39_label4) ? _tmp39_label4 : 
(_tmp39_label4 = g_quark_from_static_string ("birthday")))) {
+#line 843 "../src/contacts-contact-editor.vala"
+                                                       switch (0) {
+#line 7843 "contacts-contact-editor.c"
+                                                               default:
+                                                               {
+                                                                       GeeMapEntry* _tmp61_;
+                                                                       gconstpointer _tmp62_;
+                                                                       ContactsContactEditorField* _tmp63_;
+                                                                       GeeHashMap* _tmp64_;
+                                                                       GValue _tmp65_ = {0};
+#line 857 "../src/contacts-contact-editor.vala"
+                                                                       _tmp61_ = field_entry;
+#line 857 "../src/contacts-contact-editor.vala"
+                                                                       _tmp62_ = gee_map_entry_get_value 
(_tmp61_);
+#line 857 "../src/contacts-contact-editor.vala"
+                                                                       _tmp63_ = _tmp62_;
+#line 857 "../src/contacts-contact-editor.vala"
+                                                                       _tmp64_ = 
(*((ContactsContactEditorField*) _tmp63_)).rows;
+#line 857 "../src/contacts-contact-editor.vala"
+                                                                       
contacts_contact_editor_get_value_from_birthday (self, _tmp64_, &_tmp65_);
+#line 857 "../src/contacts-contact-editor.vala"
+                                                                       G_IS_VALUE (&p.value) ? 
(g_value_unset (&p.value), NULL) : NULL;
+#line 857 "../src/contacts-contact-editor.vala"
+                                                                       p.value = _tmp65_;
+#line 858 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 7867 "contacts-contact-editor.c"
+                                                               }
+                                                       }
+                                               } else if (_tmp40_ == ((0 != _tmp39_label5) ? _tmp39_label5 : 
(_tmp39_label5 = g_quark_from_static_string ("notes")))) {
+#line 843 "../src/contacts-contact-editor.vala"
+                                                       switch (0) {
+#line 7873 "contacts-contact-editor.c"
+                                                               default:
+                                                               {
+                                                                       GeeMapEntry* _tmp66_;
+                                                                       gconstpointer _tmp67_;
+                                                                       ContactsContactEditorField* _tmp68_;
+                                                                       GeeHashMap* _tmp69_;
+                                                                       GValue _tmp70_ = {0};
+#line 860 "../src/contacts-contact-editor.vala"
+                                                                       _tmp66_ = field_entry;
+#line 860 "../src/contacts-contact-editor.vala"
+                                                                       _tmp67_ = gee_map_entry_get_value 
(_tmp66_);
+#line 860 "../src/contacts-contact-editor.vala"
+                                                                       _tmp68_ = _tmp67_;
+#line 860 "../src/contacts-contact-editor.vala"
+                                                                       _tmp69_ = 
(*((ContactsContactEditorField*) _tmp68_)).rows;
+#line 860 "../src/contacts-contact-editor.vala"
+                                                                       
contacts_contact_editor_get_value_from_notes (self, _tmp69_, &_tmp70_);
+#line 860 "../src/contacts-contact-editor.vala"
+                                                                       G_IS_VALUE (&p.value) ? 
(g_value_unset (&p.value), NULL) : NULL;
+#line 860 "../src/contacts-contact-editor.vala"
+                                                                       p.value = _tmp70_;
+#line 861 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 7897 "contacts-contact-editor.c"
+                                                               }
+                                                       }
+                                               } else if (_tmp40_ == ((0 != _tmp39_label6) ? _tmp39_label6 : 
(_tmp39_label6 = g_quark_from_static_string ("postal-addresses")))) {
+#line 843 "../src/contacts-contact-editor.vala"
+                                                       switch (0) {
+#line 7903 "contacts-contact-editor.c"
+                                                               default:
+                                                               {
+                                                                       GeeMapEntry* _tmp71_;
+                                                                       gconstpointer _tmp72_;
+                                                                       ContactsContactEditorField* _tmp73_;
+                                                                       GeeHashMap* _tmp74_;
+                                                                       GValue _tmp75_ = {0};
+#line 863 "../src/contacts-contact-editor.vala"
+                                                                       _tmp71_ = field_entry;
+#line 863 "../src/contacts-contact-editor.vala"
+                                                                       _tmp72_ = gee_map_entry_get_value 
(_tmp71_);
+#line 863 "../src/contacts-contact-editor.vala"
+                                                                       _tmp73_ = _tmp72_;
+#line 863 "../src/contacts-contact-editor.vala"
+                                                                       _tmp74_ = 
(*((ContactsContactEditorField*) _tmp73_)).rows;
+#line 863 "../src/contacts-contact-editor.vala"
+                                                                       
contacts_contact_editor_get_value_from_addresses (self, _tmp74_, &_tmp75_);
+#line 863 "../src/contacts-contact-editor.vala"
+                                                                       G_IS_VALUE (&p.value) ? 
(g_value_unset (&p.value), NULL) : NULL;
+#line 863 "../src/contacts-contact-editor.vala"
+                                                                       p.value = _tmp75_;
+#line 864 "../src/contacts-contact-editor.vala"
+                                                                       break;
+#line 7927 "contacts-contact-editor.c"
+                                                               }
+                                                       }
+                                               }
+#line 867 "../src/contacts-contact-editor.vala"
+                                               _tmp76_ = props_set;
+#line 867 "../src/contacts-contact-editor.vala"
+                                               _tmp77_ = field_entry;
+#line 867 "../src/contacts-contact-editor.vala"
+                                               _tmp78_ = gee_map_entry_get_key (_tmp77_);
+#line 867 "../src/contacts-contact-editor.vala"
+                                               _tmp79_ = _tmp78_;
+#line 867 "../src/contacts-contact-editor.vala"
+                                               _tmp80_ = p;
+#line 867 "../src/contacts-contact-editor.vala"
+                                               gee_abstract_map_set ((GeeAbstractMap*) _tmp76_, (const 
gchar*) _tmp79_, &_tmp80_);
+#line 836 "../src/contacts-contact-editor.vala"
+                                               contacts_contact_editor_property_data_destroy (&p);
+#line 7945 "contacts-contact-editor.c"
+                                       }
+#line 835 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (field_entry);
+#line 7949 "contacts-contact-editor.c"
+                               }
+#line 835 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (_field_entry_it);
+#line 7953 "contacts-contact-editor.c"
+                       }
+#line 834 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (entry);
+#line 7957 "contacts-contact-editor.c"
+               }
+#line 834 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_entry_it);
+#line 7961 "contacts-contact-editor.c"
+       }
+#line 872 "../src/contacts-contact-editor.vala"
+       result = props_set;
+#line 872 "../src/contacts-contact-editor.vala"
+       return result;
+#line 7967 "contacts-contact-editor.c"
+}
+
+void
+contacts_contact_editor_add_new_row_for_property (ContactsContactEditor* self,
+                                                  FolksPersona* persona,
+                                                  const gchar* prop_name,
+                                                  const gchar* type)
+{
+       gint next_idx = 0;
+       gint _tmp23_ = 0;
+       gint _tmp24_;
+       GtkGrid* _tmp25_;
+#line 875 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 875 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (prop_name != NULL);
+#line 876 "../src/contacts-contact-editor.vala"
+       next_idx = 0;
+#line 7986 "contacts-contact-editor.c"
+       {
+               GeeIterator* _fields_it = NULL;
+               GeeHashMap* _tmp0_;
+               GeeCollection* _tmp1_;
+               GeeCollection* _tmp2_;
+               GeeCollection* _tmp3_;
+               GeeIterator* _tmp4_;
+               GeeIterator* _tmp5_;
+#line 877 "../src/contacts-contact-editor.vala"
+               _tmp0_ = self->priv->writable_personas;
+#line 877 "../src/contacts-contact-editor.vala"
+               _tmp1_ = gee_abstract_map_get_values ((GeeAbstractMap*) _tmp0_);
+#line 877 "../src/contacts-contact-editor.vala"
+               _tmp2_ = _tmp1_;
+#line 877 "../src/contacts-contact-editor.vala"
+               _tmp3_ = _tmp2_;
+#line 877 "../src/contacts-contact-editor.vala"
+               _tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
+#line 877 "../src/contacts-contact-editor.vala"
+               _tmp5_ = _tmp4_;
+#line 877 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp3_);
+#line 877 "../src/contacts-contact-editor.vala"
+               _fields_it = _tmp5_;
+#line 877 "../src/contacts-contact-editor.vala"
+               while (TRUE) {
+#line 8013 "contacts-contact-editor.c"
+                       GeeIterator* _tmp6_;
+                       GeeHashMap* fields = NULL;
+                       GeeIterator* _tmp7_;
+                       gpointer _tmp8_;
+                       GeeHashMap* _tmp9_;
+#line 877 "../src/contacts-contact-editor.vala"
+                       _tmp6_ = _fields_it;
+#line 877 "../src/contacts-contact-editor.vala"
+                       if (!gee_iterator_next (_tmp6_)) {
+#line 877 "../src/contacts-contact-editor.vala"
+                               break;
+#line 8025 "contacts-contact-editor.c"
+                       }
+#line 877 "../src/contacts-contact-editor.vala"
+                       _tmp7_ = _fields_it;
+#line 877 "../src/contacts-contact-editor.vala"
+                       _tmp8_ = gee_iterator_get (_tmp7_);
+#line 877 "../src/contacts-contact-editor.vala"
+                       fields = (GeeHashMap*) _tmp8_;
+#line 878 "../src/contacts-contact-editor.vala"
+                       _tmp9_ = fields;
+#line 878 "../src/contacts-contact-editor.vala"
+                       if (gee_abstract_map_has_key ((GeeAbstractMap*) _tmp9_, prop_name)) {
+#line 8037 "contacts-contact-editor.c"
+                               {
+                                       GeeIterator* _idx_it = NULL;
+                                       GeeHashMap* _tmp10_;
+                                       gpointer _tmp11_;
+                                       ContactsContactEditorField* _tmp12_;
+                                       GeeHashMap* _tmp13_;
+                                       GeeSet* _tmp14_;
+                                       GeeSet* _tmp15_;
+                                       GeeSet* _tmp16_;
+                                       GeeIterator* _tmp17_;
+                                       GeeIterator* _tmp18_;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp10_ = fields;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp11_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp10_, prop_name);
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp12_ = (ContactsContactEditorField*) _tmp11_;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp13_ = (*_tmp12_).rows;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp14_ = gee_abstract_map_get_keys ((GeeAbstractMap*) _tmp13_);
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp15_ = _tmp14_;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp16_ = _tmp15_;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp17_ = gee_iterable_iterator ((GeeIterable*) _tmp16_);
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _tmp18_ = _tmp17_;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_tmp16_);
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _contacts_contact_editor_field_free0 (_tmp12_);
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _idx_it = _tmp18_;
+#line 879 "../src/contacts-contact-editor.vala"
+                                       while (TRUE) {
+#line 8075 "contacts-contact-editor.c"
+                                               GeeIterator* _tmp19_;
+                                               gint idx = 0;
+                                               GeeIterator* _tmp20_;
+                                               gpointer _tmp21_;
+#line 879 "../src/contacts-contact-editor.vala"
+                                               _tmp19_ = _idx_it;
+#line 879 "../src/contacts-contact-editor.vala"
+                                               if (!gee_iterator_next (_tmp19_)) {
+#line 879 "../src/contacts-contact-editor.vala"
+                                                       break;
+#line 8086 "contacts-contact-editor.c"
+                                               }
+#line 879 "../src/contacts-contact-editor.vala"
+                                               _tmp20_ = _idx_it;
+#line 879 "../src/contacts-contact-editor.vala"
+                                               _tmp21_ = gee_iterator_get (_tmp20_);
+#line 879 "../src/contacts-contact-editor.vala"
+                                               idx = (gint) ((gintptr) _tmp21_);
+#line 880 "../src/contacts-contact-editor.vala"
+                                               if (idx < ((ContactsContactForm*) self)->last_row) {
+#line 8096 "contacts-contact-editor.c"
+                                                       gint _tmp22_ = 0;
+#line 881 "../src/contacts-contact-editor.vala"
+                                                       if (idx > next_idx) {
+#line 881 "../src/contacts-contact-editor.vala"
+                                                               _tmp22_ = idx;
+#line 8102 "contacts-contact-editor.c"
+                                                       } else {
+#line 881 "../src/contacts-contact-editor.vala"
+                                                               _tmp22_ = next_idx;
+#line 8106 "contacts-contact-editor.c"
+                                                       }
+#line 881 "../src/contacts-contact-editor.vala"
+                                                       next_idx = _tmp22_;
+#line 8110 "contacts-contact-editor.c"
+                                               }
+                                       }
+#line 879 "../src/contacts-contact-editor.vala"
+                                       _g_object_unref0 (_idx_it);
+#line 8115 "contacts-contact-editor.c"
+                               }
+#line 883 "../src/contacts-contact-editor.vala"
+                               _g_object_unref0 (fields);
+#line 883 "../src/contacts-contact-editor.vala"
+                               break;
+#line 8121 "contacts-contact-editor.c"
+                       }
+#line 877 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (fields);
+#line 8125 "contacts-contact-editor.c"
+               }
+#line 877 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_fields_it);
+#line 8129 "contacts-contact-editor.c"
+       }
+#line 886 "../src/contacts-contact-editor.vala"
+       if (next_idx == 0) {
+#line 886 "../src/contacts-contact-editor.vala"
+               _tmp23_ = ((ContactsContactForm*) self)->last_row;
+#line 8135 "contacts-contact-editor.c"
+       } else {
+#line 886 "../src/contacts-contact-editor.vala"
+               _tmp23_ = next_idx;
+#line 8139 "contacts-contact-editor.c"
+       }
+#line 886 "../src/contacts-contact-editor.vala"
+       next_idx = _tmp23_ + 1;
+#line 887 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_insert_row_at (self, next_idx);
+#line 888 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_add_edit_row (self, persona, prop_name, &next_idx, TRUE, type);
+#line 889 "../src/contacts-contact-editor.vala"
+       _tmp24_ = ((ContactsContactForm*) self)->last_row;
+#line 889 "../src/contacts-contact-editor.vala"
+       ((ContactsContactForm*) self)->last_row = _tmp24_ + 1;
+#line 890 "../src/contacts-contact-editor.vala"
+       _tmp25_ = ((ContactsContactForm*) self)->container_grid;
+#line 890 "../src/contacts-contact-editor.vala"
+       gtk_widget_show_all ((GtkWidget*) _tmp25_);
+#line 8155 "contacts-contact-editor.c"
+}
+
+static void
+_contacts_contact_editor_on_avatar_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                      gpointer self)
+{
+#line 900 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_on_avatar_button_clicked ((ContactsContactEditor*) self, _sender);
+#line 8164 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_create_avatar_button (ContactsContactEditor* self)
+{
+       FolksIndividual* _tmp0_;
+       ContactsAvatar* _tmp1_;
+       GtkButton* button = NULL;
+       GtkButton* _tmp2_;
+       AtkObject* _tmp3_;
+       ContactsAvatar* _tmp4_;
+       GtkGrid* _tmp5_;
+#line 894 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 895 "../src/contacts-contact-editor.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->individual;
+#line 895 "../src/contacts-contact-editor.vala"
+       _tmp1_ = contacts_avatar_new (PROFILE_SIZE, _tmp0_);
+#line 895 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp1_);
+#line 895 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->priv->avatar);
+#line 895 "../src/contacts-contact-editor.vala"
+       self->priv->avatar = _tmp1_;
+#line 897 "../src/contacts-contact-editor.vala"
+       _tmp2_ = (GtkButton*) gtk_button_new ();
+#line 897 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp2_);
+#line 897 "../src/contacts-contact-editor.vala"
+       button = _tmp2_;
+#line 898 "../src/contacts-contact-editor.vala"
+       _tmp3_ = gtk_widget_get_accessible ((GtkWidget*) button);
+#line 898 "../src/contacts-contact-editor.vala"
+       atk_object_set_name (_tmp3_, _ ("Change avatar"));
+#line 899 "../src/contacts-contact-editor.vala"
+       _tmp4_ = self->priv->avatar;
+#line 899 "../src/contacts-contact-editor.vala"
+       gtk_button_set_image (button, (GtkWidget*) _tmp4_);
+#line 900 "../src/contacts-contact-editor.vala"
+       g_signal_connect_object (button, "clicked", (GCallback) 
_contacts_contact_editor_on_avatar_button_clicked_gtk_button_clicked, self, 0);
+#line 902 "../src/contacts-contact-editor.vala"
+       _tmp5_ = ((ContactsContactForm*) self)->container_grid;
+#line 902 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp5_, (GtkWidget*) button, 0, 0, 1, 3);
+#line 894 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (button);
+#line 8211 "contacts-contact-editor.c"
+}
+
+static void
+__lambda22_ (ContactsContactEditor* self,
+             GIcon* icon)
+{
+       ContactsAvatar* _tmp0_;
+       GIcon* _tmp1_;
+       ContactsAvatar* _tmp2_;
+       GdkPixbuf* a_pixbuf = NULL;
+       ContactsAvatar* _tmp8_;
+       GdkPixbuf* _tmp9_;
+       GError* _inner_error0_ = NULL;
+#line 908 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (icon != NULL);
+#line 909 "../src/contacts-contact-editor.vala"
+       _tmp0_ = self->priv->avatar;
+#line 909 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _g_object_ref0 (icon);
+#line 909 "../src/contacts-contact-editor.vala"
+       g_object_set_data_full ((GObject*) _tmp0_, "value", _tmp1_, g_object_unref);
+#line 910 "../src/contacts-contact-editor.vala"
+       _tmp2_ = self->priv->avatar;
+#line 910 "../src/contacts-contact-editor.vala"
+       g_object_set_data_full ((GObject*) _tmp2_, "changed", (gpointer) ((gintptr) TRUE), NULL);
+#line 912 "../src/contacts-contact-editor.vala"
+       a_pixbuf = NULL;
+#line 8239 "contacts-contact-editor.c"
+       {
+               GInputStream* stream = NULL;
+               GInputStream* _tmp3_;
+               GdkPixbuf* _tmp4_ = NULL;
+               GInputStream* _tmp5_;
+               GdkPixbuf* _tmp6_;
+               GdkPixbuf* _tmp7_;
+#line 914 "../src/contacts-contact-editor.vala"
+               _tmp3_ = g_loadable_icon_load (G_TYPE_CHECK_INSTANCE_TYPE (icon, g_loadable_icon_get_type ()) 
? ((GLoadableIcon*) icon) : NULL, PROFILE_SIZE, NULL, NULL, &_inner_error0_);
+#line 914 "../src/contacts-contact-editor.vala"
+               stream = _tmp3_;
+#line 914 "../src/contacts-contact-editor.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 8253 "contacts-contact-editor.c"
+                       goto __catch9_g_error;
+               }
+#line 915 "../src/contacts-contact-editor.vala"
+               _tmp5_ = stream;
+#line 915 "../src/contacts-contact-editor.vala"
+               _tmp6_ = gdk_pixbuf_new_from_stream_at_scale (_tmp5_, PROFILE_SIZE, PROFILE_SIZE, TRUE, NULL, 
&_inner_error0_);
+#line 915 "../src/contacts-contact-editor.vala"
+               _tmp4_ = _tmp6_;
+#line 915 "../src/contacts-contact-editor.vala"
+               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 915 "../src/contacts-contact-editor.vala"
+                       _g_object_unref0 (stream);
+#line 8266 "contacts-contact-editor.c"
+                       goto __catch9_g_error;
+               }
+#line 915 "../src/contacts-contact-editor.vala"
+               _tmp7_ = _tmp4_;
+#line 915 "../src/contacts-contact-editor.vala"
+               _tmp4_ = NULL;
+#line 915 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (a_pixbuf);
+#line 915 "../src/contacts-contact-editor.vala"
+               a_pixbuf = _tmp7_;
+#line 913 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (_tmp4_);
+#line 913 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (stream);
+#line 8281 "contacts-contact-editor.c"
+       }
+       goto __finally9;
+       __catch9_g_error:
+       {
+#line 913 "../src/contacts-contact-editor.vala"
+               g_clear_error (&_inner_error0_);
+#line 913 "../src/contacts-contact-editor.vala"
+               _inner_error0_ = NULL;
+#line 8290 "contacts-contact-editor.c"
+       }
+       __finally9:
+#line 913 "../src/contacts-contact-editor.vala"
+       if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 913 "../src/contacts-contact-editor.vala"
+               _g_object_unref0 (a_pixbuf);
+#line 913 "../src/contacts-contact-editor.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+#line 913 "../src/contacts-contact-editor.vala"
+               g_clear_error (&_inner_error0_);
+#line 913 "../src/contacts-contact-editor.vala"
+               return;
+#line 8303 "contacts-contact-editor.c"
+       }
+#line 919 "../src/contacts-contact-editor.vala"
+       _tmp8_ = self->priv->avatar;
+#line 919 "../src/contacts-contact-editor.vala"
+       _tmp9_ = a_pixbuf;
+#line 919 "../src/contacts-contact-editor.vala"
+       contacts_avatar_set_pixbuf (_tmp8_, _tmp9_);
+#line 908 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (a_pixbuf);
+#line 8313 "contacts-contact-editor.c"
+}
+
+static void
+___lambda22__contacts_avatar_selector_set_avatar (ContactsAvatarSelector* _sender,
+                                                  GIcon* avatar_icon,
+                                                  gpointer self)
+{
+#line 908 "../src/contacts-contact-editor.vala"
+       __lambda22_ ((ContactsContactEditor*) self, avatar_icon);
+#line 8323 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_on_avatar_button_clicked (ContactsContactEditor* self,
+                                                  GtkButton* avatar_button)
+{
+       ContactsAvatarSelector* popover = NULL;
+       FolksIndividual* _tmp0_;
+       ContactsAvatarSelector* _tmp1_;
+#line 906 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 906 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (avatar_button != NULL);
+#line 907 "../src/contacts-contact-editor.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->individual;
+#line 907 "../src/contacts-contact-editor.vala"
+       _tmp1_ = contacts_avatar_selector_new ((GtkWidget*) avatar_button, _tmp0_);
+#line 907 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp1_);
+#line 907 "../src/contacts-contact-editor.vala"
+       popover = _tmp1_;
+#line 908 "../src/contacts-contact-editor.vala"
+       g_signal_connect_object (popover, "set-avatar", (GCallback) 
___lambda22__contacts_avatar_selector_set_avatar, self, 0);
+#line 921 "../src/contacts-contact-editor.vala"
+       gtk_widget_show ((GtkWidget*) popover);
+#line 906 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (popover);
+#line 8351 "contacts-contact-editor.c"
+}
+
+gboolean
+contacts_contact_editor_avatar_changed (ContactsContactEditor* self)
+{
+       ContactsAvatar* _tmp0_;
+       gconstpointer _tmp1_;
+       gboolean result = FALSE;
+#line 924 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 925 "../src/contacts-contact-editor.vala"
+       _tmp0_ = self->priv->avatar;
+#line 925 "../src/contacts-contact-editor.vala"
+       _tmp1_ = g_object_get_data ((GObject*) _tmp0_, "changed");
+#line 925 "../src/contacts-contact-editor.vala"
+       result = (gboolean) ((gintptr) _tmp1_);
+#line 925 "../src/contacts-contact-editor.vala"
+       return result;
+#line 8370 "contacts-contact-editor.c"
+}
+
+void
+contacts_contact_editor_get_avatar_value (ContactsContactEditor* self,
+                                          GValue* result)
+{
+       GIcon* icon = NULL;
+       ContactsAvatar* _tmp0_;
+       gconstpointer _tmp1_;
+       GIcon* _tmp2_;
+       GValue v = {0};
+       GValue _tmp3_ = {0};
+#line 928 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 929 "../src/contacts-contact-editor.vala"
+       _tmp0_ = self->priv->avatar;
+#line 929 "../src/contacts-contact-editor.vala"
+       _tmp1_ = g_object_get_data ((GObject*) _tmp0_, "value");
+#line 929 "../src/contacts-contact-editor.vala"
+       _tmp2_ = _g_object_ref0 ((GIcon*) _tmp1_);
+#line 929 "../src/contacts-contact-editor.vala"
+       icon = _tmp2_;
+#line 930 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp3_, G_TYPE_FROM_INSTANCE ((GObject*) icon));
+#line 930 "../src/contacts-contact-editor.vala"
+       v = _tmp3_;
+#line 931 "../src/contacts-contact-editor.vala"
+       g_value_set_object (&v, (GObject*) icon);
+#line 932 "../src/contacts-contact-editor.vala"
+       *result = v;
+#line 932 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (icon);
+#line 932 "../src/contacts-contact-editor.vala"
+       return;
+#line 8405 "contacts-contact-editor.c"
+}
+
+static void
+__lambda23_ (ContactsContactEditor* self)
+{
+       GtkEntry* _tmp0_;
+#line 948 "../src/contacts-contact-editor.vala"
+       _tmp0_ = self->priv->name_entry;
+#line 948 "../src/contacts-contact-editor.vala"
+       g_object_set_data_full ((GObject*) _tmp0_, "changed", (gpointer) ((gintptr) TRUE), NULL);
+#line 8416 "contacts-contact-editor.c"
+}
+
+static void
+___lambda23__gtk_editable_changed (GtkEditable* _sender,
+                                   gpointer self)
+{
+#line 947 "../src/contacts-contact-editor.vala"
+       __lambda23_ ((ContactsContactEditor*) self);
+#line 8425 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_create_name_entry (ContactsContactEditor* self)
+{
+       GtkEntry* _tmp0_;
+       GtkEntry* _tmp1_;
+       GtkEntry* _tmp2_;
+       GtkEntry* _tmp3_;
+       GtkEntry* _tmp4_;
+       FolksIndividual* _tmp5_;
+       GtkEntry* _tmp10_;
+       GtkGrid* _tmp11_;
+       GtkEntry* _tmp12_;
+#line 936 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 937 "../src/contacts-contact-editor.vala"
+       _tmp0_ = (GtkEntry*) gtk_entry_new ();
+#line 937 "../src/contacts-contact-editor.vala"
+       g_object_ref_sink (_tmp0_);
+#line 937 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->priv->name_entry);
+#line 937 "../src/contacts-contact-editor.vala"
+       self->priv->name_entry = _tmp0_;
+#line 938 "../src/contacts-contact-editor.vala"
+       _tmp1_ = self->priv->name_entry;
+#line 938 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp1_, TRUE);
+#line 939 "../src/contacts-contact-editor.vala"
+       _tmp2_ = self->priv->name_entry;
+#line 939 "../src/contacts-contact-editor.vala"
+       gtk_widget_set_valign ((GtkWidget*) _tmp2_, GTK_ALIGN_CENTER);
+#line 940 "../src/contacts-contact-editor.vala"
+       _tmp3_ = self->priv->name_entry;
+#line 940 "../src/contacts-contact-editor.vala"
+       gtk_entry_set_placeholder_text (_tmp3_, _ ("Add name"));
+#line 941 "../src/contacts-contact-editor.vala"
+       _tmp4_ = self->priv->name_entry;
+#line 941 "../src/contacts-contact-editor.vala"
+       g_object_set_data_full ((GObject*) _tmp4_, "changed", (gpointer) ((gintptr) FALSE), NULL);
+#line 943 "../src/contacts-contact-editor.vala"
+       _tmp5_ = ((ContactsContactForm*) self)->individual;
+#line 943 "../src/contacts-contact-editor.vala"
+       if (_tmp5_ != NULL) {
+#line 8470 "contacts-contact-editor.c"
+               GtkEntry* _tmp6_;
+               FolksIndividual* _tmp7_;
+               const gchar* _tmp8_;
+               const gchar* _tmp9_;
+#line 944 "../src/contacts-contact-editor.vala"
+               _tmp6_ = self->priv->name_entry;
+#line 944 "../src/contacts-contact-editor.vala"
+               _tmp7_ = ((ContactsContactForm*) self)->individual;
+#line 944 "../src/contacts-contact-editor.vala"
+               _tmp8_ = folks_individual_get_display_name (_tmp7_);
+#line 944 "../src/contacts-contact-editor.vala"
+               _tmp9_ = _tmp8_;
+#line 944 "../src/contacts-contact-editor.vala"
+               gtk_entry_set_text (_tmp6_, _tmp9_);
+#line 8485 "contacts-contact-editor.c"
+       }
+#line 947 "../src/contacts-contact-editor.vala"
+       _tmp10_ = self->priv->name_entry;
+#line 947 "../src/contacts-contact-editor.vala"
+       g_signal_connect_object ((GtkEditable*) _tmp10_, "changed", (GCallback) 
___lambda23__gtk_editable_changed, self, 0);
+#line 951 "../src/contacts-contact-editor.vala"
+       _tmp11_ = ((ContactsContactForm*) self)->container_grid;
+#line 951 "../src/contacts-contact-editor.vala"
+       _tmp12_ = self->priv->name_entry;
+#line 951 "../src/contacts-contact-editor.vala"
+       gtk_grid_attach (_tmp11_, (GtkWidget*) _tmp12_, 1, 0, 2, 3);
+#line 8497 "contacts-contact-editor.c"
+}
+
+gboolean
+contacts_contact_editor_name_changed (ContactsContactEditor* self)
+{
+       GtkEntry* _tmp0_;
+       gconstpointer _tmp1_;
+       gboolean result = FALSE;
+#line 954 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 955 "../src/contacts-contact-editor.vala"
+       _tmp0_ = self->priv->name_entry;
+#line 955 "../src/contacts-contact-editor.vala"
+       _tmp1_ = g_object_get_data ((GObject*) _tmp0_, "changed");
+#line 955 "../src/contacts-contact-editor.vala"
+       result = (gboolean) ((gintptr) _tmp1_);
+#line 955 "../src/contacts-contact-editor.vala"
+       return result;
+#line 8516 "contacts-contact-editor.c"
+}
+
+void
+contacts_contact_editor_get_full_name_value (ContactsContactEditor* self,
+                                             GValue* result)
+{
+       GValue v = {0};
+       GValue _tmp0_ = {0};
+       GtkEntry* _tmp1_;
+       const gchar* _tmp2_;
+#line 958 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 959 "../src/contacts-contact-editor.vala"
+       g_value_init (&_tmp0_, G_TYPE_STRING);
+#line 959 "../src/contacts-contact-editor.vala"
+       v = _tmp0_;
+#line 960 "../src/contacts-contact-editor.vala"
+       _tmp1_ = self->priv->name_entry;
+#line 960 "../src/contacts-contact-editor.vala"
+       _tmp2_ = gtk_entry_get_text (_tmp1_);
+#line 960 "../src/contacts-contact-editor.vala"
+       g_value_set_string (&v, _tmp2_);
+#line 961 "../src/contacts-contact-editor.vala"
+       *result = v;
+#line 961 "../src/contacts-contact-editor.vala"
+       return;
+#line 8543 "contacts-contact-editor.c"
+}
+
+gboolean
+contacts_contact_editor_get_has_birthday_row (ContactsContactEditor* self)
+{
+       gboolean result;
+#line 107 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 107 "../src/contacts-contact-editor.vala"
+       result = self->priv->_has_birthday_row;
+#line 107 "../src/contacts-contact-editor.vala"
+       return result;
+#line 8556 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_set_has_birthday_row (ContactsContactEditor* self,
+                                              gboolean value)
+{
+#line 107 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 107 "../src/contacts-contact-editor.vala"
+       if (contacts_contact_editor_get_has_birthday_row (self) != value) {
+#line 107 "../src/contacts-contact-editor.vala"
+               self->priv->_has_birthday_row = value;
+#line 107 "../src/contacts-contact-editor.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_contact_editor_properties[CONTACTS_CONTACT_EDITOR_HAS_BIRTHDAY_ROW_PROPERTY]);
+#line 8571 "contacts-contact-editor.c"
+       }
+}
+
+gboolean
+contacts_contact_editor_get_has_nickname_row (ContactsContactEditor* self)
+{
+       gboolean result;
+#line 111 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 111 "../src/contacts-contact-editor.vala"
+       result = self->priv->_has_nickname_row;
+#line 111 "../src/contacts-contact-editor.vala"
+       return result;
+#line 8585 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_set_has_nickname_row (ContactsContactEditor* self,
+                                              gboolean value)
+{
+#line 111 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 111 "../src/contacts-contact-editor.vala"
+       if (contacts_contact_editor_get_has_nickname_row (self) != value) {
+#line 111 "../src/contacts-contact-editor.vala"
+               self->priv->_has_nickname_row = value;
+#line 111 "../src/contacts-contact-editor.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_contact_editor_properties[CONTACTS_CONTACT_EDITOR_HAS_NICKNAME_ROW_PROPERTY]);
+#line 8600 "contacts-contact-editor.c"
+       }
+}
+
+gboolean
+contacts_contact_editor_get_has_notes_row (ContactsContactEditor* self)
+{
+       gboolean result;
+#line 115 "../src/contacts-contact-editor.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 115 "../src/contacts-contact-editor.vala"
+       result = self->priv->_has_notes_row;
+#line 115 "../src/contacts-contact-editor.vala"
+       return result;
+#line 8614 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_set_has_notes_row (ContactsContactEditor* self,
+                                           gboolean value)
+{
+#line 115 "../src/contacts-contact-editor.vala"
+       g_return_if_fail (self != NULL);
+#line 115 "../src/contacts-contact-editor.vala"
+       if (contacts_contact_editor_get_has_notes_row (self) != value) {
+#line 115 "../src/contacts-contact-editor.vala"
+               self->priv->_has_notes_row = value;
+#line 115 "../src/contacts-contact-editor.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_contact_editor_properties[CONTACTS_CONTACT_EDITOR_HAS_NOTES_ROW_PROPERTY]);
+#line 8629 "contacts-contact-editor.c"
+       }
+}
+
+void
+contacts_contact_editor_property_data_copy (const ContactsContactEditorPropertyData* self,
+                                            ContactsContactEditorPropertyData* dest)
+{
+       FolksPersona* _tmp0_;
+       FolksPersona* _tmp1_;
+       GValue _tmp2_;
+       GValue _tmp3_;
+       GValue _tmp4_ = {0};
+#line 89 "../src/contacts-contact-editor.vala"
+       _tmp0_ = (*self).persona;
+#line 89 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 89 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 ((*dest).persona);
+#line 89 "../src/contacts-contact-editor.vala"
+       (*dest).persona = _tmp1_;
+#line 89 "../src/contacts-contact-editor.vala"
+       _tmp2_ = (*self).value;
+#line 89 "../src/contacts-contact-editor.vala"
+       _tmp3_ = _tmp2_;
+#line 89 "../src/contacts-contact-editor.vala"
+       if (G_IS_VALUE (&_tmp3_)) {
+#line 89 "../src/contacts-contact-editor.vala"
+               g_value_init (&_tmp4_, G_VALUE_TYPE (&_tmp3_));
+#line 89 "../src/contacts-contact-editor.vala"
+               g_value_copy (&_tmp3_, &_tmp4_);
+#line 8660 "contacts-contact-editor.c"
+       } else {
+#line 89 "../src/contacts-contact-editor.vala"
+               _tmp4_ = _tmp3_;
+#line 8664 "contacts-contact-editor.c"
+       }
+#line 89 "../src/contacts-contact-editor.vala"
+       G_IS_VALUE (&(*dest).value) ? (g_value_unset (&(*dest).value), NULL) : NULL;
+#line 89 "../src/contacts-contact-editor.vala"
+       (*dest).value = _tmp4_;
+#line 8670 "contacts-contact-editor.c"
+}
+
+void
+contacts_contact_editor_property_data_destroy (ContactsContactEditorPropertyData* self)
+{
+#line 90 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 ((*self).persona);
+#line 91 "../src/contacts-contact-editor.vala"
+       G_IS_VALUE (&(*self).value) ? (g_value_unset (&(*self).value), NULL) : NULL;
+#line 8680 "contacts-contact-editor.c"
+}
+
+ContactsContactEditorPropertyData*
+contacts_contact_editor_property_data_dup (const ContactsContactEditorPropertyData* self)
+{
+       ContactsContactEditorPropertyData* dup;
+#line 89 "../src/contacts-contact-editor.vala"
+       dup = g_new0 (ContactsContactEditorPropertyData, 1);
+#line 89 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_property_data_copy (self, dup);
+#line 89 "../src/contacts-contact-editor.vala"
+       return dup;
+#line 8693 "contacts-contact-editor.c"
+}
+
+void
+contacts_contact_editor_property_data_free (ContactsContactEditorPropertyData* self)
+{
+#line 89 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_property_data_destroy (self);
+#line 89 "../src/contacts-contact-editor.vala"
+       g_free (self);
+#line 8703 "contacts-contact-editor.c"
+}
+
+static GType
+contacts_contact_editor_property_data_get_type_once (void)
+{
+       GType contacts_contact_editor_property_data_type_id;
+       contacts_contact_editor_property_data_type_id = g_boxed_type_register_static 
("ContactsContactEditorPropertyData", (GBoxedCopyFunc) contacts_contact_editor_property_data_dup, 
(GBoxedFreeFunc) contacts_contact_editor_property_data_free);
+       return contacts_contact_editor_property_data_type_id;
+}
+
+GType
+contacts_contact_editor_property_data_get_type (void)
+{
+       static volatile gsize contacts_contact_editor_property_data_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_editor_property_data_type_id__volatile)) {
+               GType contacts_contact_editor_property_data_type_id;
+               contacts_contact_editor_property_data_type_id = 
contacts_contact_editor_property_data_get_type_once ();
+               g_once_init_leave (&contacts_contact_editor_property_data_type_id__volatile, 
contacts_contact_editor_property_data_type_id);
+       }
+       return contacts_contact_editor_property_data_type_id__volatile;
+}
+
+static void
+contacts_contact_editor_row_data_copy (const ContactsContactEditorRowData* self,
+                                       ContactsContactEditorRowData* dest)
+{
+       FolksAbstractFieldDetails* _tmp0_;
+       FolksAbstractFieldDetails* _tmp1_;
+#line 94 "../src/contacts-contact-editor.vala"
+       _tmp0_ = (*self).details;
+#line 94 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 94 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 ((*dest).details);
+#line 94 "../src/contacts-contact-editor.vala"
+       (*dest).details = _tmp1_;
+#line 8740 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_row_data_destroy (ContactsContactEditorRowData* self)
+{
+#line 95 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 ((*self).details);
+#line 8748 "contacts-contact-editor.c"
+}
+
+static ContactsContactEditorRowData*
+contacts_contact_editor_row_data_dup (const ContactsContactEditorRowData* self)
+{
+       ContactsContactEditorRowData* dup;
+#line 94 "../src/contacts-contact-editor.vala"
+       dup = g_new0 (ContactsContactEditorRowData, 1);
+#line 94 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_row_data_copy (self, dup);
+#line 94 "../src/contacts-contact-editor.vala"
+       return dup;
+#line 8761 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_row_data_free (ContactsContactEditorRowData* self)
+{
+#line 94 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_row_data_destroy (self);
+#line 94 "../src/contacts-contact-editor.vala"
+       g_free (self);
+#line 8771 "contacts-contact-editor.c"
+}
+
+static GType
+contacts_contact_editor_row_data_get_type_once (void)
+{
+       GType contacts_contact_editor_row_data_type_id;
+       contacts_contact_editor_row_data_type_id = g_boxed_type_register_static 
("ContactsContactEditorRowData", (GBoxedCopyFunc) contacts_contact_editor_row_data_dup, (GBoxedFreeFunc) 
contacts_contact_editor_row_data_free);
+       return contacts_contact_editor_row_data_type_id;
+}
+
+static GType
+contacts_contact_editor_row_data_get_type (void)
+{
+       static volatile gsize contacts_contact_editor_row_data_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_editor_row_data_type_id__volatile)) {
+               GType contacts_contact_editor_row_data_type_id;
+               contacts_contact_editor_row_data_type_id = contacts_contact_editor_row_data_get_type_once ();
+               g_once_init_leave (&contacts_contact_editor_row_data_type_id__volatile, 
contacts_contact_editor_row_data_type_id);
+       }
+       return contacts_contact_editor_row_data_type_id__volatile;
+}
+
+static void
+contacts_contact_editor_field_copy (const ContactsContactEditorField* self,
+                                    ContactsContactEditorField* dest)
+{
+       GeeHashMap* _tmp0_;
+       GeeHashMap* _tmp1_;
+#line 98 "../src/contacts-contact-editor.vala"
+       (*dest).changed = (*self).changed;
+#line 98 "../src/contacts-contact-editor.vala"
+       _tmp0_ = (*self).rows;
+#line 98 "../src/contacts-contact-editor.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 98 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 ((*dest).rows);
+#line 98 "../src/contacts-contact-editor.vala"
+       (*dest).rows = _tmp1_;
+#line 8810 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_field_destroy (ContactsContactEditorField* self)
+{
+#line 100 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 ((*self).rows);
+#line 8818 "contacts-contact-editor.c"
+}
+
+static ContactsContactEditorField*
+contacts_contact_editor_field_dup (const ContactsContactEditorField* self)
+{
+       ContactsContactEditorField* dup;
+#line 98 "../src/contacts-contact-editor.vala"
+       dup = g_new0 (ContactsContactEditorField, 1);
+#line 98 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_field_copy (self, dup);
+#line 98 "../src/contacts-contact-editor.vala"
+       return dup;
+#line 8831 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_field_free (ContactsContactEditorField* self)
+{
+#line 98 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_field_destroy (self);
+#line 98 "../src/contacts-contact-editor.vala"
+       g_free (self);
+#line 8841 "contacts-contact-editor.c"
+}
+
+static GType
+contacts_contact_editor_field_get_type_once (void)
+{
+       GType contacts_contact_editor_field_type_id;
+       contacts_contact_editor_field_type_id = g_boxed_type_register_static ("ContactsContactEditorField", 
(GBoxedCopyFunc) contacts_contact_editor_field_dup, (GBoxedFreeFunc) contacts_contact_editor_field_free);
+       return contacts_contact_editor_field_type_id;
+}
+
+static GType
+contacts_contact_editor_field_get_type (void)
+{
+       static volatile gsize contacts_contact_editor_field_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_editor_field_type_id__volatile)) {
+               GType contacts_contact_editor_field_type_id;
+               contacts_contact_editor_field_type_id = contacts_contact_editor_field_get_type_once ();
+               g_once_init_leave (&contacts_contact_editor_field_type_id__volatile, 
contacts_contact_editor_field_type_id);
+       }
+       return contacts_contact_editor_field_type_id__volatile;
+}
+
+static void
+_contacts_contact_editor_on_container_grid_size_allocate_gtk_widget_size_allocate (GtkWidget* _sender,
+                                                                                   GtkAllocation* allocation,
+                                                                                   gpointer self)
+{
+#line 120 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_on_container_grid_size_allocate ((ContactsContactEditor*) self, allocation);
+#line 8871 "contacts-contact-editor.c"
+}
+
+static GObject *
+contacts_contact_editor_constructor (GType type,
+                                     guint n_construct_properties,
+                                     GObjectConstructParam * construct_properties)
+{
+       GObject * obj;
+       GObjectClass * parent_class;
+       ContactsContactEditor * self;
+       GeeHashMap* _tmp0_;
+       GtkGrid* _tmp1_;
+#line 118 "../src/contacts-contact-editor.vala"
+       parent_class = G_OBJECT_CLASS (contacts_contact_editor_parent_class);
+#line 118 "../src/contacts-contact-editor.vala"
+       obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+#line 118 "../src/contacts-contact-editor.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditor);
+#line 119 "../src/contacts-contact-editor.vala"
+       _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, 
GEE_TYPE_HASH_MAP, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL, NULL, NULL);
+#line 119 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->priv->writable_personas);
+#line 119 "../src/contacts-contact-editor.vala"
+       self->priv->writable_personas = _tmp0_;
+#line 120 "../src/contacts-contact-editor.vala"
+       _tmp1_ = ((ContactsContactForm*) self)->container_grid;
+#line 120 "../src/contacts-contact-editor.vala"
+       g_signal_connect_object ((GtkWidget*) _tmp1_, "size-allocate", (GCallback) 
_contacts_contact_editor_on_container_grid_size_allocate_gtk_widget_size_allocate, self, 0);
+#line 118 "../src/contacts-contact-editor.vala"
+       return obj;
+#line 8902 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_class_init (ContactsContactEditorClass * klass,
+                                    gpointer klass_data)
+{
+#line 66 "../src/contacts-contact-editor.vala"
+       contacts_contact_editor_parent_class = g_type_class_peek_parent (klass);
+#line 66 "../src/contacts-contact-editor.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsContactEditor_private_offset);
+#line 66 "../src/contacts-contact-editor.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_contact_editor_get_property;
+#line 66 "../src/contacts-contact-editor.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_contact_editor_set_property;
+#line 66 "../src/contacts-contact-editor.vala"
+       G_OBJECT_CLASS (klass)->constructor = contacts_contact_editor_constructor;
+#line 66 "../src/contacts-contact-editor.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_contact_editor_finalize;
+#line 66 "../src/contacts-contact-editor.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_CONTACT_EDITOR_HAS_BIRTHDAY_ROW_PROPERTY, 
contacts_contact_editor_properties[CONTACTS_CONTACT_EDITOR_HAS_BIRTHDAY_ROW_PROPERTY] = g_param_spec_boolean 
("has-birthday-row", "has-birthday-row", "has-birthday-row", FALSE, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE));
+#line 66 "../src/contacts-contact-editor.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_CONTACT_EDITOR_HAS_NICKNAME_ROW_PROPERTY, 
contacts_contact_editor_properties[CONTACTS_CONTACT_EDITOR_HAS_NICKNAME_ROW_PROPERTY] = g_param_spec_boolean 
("has-nickname-row", "has-nickname-row", "has-nickname-row", FALSE, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE));
+#line 66 "../src/contacts-contact-editor.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_CONTACT_EDITOR_HAS_NOTES_ROW_PROPERTY, 
contacts_contact_editor_properties[CONTACTS_CONTACT_EDITOR_HAS_NOTES_ROW_PROPERTY] = g_param_spec_boolean 
("has-notes-row", "has-notes-row", "has-notes-row", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 66 "../src/contacts-contact-editor.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-contact-editor.ui");
+#line 66 "../src/contacts-contact-editor.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "add_detail_button", FALSE, 
ContactsContactEditor_private_offset + G_STRUCT_OFFSET (ContactsContactEditorPrivate, add_detail_button));
+#line 66 "../src/contacts-contact-editor.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "linked_button", FALSE, 
G_STRUCT_OFFSET (ContactsContactEditor, linked_button));
+#line 66 "../src/contacts-contact-editor.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "remove_button", FALSE, 
G_STRUCT_OFFSET (ContactsContactEditor, remove_button));
+#line 8935 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_instance_init (ContactsContactEditor * self,
+                                       gpointer klass)
+{
+#line 66 "../src/contacts-contact-editor.vala"
+       self->priv = contacts_contact_editor_get_instance_private (self);
+#line 106 "../src/contacts-contact-editor.vala"
+       self->priv->_has_birthday_row = FALSE;
+#line 110 "../src/contacts-contact-editor.vala"
+       self->priv->_has_nickname_row = FALSE;
+#line 114 "../src/contacts-contact-editor.vala"
+       self->priv->_has_notes_row = FALSE;
+#line 66 "../src/contacts-contact-editor.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 8952 "contacts-contact-editor.c"
+}
+
+static void
+contacts_contact_editor_finalize (GObject * obj)
+{
+       ContactsContactEditor * self;
+#line 66 "../src/contacts-contact-editor.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditor);
+#line 76 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->priv->name_entry);
+#line 78 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->priv->avatar);
+#line 81 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->priv->add_detail_button);
+#line 84 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->linked_button);
+#line 87 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->remove_button);
+#line 104 "../src/contacts-contact-editor.vala"
+       _g_object_unref0 (self->priv->writable_personas);
+#line 66 "../src/contacts-contact-editor.vala"
+       G_OBJECT_CLASS (contacts_contact_editor_parent_class)->finalize (obj);
+#line 8975 "contacts-contact-editor.c"
+}
+
+/**
+ * A widget that allows the user to edit a given {@link Contact}.
+ */
+static GType
+contacts_contact_editor_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsContactEditorClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_contact_editor_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsContactEditor), 0, (GInstanceInitFunc) contacts_contact_editor_instance_init, 
NULL };
+       GType contacts_contact_editor_type_id;
+       contacts_contact_editor_type_id = g_type_register_static (CONTACTS_TYPE_CONTACT_FORM, 
"ContactsContactEditor", &g_define_type_info, 0);
+       ContactsContactEditor_private_offset = g_type_add_instance_private (contacts_contact_editor_type_id, 
sizeof (ContactsContactEditorPrivate));
+       return contacts_contact_editor_type_id;
+}
+
+GType
+contacts_contact_editor_get_type (void)
+{
+       static volatile gsize contacts_contact_editor_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_editor_type_id__volatile)) {
+               GType contacts_contact_editor_type_id;
+               contacts_contact_editor_type_id = contacts_contact_editor_get_type_once ();
+               g_once_init_leave (&contacts_contact_editor_type_id__volatile, 
contacts_contact_editor_type_id);
+       }
+       return contacts_contact_editor_type_id__volatile;
+}
+
+static void
+_vala_contacts_contact_editor_get_property (GObject * object,
+                                            guint property_id,
+                                            GValue * value,
+                                            GParamSpec * pspec)
+{
+       ContactsContactEditor * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditor);
+#line 66 "../src/contacts-contact-editor.vala"
+       switch (property_id) {
+#line 66 "../src/contacts-contact-editor.vala"
+               case CONTACTS_CONTACT_EDITOR_HAS_BIRTHDAY_ROW_PROPERTY:
+#line 66 "../src/contacts-contact-editor.vala"
+               g_value_set_boolean (value, contacts_contact_editor_get_has_birthday_row (self));
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 66 "../src/contacts-contact-editor.vala"
+               case CONTACTS_CONTACT_EDITOR_HAS_NICKNAME_ROW_PROPERTY:
+#line 66 "../src/contacts-contact-editor.vala"
+               g_value_set_boolean (value, contacts_contact_editor_get_has_nickname_row (self));
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 66 "../src/contacts-contact-editor.vala"
+               case CONTACTS_CONTACT_EDITOR_HAS_NOTES_ROW_PROPERTY:
+#line 66 "../src/contacts-contact-editor.vala"
+               g_value_set_boolean (value, contacts_contact_editor_get_has_notes_row (self));
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 9031 "contacts-contact-editor.c"
+               default:
+#line 66 "../src/contacts-contact-editor.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 9037 "contacts-contact-editor.c"
+       }
+}
+
+static void
+_vala_contacts_contact_editor_set_property (GObject * object,
+                                            guint property_id,
+                                            const GValue * value,
+                                            GParamSpec * pspec)
+{
+       ContactsContactEditor * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditor);
+#line 66 "../src/contacts-contact-editor.vala"
+       switch (property_id) {
+#line 66 "../src/contacts-contact-editor.vala"
+               case CONTACTS_CONTACT_EDITOR_HAS_BIRTHDAY_ROW_PROPERTY:
+#line 66 "../src/contacts-contact-editor.vala"
+               contacts_contact_editor_set_has_birthday_row (self, g_value_get_boolean (value));
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 66 "../src/contacts-contact-editor.vala"
+               case CONTACTS_CONTACT_EDITOR_HAS_NICKNAME_ROW_PROPERTY:
+#line 66 "../src/contacts-contact-editor.vala"
+               contacts_contact_editor_set_has_nickname_row (self, g_value_get_boolean (value));
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 66 "../src/contacts-contact-editor.vala"
+               case CONTACTS_CONTACT_EDITOR_HAS_NOTES_ROW_PROPERTY:
+#line 66 "../src/contacts-contact-editor.vala"
+               contacts_contact_editor_set_has_notes_row (self, g_value_get_boolean (value));
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 9069 "contacts-contact-editor.c"
+               default:
+#line 66 "../src/contacts-contact-editor.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 66 "../src/contacts-contact-editor.vala"
+               break;
+#line 9075 "contacts-contact-editor.c"
+       }
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
+static gint
+_vala_array_length (gpointer array)
+{
+       gint length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-form.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-form.c
new file mode 100644
index 0000000..b9b68a2
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-form.c
@@ -0,0 +1,477 @@
+/* contacts-contact-form.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-contact-form.vala, do not modify */
+
+/*
+ * Copyright (C) 2018 Niels De Graef <nielsdegraef gmail com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <folks/folks.h>
+#include "contacts.h"
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+#define CONTACTS_TYPE_CONTACT_FORM (contacts_contact_form_get_type ())
+#define CONTACTS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactForm))
+#define CONTACTS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+#define CONTACTS_IS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_IS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_CONTACT_FORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+
+typedef struct _ContactsContactForm ContactsContactForm;
+typedef struct _ContactsContactFormClass ContactsContactFormClass;
+typedef struct _ContactsContactFormPrivate ContactsContactFormPrivate;
+enum  {
+       CONTACTS_CONTACT_FORM_0_PROPERTY,
+       CONTACTS_CONTACT_FORM_NUM_PROPERTIES
+};
+static GParamSpec* contacts_contact_form_properties[CONTACTS_CONTACT_FORM_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+struct _ContactsContactForm {
+       GtkGrid parent_instance;
+       ContactsContactFormPrivate * priv;
+       FolksIndividual* individual;
+       ContactsStore* store;
+       GtkGrid* container_grid;
+       gint last_row;
+};
+
+struct _ContactsContactFormClass {
+       GtkGridClass parent_class;
+};
+
+struct _ContactsContactFormPrivate {
+       GtkScrolledWindow* main_sw;
+};
+
+static gint ContactsContactForm_private_offset;
+static gpointer contacts_contact_form_parent_class = NULL;
+
+GType contacts_contact_form_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactForm, g_object_unref)
+gchar** contacts_contact_form_sort_persona_properties (ContactsContactForm* self,
+                                                       gchar** props,
+                                                       gint props_length1,
+                                                       gint* result_length1);
+static gint __lambda10_ (ContactsContactForm* self,
+                  const gchar* a,
+                  const gchar* b);
+static gint ___lambda10__gcompare_data_func (gconstpointer a,
+                                      gconstpointer b,
+                                      gpointer self);
+GtkLabel* contacts_contact_form_create_persona_store_label (ContactsContactForm* self,
+                                                            FolksPersona* p);
+ContactsContactForm* contacts_contact_form_construct (GType object_type);
+static GObject * contacts_contact_form_constructor (GType type,
+                                             guint n_construct_properties,
+                                             GObjectConstructParam * construct_properties);
+static void contacts_contact_form_finalize (GObject * obj);
+static GType contacts_contact_form_get_type_once (void);
+
+const gchar* CONTACTS_CONTACT_FORM_SORTED_PROPERTIES[8] = {"email-addresses", "phone-numbers", 
"im-addresses", "urls", "nickname", "birthday", "postal-addresses", "notes"};
+
+static inline gpointer
+contacts_contact_form_get_instance_private (ContactsContactForm* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsContactForm_private_offset);
+}
+
+static gint
+__lambda10_ (ContactsContactForm* self,
+             const gchar* a,
+             const gchar* b)
+{
+       gint result = 0;
+#line 60 "../src/contacts-contact-form.vala"
+       g_return_val_if_fail (a != NULL, 0);
+#line 60 "../src/contacts-contact-form.vala"
+       g_return_val_if_fail (b != NULL, 0);
+#line 108 "contacts-contact-form.c"
+       {
+               const gchar** prop_collection = NULL;
+               gint prop_collection_length1 = 0;
+               gint _prop_collection_size_ = 0;
+               gint prop_it = 0;
+#line 61 "../src/contacts-contact-form.vala"
+               prop_collection = CONTACTS_CONTACT_FORM_SORTED_PROPERTIES;
+#line 61 "../src/contacts-contact-form.vala"
+               prop_collection_length1 = G_N_ELEMENTS (CONTACTS_CONTACT_FORM_SORTED_PROPERTIES);
+#line 61 "../src/contacts-contact-form.vala"
+               for (prop_it = 0; prop_it < prop_collection_length1; prop_it = prop_it + 1) {
+#line 120 "contacts-contact-form.c"
+                       const gchar* prop = NULL;
+#line 61 "../src/contacts-contact-form.vala"
+                       prop = prop_collection[prop_it];
+#line 124 "contacts-contact-form.c"
+                       {
+                               const gchar* _tmp0_;
+                               const gchar* _tmp3_;
+#line 62 "../src/contacts-contact-form.vala"
+                               _tmp0_ = prop;
+#line 62 "../src/contacts-contact-form.vala"
+                               if (g_strcmp0 (a, _tmp0_) == 0) {
+#line 132 "contacts-contact-form.c"
+                                       gint _tmp1_ = 0;
+                                       const gchar* _tmp2_;
+#line 63 "../src/contacts-contact-form.vala"
+                                       _tmp2_ = prop;
+#line 63 "../src/contacts-contact-form.vala"
+                                       if (g_strcmp0 (b, _tmp2_) == 0) {
+#line 63 "../src/contacts-contact-form.vala"
+                                               _tmp1_ = 0;
+#line 141 "contacts-contact-form.c"
+                                       } else {
+#line 63 "../src/contacts-contact-form.vala"
+                                               _tmp1_ = -1;
+#line 145 "contacts-contact-form.c"
+                                       }
+#line 63 "../src/contacts-contact-form.vala"
+                                       result = _tmp1_;
+#line 63 "../src/contacts-contact-form.vala"
+                                       return result;
+#line 151 "contacts-contact-form.c"
+                               }
+#line 65 "../src/contacts-contact-form.vala"
+                               _tmp3_ = prop;
+#line 65 "../src/contacts-contact-form.vala"
+                               if (g_strcmp0 (b, _tmp3_) == 0) {
+#line 66 "../src/contacts-contact-form.vala"
+                                       result = 1;
+#line 66 "../src/contacts-contact-form.vala"
+                                       return result;
+#line 161 "contacts-contact-form.c"
+                               }
+                       }
+               }
+       }
+#line 69 "../src/contacts-contact-form.vala"
+       result = 0;
+#line 69 "../src/contacts-contact-form.vala"
+       return result;
+#line 170 "contacts-contact-form.c"
+}
+
+static gint
+___lambda10__gcompare_data_func (gconstpointer a,
+                                 gconstpointer b,
+                                 gpointer self)
+{
+       gint result;
+       result = __lambda10_ ((ContactsContactForm*) self, (const gchar*) a, (const gchar*) b);
+#line 60 "../src/contacts-contact-form.vala"
+       return result;
+#line 182 "contacts-contact-form.c"
+}
+
+gchar**
+contacts_contact_form_sort_persona_properties (ContactsContactForm* self,
+                                               gchar** props,
+                                               gint props_length1,
+                                               gint* result_length1)
+{
+       GCompareDataFunc compare_properties = NULL;
+       gpointer compare_properties_target;
+       GDestroyNotify compare_properties_target_destroy_notify;
+       GeeArrayList* sorted_props = NULL;
+       GeeArrayList* _tmp0_;
+       GeeArrayList* _tmp4_;
+       GCompareDataFunc _tmp5_;
+       gpointer _tmp5__target;
+       GDestroyNotify _tmp5__target_destroy_notify;
+       GeeArrayList* _tmp6_;
+       gint _tmp7_ = 0;
+       gpointer* _tmp8_;
+       gchar** _tmp9_;
+       gint _tmp9__length1;
+       gchar** result = NULL;
+#line 59 "../src/contacts-contact-form.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 60 "../src/contacts-contact-form.vala"
+       compare_properties = ___lambda10__gcompare_data_func;
+#line 60 "../src/contacts-contact-form.vala"
+       compare_properties_target = g_object_ref (self);
+#line 60 "../src/contacts-contact-form.vala"
+       compare_properties_target_destroy_notify = g_object_unref;
+#line 72 "../src/contacts-contact-form.vala"
+       _tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, 
NULL, NULL);
+#line 72 "../src/contacts-contact-form.vala"
+       sorted_props = _tmp0_;
+#line 218 "contacts-contact-form.c"
+       {
+               gchar** s_collection = NULL;
+               gint s_collection_length1 = 0;
+               gint _s_collection_size_ = 0;
+               gint s_it = 0;
+#line 73 "../src/contacts-contact-form.vala"
+               s_collection = props;
+#line 73 "../src/contacts-contact-form.vala"
+               s_collection_length1 = props_length1;
+#line 73 "../src/contacts-contact-form.vala"
+               for (s_it = 0; s_it < s_collection_length1; s_it = s_it + 1) {
+#line 230 "contacts-contact-form.c"
+                       gchar* _tmp1_;
+                       gchar* s = NULL;
+#line 73 "../src/contacts-contact-form.vala"
+                       _tmp1_ = g_strdup (s_collection[s_it]);
+#line 73 "../src/contacts-contact-form.vala"
+                       s = _tmp1_;
+#line 237 "contacts-contact-form.c"
+                       {
+                               GeeArrayList* _tmp2_;
+                               const gchar* _tmp3_;
+#line 74 "../src/contacts-contact-form.vala"
+                               _tmp2_ = sorted_props;
+#line 74 "../src/contacts-contact-form.vala"
+                               _tmp3_ = s;
+#line 74 "../src/contacts-contact-form.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _tmp2_, _tmp3_);
+#line 73 "../src/contacts-contact-form.vala"
+                               _g_free0 (s);
+#line 249 "contacts-contact-form.c"
+                       }
+               }
+       }
+#line 76 "../src/contacts-contact-form.vala"
+       _tmp4_ = sorted_props;
+#line 76 "../src/contacts-contact-form.vala"
+       _tmp5_ = compare_properties;
+#line 76 "../src/contacts-contact-form.vala"
+       _tmp5__target = compare_properties_target;
+#line 76 "../src/contacts-contact-form.vala"
+       _tmp5__target_destroy_notify = compare_properties_target_destroy_notify;
+#line 76 "../src/contacts-contact-form.vala"
+       compare_properties = NULL;
+#line 76 "../src/contacts-contact-form.vala"
+       compare_properties_target = NULL;
+#line 76 "../src/contacts-contact-form.vala"
+       compare_properties_target_destroy_notify = NULL;
+#line 76 "../src/contacts-contact-form.vala"
+       gee_list_sort ((GeeList*) _tmp4_, _tmp5_, _tmp5__target, _tmp5__target_destroy_notify);
+#line 77 "../src/contacts-contact-form.vala"
+       _tmp6_ = sorted_props;
+#line 77 "../src/contacts-contact-form.vala"
+       _tmp8_ = gee_collection_to_array ((GeeCollection*) _tmp6_, &_tmp7_);
+#line 77 "../src/contacts-contact-form.vala"
+       _tmp9_ = _tmp8_;
+#line 77 "../src/contacts-contact-form.vala"
+       _tmp9__length1 = _tmp7_;
+#line 77 "../src/contacts-contact-form.vala"
+       if (result_length1) {
+#line 77 "../src/contacts-contact-form.vala"
+               *result_length1 = _tmp9__length1;
+#line 281 "contacts-contact-form.c"
+       }
+#line 77 "../src/contacts-contact-form.vala"
+       result = _tmp9_;
+#line 77 "../src/contacts-contact-form.vala"
+       _g_object_unref0 (sorted_props);
+#line 77 "../src/contacts-contact-form.vala"
+       (compare_properties_target_destroy_notify == NULL) ? NULL : (compare_properties_target_destroy_notify 
(compare_properties_target), NULL);
+#line 77 "../src/contacts-contact-form.vala"
+       compare_properties = NULL;
+#line 77 "../src/contacts-contact-form.vala"
+       compare_properties_target = NULL;
+#line 77 "../src/contacts-contact-form.vala"
+       compare_properties_target_destroy_notify = NULL;
+#line 77 "../src/contacts-contact-form.vala"
+       return result;
+#line 297 "contacts-contact-form.c"
+}
+
+GtkLabel*
+contacts_contact_form_create_persona_store_label (ContactsContactForm* self,
+                                                  FolksPersona* p)
+{
+       GtkLabel* store_name = NULL;
+       GtkLabel* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       gchar* _tmp4_;
+       GtkLabel* result = NULL;
+#line 80 "../src/contacts-contact-form.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 80 "../src/contacts-contact-form.vala"
+       g_return_val_if_fail (p != NULL, NULL);
+#line 81 "../src/contacts-contact-form.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new ("");
+#line 81 "../src/contacts-contact-form.vala"
+       g_object_ref_sink (_tmp0_);
+#line 81 "../src/contacts-contact-form.vala"
+       store_name = _tmp0_;
+#line 82 "../src/contacts-contact-form.vala"
+       _tmp1_ = contacts_utils_format_persona_store_name_for_contact (p);
+#line 82 "../src/contacts-contact-form.vala"
+       _tmp2_ = _tmp1_;
+#line 82 "../src/contacts-contact-form.vala"
+       _tmp3_ = g_markup_printf_escaped ("<span font='16px bold'>%s</span>", _tmp2_);
+#line 82 "../src/contacts-contact-form.vala"
+       _tmp4_ = _tmp3_;
+#line 82 "../src/contacts-contact-form.vala"
+       gtk_label_set_markup (store_name, _tmp4_);
+#line 82 "../src/contacts-contact-form.vala"
+       _g_free0 (_tmp4_);
+#line 82 "../src/contacts-contact-form.vala"
+       _g_free0 (_tmp2_);
+#line 84 "../src/contacts-contact-form.vala"
+       gtk_widget_set_halign ((GtkWidget*) store_name, GTK_ALIGN_START);
+#line 85 "../src/contacts-contact-form.vala"
+       gtk_label_set_xalign (store_name, 0.0f);
+#line 86 "../src/contacts-contact-form.vala"
+       gtk_widget_set_margin_start ((GtkWidget*) store_name, 6);
+#line 88 "../src/contacts-contact-form.vala"
+       result = store_name;
+#line 88 "../src/contacts-contact-form.vala"
+       return result;
+#line 345 "contacts-contact-form.c"
+}
+
+ContactsContactForm*
+contacts_contact_form_construct (GType object_type)
+{
+       ContactsContactForm * self = NULL;
+#line 30 "../src/contacts-contact-form.vala"
+       self = (ContactsContactForm*) g_object_new (object_type, NULL);
+#line 30 "../src/contacts-contact-form.vala"
+       return self;
+#line 356 "contacts-contact-form.c"
+}
+
+static GObject *
+contacts_contact_form_constructor (GType type,
+                                   guint n_construct_properties,
+                                   GObjectConstructParam * construct_properties)
+{
+       GObject * obj;
+       GObjectClass * parent_class;
+       ContactsContactForm * self;
+       GtkGrid* _tmp0_;
+       GtkScrolledWindow* _tmp1_;
+       GtkAdjustment* _tmp2_;
+       GtkScrolledWindow* _tmp3_;
+       GtkStyleContext* _tmp4_;
+#line 54 "../src/contacts-contact-form.vala"
+       parent_class = G_OBJECT_CLASS (contacts_contact_form_parent_class);
+#line 54 "../src/contacts-contact-form.vala"
+       obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+#line 54 "../src/contacts-contact-form.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_CONTACT_FORM, ContactsContactForm);
+#line 55 "../src/contacts-contact-form.vala"
+       _tmp0_ = self->container_grid;
+#line 55 "../src/contacts-contact-form.vala"
+       _tmp1_ = self->priv->main_sw;
+#line 55 "../src/contacts-contact-form.vala"
+       _tmp2_ = gtk_scrolled_window_get_vadjustment (_tmp1_);
+#line 55 "../src/contacts-contact-form.vala"
+       gtk_container_set_focus_vadjustment ((GtkContainer*) _tmp0_, _tmp2_);
+#line 56 "../src/contacts-contact-form.vala"
+       _tmp3_ = self->priv->main_sw;
+#line 56 "../src/contacts-contact-form.vala"
+       _tmp4_ = gtk_widget_get_style_context ((GtkWidget*) _tmp3_);
+#line 56 "../src/contacts-contact-form.vala"
+       gtk_style_context_add_class (_tmp4_, "contacts-contact-form");
+#line 54 "../src/contacts-contact-form.vala"
+       return obj;
+#line 394 "contacts-contact-form.c"
+}
+
+static void
+contacts_contact_form_class_init (ContactsContactFormClass * klass,
+                                  gpointer klass_data)
+{
+#line 30 "../src/contacts-contact-form.vala"
+       contacts_contact_form_parent_class = g_type_class_peek_parent (klass);
+#line 30 "../src/contacts-contact-form.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsContactForm_private_offset);
+#line 30 "../src/contacts-contact-form.vala"
+       G_OBJECT_CLASS (klass)->constructor = contacts_contact_form_constructor;
+#line 30 "../src/contacts-contact-form.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_contact_form_finalize;
+#line 30 "../src/contacts-contact-form.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-contact-form.ui");
+#line 30 "../src/contacts-contact-form.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "main_sw", FALSE, 
ContactsContactForm_private_offset + G_STRUCT_OFFSET (ContactsContactFormPrivate, main_sw));
+#line 30 "../src/contacts-contact-form.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "container_grid", FALSE, 
G_STRUCT_OFFSET (ContactsContactForm, container_grid));
+#line 415 "contacts-contact-form.c"
+}
+
+static void
+contacts_contact_form_instance_init (ContactsContactForm * self,
+                                     gpointer klass)
+{
+#line 30 "../src/contacts-contact-form.vala"
+       self->priv = contacts_contact_form_get_instance_private (self);
+#line 52 "../src/contacts-contact-form.vala"
+       self->last_row = 0;
+#line 30 "../src/contacts-contact-form.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 428 "contacts-contact-form.c"
+}
+
+static void
+contacts_contact_form_finalize (GObject * obj)
+{
+       ContactsContactForm * self;
+#line 30 "../src/contacts-contact-form.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_CONTACT_FORM, ContactsContactForm);
+#line 43 "../src/contacts-contact-form.vala"
+       _g_object_unref0 (self->individual);
+#line 45 "../src/contacts-contact-form.vala"
+       _g_object_unref0 (self->store);
+#line 48 "../src/contacts-contact-form.vala"
+       _g_object_unref0 (self->priv->main_sw);
+#line 51 "../src/contacts-contact-form.vala"
+       _g_object_unref0 (self->container_grid);
+#line 30 "../src/contacts-contact-form.vala"
+       G_OBJECT_CLASS (contacts_contact_form_parent_class)->finalize (obj);
+#line 447 "contacts-contact-form.c"
+}
+
+/**
+ * A parent class for the {@link ContactEditor} and the {@link ContactSheet}.
+ *
+ * This exploits the common structure of both widgets: they both display a
+ * (possibly empty) contact, starting with a header and subsequently iterating
+ * over the several {@link Folks.Persona}s, displaying their properties.
+ */
+static GType
+contacts_contact_form_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsContactFormClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_contact_form_class_init, (GClassFinalizeFunc) NULL, 
NULL, sizeof (ContactsContactForm), 0, (GInstanceInitFunc) contacts_contact_form_instance_init, NULL };
+       GType contacts_contact_form_type_id;
+       contacts_contact_form_type_id = g_type_register_static (gtk_grid_get_type (), "ContactsContactForm", 
&g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+       ContactsContactForm_private_offset = g_type_add_instance_private (contacts_contact_form_type_id, 
sizeof (ContactsContactFormPrivate));
+       return contacts_contact_form_type_id;
+}
+
+GType
+contacts_contact_form_get_type (void)
+{
+       static volatile gsize contacts_contact_form_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_form_type_id__volatile)) {
+               GType contacts_contact_form_type_id;
+               contacts_contact_form_type_id = contacts_contact_form_get_type_once ();
+               g_once_init_leave (&contacts_contact_form_type_id__volatile, contacts_contact_form_type_id);
+       }
+       return contacts_contact_form_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-list.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-list.c
new file mode 100644
index 0000000..3cfece9
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-list.c
@@ -0,0 +1,2291 @@
+/* contacts-contact-list.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-contact-list.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <glib.h>
+#include <folks/folks.h>
+#include "contacts.h"
+#include <gdk/gdk.h>
+#include <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+#include <glib/gi18n-lib.h>
+#include <pango/pango.h>
+#include <math.h>
+#include <float.h>
+
+#define CONTACTS_TYPE_CONTACT_LIST (contacts_contact_list_get_type ())
+#define CONTACTS_CONTACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_LIST, 
ContactsContactList))
+#define CONTACTS_CONTACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_LIST, 
ContactsContactListClass))
+#define CONTACTS_IS_CONTACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_LIST))
+#define CONTACTS_IS_CONTACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_LIST))
+#define CONTACTS_CONTACT_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_LIST, 
ContactsContactListClass))
+
+typedef struct _ContactsContactList ContactsContactList;
+typedef struct _ContactsContactListClass ContactsContactListClass;
+typedef struct _ContactsContactListPrivate ContactsContactListPrivate;
+typedef enum  {
+       CONTACTS_UI_STATE_NORMAL,
+       CONTACTS_UI_STATE_SHOWING,
+       CONTACTS_UI_STATE_SELECTING,
+       CONTACTS_UI_STATE_UPDATING,
+       CONTACTS_UI_STATE_CREATING
+} ContactsUiState;
+
+#define CONTACTS_TYPE_UI_STATE (contacts_ui_state_get_type ())
+enum  {
+       CONTACTS_CONTACT_LIST_0_PROPERTY,
+       CONTACTS_CONTACT_LIST_STATE_PROPERTY,
+       CONTACTS_CONTACT_LIST_NUM_PROPERTIES
+};
+static GParamSpec* contacts_contact_list_properties[CONTACTS_CONTACT_LIST_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_SETTINGS (contacts_settings_get_type ())
+#define CONTACTS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETTINGS, ContactsSettings))
+#define CONTACTS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+#define CONTACTS_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+
+typedef struct _ContactsSettings ContactsSettings;
+typedef struct _ContactsSettingsClass ContactsSettingsClass;
+typedef struct _Block15Data Block15Data;
+
+#define CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW (contacts_contact_list_contact_data_row_get_type ())
+#define CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, ContactsContactListContactDataRow))
+#define CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, ContactsContactListContactDataRowClass))
+#define CONTACTS_CONTACT_LIST_IS_CONTACT_DATA_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW))
+#define CONTACTS_CONTACT_LIST_IS_CONTACT_DATA_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW))
+#define CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, ContactsContactListContactDataRowClass))
+
+typedef struct _ContactsContactListContactDataRow ContactsContactListContactDataRow;
+typedef struct _ContactsContactListContactDataRowClass ContactsContactListContactDataRowClass;
+typedef struct _ContactsContactListContactDataRowPrivate ContactsContactListContactDataRowPrivate;
+#define _pango_attr_list_unref0(var) ((var == NULL) ? NULL : (var = (pango_attr_list_unref (var), NULL)))
+typedef struct _Block16Data Block16Data;
+
+#define CONTACTS_TYPE_AVATAR (contacts_avatar_get_type ())
+#define CONTACTS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR, ContactsAvatar))
+#define CONTACTS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+#define CONTACTS_IS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_IS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_AVATAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+
+typedef struct _ContactsAvatar ContactsAvatar;
+typedef struct _ContactsAvatarClass ContactsAvatarClass;
+enum  {
+       CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW_0_PROPERTY,
+       CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW_NUM_PROPERTIES
+};
+static GParamSpec* 
contacts_contact_list_contact_data_row_properties[CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW_NUM_PROPERTIES];
+enum  {
+       CONTACTS_CONTACT_LIST_SELECTION_CHANGED_SIGNAL,
+       CONTACTS_CONTACT_LIST_CONTACTS_MARKED_SIGNAL,
+       CONTACTS_CONTACT_LIST_NUM_SIGNALS
+};
+static guint contacts_contact_list_signals[CONTACTS_CONTACT_LIST_NUM_SIGNALS] = {0};
+
+struct _ContactsContactList {
+       GtkListBox parent_instance;
+       ContactsContactListPrivate * priv;
+};
+
+struct _ContactsContactListClass {
+       GtkListBoxClass parent_class;
+};
+
+struct _ContactsContactListPrivate {
+       gint nr_contacts_marked;
+       FolksQuery* filter_query;
+       ContactsStore* store;
+       gboolean sort_on_surname;
+       ContactsUiState _state;
+};
+
+struct _Block15Data {
+       int _ref_count_;
+       ContactsContactList* self;
+       ContactsSettings* settings;
+};
+
+struct _ContactsContactListContactDataRow {
+       GtkListBoxRow parent_instance;
+       ContactsContactListContactDataRowPrivate * priv;
+       FolksIndividual* individual;
+       GtkCheckButton* selector_button;
+};
+
+struct _ContactsContactListContactDataRowClass {
+       GtkListBoxRowClass parent_class;
+};
+
+struct _Block16Data {
+       int _ref_count_;
+       ContactsContactList* self;
+       ContactsContactListContactDataRow* row;
+};
+
+struct _ContactsContactListContactDataRowPrivate {
+       GtkLabel* label;
+       ContactsAvatar* avatar;
+       gboolean checkbox_exposed;
+};
+
+static gint ContactsContactList_private_offset;
+static gpointer contacts_contact_list_parent_class = NULL;
+static gint ContactsContactListContactDataRow_private_offset;
+static gpointer contacts_contact_list_contact_data_row_parent_class = NULL;
+
+GType contacts_contact_list_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactList, g_object_unref)
+GType contacts_ui_state_get_type (void) G_GNUC_CONST;
+GType contacts_settings_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSettings, g_object_unref)
+ContactsContactList* contacts_contact_list_new (ContactsSettings* settings,
+                                                ContactsStore* store,
+                                                FolksQuery* query);
+ContactsContactList* contacts_contact_list_construct (GType object_type,
+                                                      ContactsSettings* settings,
+                                                      ContactsStore* store,
+                                                      FolksQuery* query);
+static Block15Data* block15_data_ref (Block15Data* _data15_);
+static void block15_data_unref (void * _userdata_);
+static void __lambda4_ (ContactsContactList* self);
+static void ___lambda4__g_object_notify (GObject* _sender,
+                                  GParamSpec* pspec,
+                                  gpointer self);
+static void contacts_contact_list_on_ui_state_changed (ContactsContactList* self,
+                                                GObject* obj,
+                                                GParamSpec* pspec);
+static void _contacts_contact_list_on_ui_state_changed_g_object_notify (GObject* _sender,
+                                                                 GParamSpec* pspec,
+                                                                 gpointer self);
+gboolean contacts_settings_get_sort_on_surname (ContactsSettings* self);
+static void __lambda6_ (Block15Data* _data15_);
+static void ___lambda6__g_settings_changed (GSettings* _sender,
+                                     const gchar* key,
+                                     gpointer self);
+static void contacts_contact_list_contact_added_cb (ContactsContactList* self,
+                                             ContactsStore* store,
+                                             FolksIndividual* i);
+static void _contacts_contact_list_contact_added_cb_contacts_store_added (ContactsStore* _sender,
+                                                                   FolksIndividual* c,
+                                                                   gpointer self);
+static void contacts_contact_list_contact_removed_cb (ContactsContactList* self,
+                                               ContactsStore* store,
+                                               FolksIndividual* i);
+static void _contacts_contact_list_contact_removed_cb_contacts_store_removed (ContactsStore* _sender,
+                                                                       FolksIndividual* c,
+                                                                       gpointer self);
+static gint contacts_contact_list_compare_rows (ContactsContactList* self,
+                                         GtkListBoxRow* row_a,
+                                         GtkListBoxRow* row_b);
+static gint _contacts_contact_list_compare_rows_gtk_list_box_sort_func (GtkListBoxRow* row1,
+                                                                 GtkListBoxRow* row2,
+                                                                 gpointer self);
+static gboolean contacts_contact_list_filter_row (ContactsContactList* self,
+                                           GtkListBoxRow* row);
+static gboolean _contacts_contact_list_filter_row_gtk_list_box_filter_func (GtkListBoxRow* row,
+                                                                     gpointer self);
+static void contacts_contact_list_update_header (ContactsContactList* self,
+                                          GtkListBoxRow* row,
+                                          GtkListBoxRow* before);
+static void _contacts_contact_list_update_header_gtk_list_box_update_header_func (GtkListBoxRow* row,
+                                                                           GtkListBoxRow* before,
+                                                                           gpointer self);
+static GType contacts_contact_list_contact_data_row_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactListContactDataRow, g_object_unref)
+static void contacts_contact_list_contact_data_row_expose_checkbox (ContactsContactListContactDataRow* self,
+                                                             gboolean expose);
+ContactsUiState contacts_contact_list_get_state (ContactsContactList* self);
+static const gchar* contacts_contact_list_try_get_surname (ContactsContactList* self,
+                                                    FolksIndividual* indiv);
+static GtkLabel* contacts_contact_list_create_header_label (ContactsContactList* self,
+                                                     const gchar* text);
+static Block16Data* block16_data_ref (Block16Data* _data16_);
+static void block16_data_unref (void * _userdata_);
+static ContactsContactListContactDataRow* contacts_contact_list_contact_data_row_new (FolksIndividual* i);
+static ContactsContactListContactDataRow* contacts_contact_list_contact_data_row_construct (GType 
object_type,
+                                                                                     FolksIndividual* i);
+static void ___lambda7_ (Block16Data* _data16_);
+static void contacts_contact_list_on_row_checkbox_toggled (ContactsContactList* self,
+                                                    ContactsContactListContactDataRow* row);
+static void ____lambda7__gtk_toggle_button_toggled (GtkToggleButton* _sender,
+                                             gpointer self);
+void contacts_contact_list_set_state (ContactsContactList* self,
+                                      ContactsUiState value);
+static ContactsContactListContactDataRow* contacts_contact_list_find_row_for_contact (ContactsContactList* 
self,
+                                                                               FolksIndividual* individual);
+static void contacts_contact_list_real_row_selected (GtkListBox* base,
+                                              GtkListBoxRow* row);
+void contacts_contact_list_select_contact (ContactsContactList* self,
+                                           FolksIndividual* individual);
+void contacts_contact_list_hide_contact (ContactsContactList* self,
+                                         FolksIndividual* individual);
+GeeLinkedList* contacts_contact_list_get_marked_contacts (ContactsContactList* self);
+GeeLinkedList* contacts_contact_list_get_marked_contacts_and_hide (ContactsContactList* self);
+static gboolean contacts_contact_list_real_button_press_event (GtkWidget* base,
+                                                        GdkEventButton* event);
+GType contacts_avatar_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatar, g_object_unref)
+#define CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW_LIST_AVATAR_SIZE 48
+static void contacts_contact_list_contact_data_row_on_contact_changed (ContactsContactListContactDataRow* 
self,
+                                                                GObject* obj,
+                                                                GParamSpec* pspec);
+static void _contacts_contact_list_contact_data_row_on_contact_changed_g_object_notify (GObject* _sender,
+                                                                                 GParamSpec* pspec,
+                                                                                 gpointer self);
+ContactsAvatar* contacts_avatar_new (gint size,
+                                     FolksIndividual* individual);
+ContactsAvatar* contacts_avatar_construct (GType object_type,
+                                           gint size,
+                                           FolksIndividual* individual);
+static void contacts_contact_list_contact_data_row_real_state_flags_changed (GtkWidget* base,
+                                                                      GtkStateFlags previous_state);
+static void contacts_contact_list_contact_data_row_finalize (GObject * obj);
+static GType contacts_contact_list_contact_data_row_get_type_once (void);
+static void contacts_contact_list_finalize (GObject * obj);
+static GType contacts_contact_list_get_type_once (void);
+static void _vala_contacts_contact_list_get_property (GObject * object,
+                                               guint property_id,
+                                               GValue * value,
+                                               GParamSpec * pspec);
+static void _vala_contacts_contact_list_set_property (GObject * object,
+                                               guint property_id,
+                                               const GValue * value,
+                                               GParamSpec * pspec);
+
+static inline gpointer
+contacts_contact_list_get_instance_private (ContactsContactList* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsContactList_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 109 "../src/contacts-contact-list.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 290 "contacts-contact-list.c"
+}
+
+static Block15Data*
+block15_data_ref (Block15Data* _data15_)
+{
+#line 109 "../src/contacts-contact-list.vala"
+       g_atomic_int_inc (&_data15_->_ref_count_);
+#line 109 "../src/contacts-contact-list.vala"
+       return _data15_;
+#line 300 "contacts-contact-list.c"
+}
+
+static void
+block15_data_unref (void * _userdata_)
+{
+       Block15Data* _data15_;
+       _data15_ = (Block15Data*) _userdata_;
+#line 109 "../src/contacts-contact-list.vala"
+       if (g_atomic_int_dec_and_test (&_data15_->_ref_count_)) {
+#line 310 "contacts-contact-list.c"
+               ContactsContactList* self;
+#line 109 "../src/contacts-contact-list.vala"
+               self = _data15_->self;
+#line 109 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (_data15_->settings);
+#line 109 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (self);
+#line 109 "../src/contacts-contact-list.vala"
+               g_slice_free (Block15Data, _data15_);
+#line 320 "contacts-contact-list.c"
+       }
+}
+
+static void
+__lambda4_ (ContactsContactList* self)
+{
+#line 113 "../src/contacts-contact-list.vala"
+       gtk_list_box_invalidate_filter ((GtkListBox*) self);
+#line 329 "contacts-contact-list.c"
+}
+
+static void
+___lambda4__g_object_notify (GObject* _sender,
+                             GParamSpec* pspec,
+                             gpointer self)
+{
+#line 113 "../src/contacts-contact-list.vala"
+       __lambda4_ ((ContactsContactList*) self);
+#line 339 "contacts-contact-list.c"
+}
+
+static void
+_contacts_contact_list_on_ui_state_changed_g_object_notify (GObject* _sender,
+                                                            GParamSpec* pspec,
+                                                            gpointer self)
+{
+#line 116 "../src/contacts-contact-list.vala"
+       contacts_contact_list_on_ui_state_changed ((ContactsContactList*) self, _sender, pspec);
+#line 349 "contacts-contact-list.c"
+}
+
+static void
+__lambda6_ (Block15Data* _data15_)
+{
+       ContactsContactList* self;
+       gboolean _tmp0_;
+       gboolean _tmp1_;
+#line 119 "../src/contacts-contact-list.vala"
+       self = _data15_->self;
+#line 120 "../src/contacts-contact-list.vala"
+       _tmp0_ = contacts_settings_get_sort_on_surname (_data15_->settings);
+#line 120 "../src/contacts-contact-list.vala"
+       _tmp1_ = _tmp0_;
+#line 120 "../src/contacts-contact-list.vala"
+       self->priv->sort_on_surname = _tmp1_;
+#line 121 "../src/contacts-contact-list.vala"
+       gtk_list_box_invalidate_sort ((GtkListBox*) self);
+#line 368 "contacts-contact-list.c"
+}
+
+static void
+___lambda6__g_settings_changed (GSettings* _sender,
+                                const gchar* key,
+                                gpointer self)
+{
+#line 119 "../src/contacts-contact-list.vala"
+       __lambda6_ (self);
+#line 378 "contacts-contact-list.c"
+}
+
+static void
+_contacts_contact_list_contact_added_cb_contacts_store_added (ContactsStore* _sender,
+                                                              FolksIndividual* c,
+                                                              gpointer self)
+{
+#line 124 "../src/contacts-contact-list.vala"
+       contacts_contact_list_contact_added_cb ((ContactsContactList*) self, _sender, c);
+#line 388 "contacts-contact-list.c"
+}
+
+static void
+_contacts_contact_list_contact_removed_cb_contacts_store_removed (ContactsStore* _sender,
+                                                                  FolksIndividual* c,
+                                                                  gpointer self)
+{
+#line 125 "../src/contacts-contact-list.vala"
+       contacts_contact_list_contact_removed_cb ((ContactsContactList*) self, _sender, c);
+#line 398 "contacts-contact-list.c"
+}
+
+static gint
+_contacts_contact_list_compare_rows_gtk_list_box_sort_func (GtkListBoxRow* row1,
+                                                            GtkListBoxRow* row2,
+                                                            gpointer self)
+{
+       gint result;
+       result = contacts_contact_list_compare_rows ((ContactsContactList*) self, row1, row2);
+#line 131 "../src/contacts-contact-list.vala"
+       return result;
+#line 410 "contacts-contact-list.c"
+}
+
+static gboolean
+_contacts_contact_list_filter_row_gtk_list_box_filter_func (GtkListBoxRow* row,
+                                                            gpointer self)
+{
+       gboolean result;
+       result = contacts_contact_list_filter_row ((ContactsContactList*) self, row);
+#line 132 "../src/contacts-contact-list.vala"
+       return result;
+#line 421 "contacts-contact-list.c"
+}
+
+static void
+_contacts_contact_list_update_header_gtk_list_box_update_header_func (GtkListBoxRow* row,
+                                                                      GtkListBoxRow* before,
+                                                                      gpointer self)
+{
+#line 133 "../src/contacts-contact-list.vala"
+       contacts_contact_list_update_header ((ContactsContactList*) self, row, before);
+#line 431 "contacts-contact-list.c"
+}
+
+ContactsContactList*
+contacts_contact_list_construct (GType object_type,
+                                 ContactsSettings* settings,
+                                 ContactsStore* store,
+                                 FolksQuery* query)
+{
+       ContactsContactList * self = NULL;
+       Block15Data* _data15_;
+       ContactsSettings* _tmp0_;
+       ContactsStore* _tmp1_;
+       FolksQuery* _tmp2_;
+       FolksQuery* _tmp3_;
+       gboolean _tmp4_;
+       gboolean _tmp5_;
+       ContactsStore* _tmp6_;
+       ContactsStore* _tmp7_;
+       GtkStyleContext* _tmp18_;
+#line 109 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (settings != NULL, NULL);
+#line 109 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (store != NULL, NULL);
+#line 109 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (query != NULL, NULL);
+#line 109 "../src/contacts-contact-list.vala"
+       _data15_ = g_slice_new0 (Block15Data);
+#line 109 "../src/contacts-contact-list.vala"
+       _data15_->_ref_count_ = 1;
+#line 109 "../src/contacts-contact-list.vala"
+       _tmp0_ = _g_object_ref0 (settings);
+#line 109 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (_data15_->settings);
+#line 109 "../src/contacts-contact-list.vala"
+       _data15_->settings = _tmp0_;
+#line 109 "../src/contacts-contact-list.vala"
+       self = (ContactsContactList*) g_object_new (object_type, NULL);
+#line 109 "../src/contacts-contact-list.vala"
+       _data15_->self = g_object_ref (self);
+#line 110 "../src/contacts-contact-list.vala"
+       gtk_list_box_set_selection_mode ((GtkListBox*) self, GTK_SELECTION_BROWSE);
+#line 111 "../src/contacts-contact-list.vala"
+       _tmp1_ = _g_object_ref0 (store);
+#line 111 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->store);
+#line 111 "../src/contacts-contact-list.vala"
+       self->priv->store = _tmp1_;
+#line 112 "../src/contacts-contact-list.vala"
+       _tmp2_ = _g_object_ref0 (query);
+#line 112 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->filter_query);
+#line 112 "../src/contacts-contact-list.vala"
+       self->priv->filter_query = _tmp2_;
+#line 113 "../src/contacts-contact-list.vala"
+       _tmp3_ = self->priv->filter_query;
+#line 113 "../src/contacts-contact-list.vala"
+       g_signal_connect_object ((GObject*) _tmp3_, "notify", (GCallback) ___lambda4__g_object_notify, self, 
0);
+#line 114 "../src/contacts-contact-list.vala"
+       gtk_widget_set_visible ((GtkWidget*) self, TRUE);
+#line 116 "../src/contacts-contact-list.vala"
+       g_signal_connect_object ((GObject*) self, "notify::state", (GCallback) 
_contacts_contact_list_on_ui_state_changed_g_object_notify, self, 0);
+#line 118 "../src/contacts-contact-list.vala"
+       _tmp4_ = contacts_settings_get_sort_on_surname (_data15_->settings);
+#line 118 "../src/contacts-contact-list.vala"
+       _tmp5_ = _tmp4_;
+#line 118 "../src/contacts-contact-list.vala"
+       self->priv->sort_on_surname = _tmp5_;
+#line 119 "../src/contacts-contact-list.vala"
+       g_signal_connect_data ((GSettings*) _data15_->settings, "changed::sort-on-surname", (GCallback) 
___lambda6__g_settings_changed, block15_data_ref (_data15_), (GClosureNotify) block15_data_unref, 0);
+#line 124 "../src/contacts-contact-list.vala"
+       _tmp6_ = self->priv->store;
+#line 124 "../src/contacts-contact-list.vala"
+       g_signal_connect_object (_tmp6_, "added", (GCallback) 
_contacts_contact_list_contact_added_cb_contacts_store_added, self, 0);
+#line 125 "../src/contacts-contact-list.vala"
+       _tmp7_ = self->priv->store;
+#line 125 "../src/contacts-contact-list.vala"
+       g_signal_connect_object (_tmp7_, "removed", (GCallback) 
_contacts_contact_list_contact_removed_cb_contacts_store_removed, self, 0);
+#line 509 "contacts-contact-list.c"
+       {
+               GeeIterator* _i_it = NULL;
+               ContactsStore* _tmp8_;
+               GeeCollection* _tmp9_;
+               GeeCollection* _tmp10_;
+               GeeIterator* _tmp11_;
+               GeeIterator* _tmp12_;
+#line 126 "../src/contacts-contact-list.vala"
+               _tmp8_ = self->priv->store;
+#line 126 "../src/contacts-contact-list.vala"
+               _tmp9_ = contacts_store_get_contacts (_tmp8_);
+#line 126 "../src/contacts-contact-list.vala"
+               _tmp10_ = _tmp9_;
+#line 126 "../src/contacts-contact-list.vala"
+               _tmp11_ = gee_iterable_iterator ((GeeIterable*) _tmp10_);
+#line 126 "../src/contacts-contact-list.vala"
+               _tmp12_ = _tmp11_;
+#line 126 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (_tmp10_);
+#line 126 "../src/contacts-contact-list.vala"
+               _i_it = _tmp12_;
+#line 126 "../src/contacts-contact-list.vala"
+               while (TRUE) {
+#line 533 "contacts-contact-list.c"
+                       GeeIterator* _tmp13_;
+                       FolksIndividual* i = NULL;
+                       GeeIterator* _tmp14_;
+                       gpointer _tmp15_;
+                       ContactsStore* _tmp16_;
+                       FolksIndividual* _tmp17_;
+#line 126 "../src/contacts-contact-list.vala"
+                       _tmp13_ = _i_it;
+#line 126 "../src/contacts-contact-list.vala"
+                       if (!gee_iterator_next (_tmp13_)) {
+#line 126 "../src/contacts-contact-list.vala"
+                               break;
+#line 546 "contacts-contact-list.c"
+                       }
+#line 126 "../src/contacts-contact-list.vala"
+                       _tmp14_ = _i_it;
+#line 126 "../src/contacts-contact-list.vala"
+                       _tmp15_ = gee_iterator_get (_tmp14_);
+#line 126 "../src/contacts-contact-list.vala"
+                       i = (FolksIndividual*) _tmp15_;
+#line 127 "../src/contacts-contact-list.vala"
+                       _tmp16_ = self->priv->store;
+#line 127 "../src/contacts-contact-list.vala"
+                       _tmp17_ = i;
+#line 127 "../src/contacts-contact-list.vala"
+                       contacts_contact_list_contact_added_cb (self, _tmp16_, _tmp17_);
+#line 126 "../src/contacts-contact-list.vala"
+                       _g_object_unref0 (i);
+#line 562 "contacts-contact-list.c"
+               }
+#line 126 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (_i_it);
+#line 566 "contacts-contact-list.c"
+       }
+#line 129 "../src/contacts-contact-list.vala"
+       _tmp18_ = gtk_widget_get_style_context ((GtkWidget*) self);
+#line 129 "../src/contacts-contact-list.vala"
+       gtk_style_context_add_class (_tmp18_, "contacts-contact-list");
+#line 131 "../src/contacts-contact-list.vala"
+       gtk_list_box_set_sort_func ((GtkListBox*) self, 
_contacts_contact_list_compare_rows_gtk_list_box_sort_func, g_object_ref (self), g_object_unref);
+#line 132 "../src/contacts-contact-list.vala"
+       gtk_list_box_set_filter_func ((GtkListBox*) self, 
_contacts_contact_list_filter_row_gtk_list_box_filter_func, g_object_ref (self), g_object_unref);
+#line 133 "../src/contacts-contact-list.vala"
+       gtk_list_box_set_header_func ((GtkListBox*) self, 
_contacts_contact_list_update_header_gtk_list_box_update_header_func, g_object_ref (self), g_object_unref);
+#line 109 "../src/contacts-contact-list.vala"
+       block15_data_unref (_data15_);
+#line 109 "../src/contacts-contact-list.vala"
+       _data15_ = NULL;
+#line 109 "../src/contacts-contact-list.vala"
+       return self;
+#line 584 "contacts-contact-list.c"
+}
+
+ContactsContactList*
+contacts_contact_list_new (ContactsSettings* settings,
+                           ContactsStore* store,
+                           FolksQuery* query)
+{
+#line 109 "../src/contacts-contact-list.vala"
+       return contacts_contact_list_construct (CONTACTS_TYPE_CONTACT_LIST, settings, store, query);
+#line 594 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_on_ui_state_changed (ContactsContactList* self,
+                                           GObject* obj,
+                                           GParamSpec* pspec)
+{
+       GList* _tmp0_;
+       ContactsUiState _tmp8_;
+#line 136 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 136 "../src/contacts-contact-list.vala"
+       g_return_if_fail (obj != NULL);
+#line 136 "../src/contacts-contact-list.vala"
+       g_return_if_fail (pspec != NULL);
+#line 137 "../src/contacts-contact-list.vala"
+       _tmp0_ = gtk_container_get_children ((GtkContainer*) self);
+#line 612 "contacts-contact-list.c"
+       {
+               GList* widget_collection = NULL;
+               GList* widget_it = NULL;
+#line 137 "../src/contacts-contact-list.vala"
+               widget_collection = _tmp0_;
+#line 137 "../src/contacts-contact-list.vala"
+               for (widget_it = widget_collection; widget_it != NULL; widget_it = widget_it->next) {
+#line 620 "contacts-contact-list.c"
+                       GtkWidget* widget = NULL;
+#line 137 "../src/contacts-contact-list.vala"
+                       widget = (GtkWidget*) widget_it->data;
+#line 624 "contacts-contact-list.c"
+                       {
+                               ContactsContactListContactDataRow* row = NULL;
+                               GtkWidget* _tmp1_;
+                               ContactsContactListContactDataRow* _tmp2_;
+                               ContactsContactListContactDataRow* _tmp3_;
+                               ContactsUiState _tmp4_;
+                               ContactsUiState _tmp5_;
+#line 138 "../src/contacts-contact-list.vala"
+                               _tmp1_ = widget;
+#line 138 "../src/contacts-contact-list.vala"
+                               _tmp2_ = _g_object_ref0 (CONTACTS_CONTACT_LIST_IS_CONTACT_DATA_ROW (_tmp1_) ? 
((ContactsContactListContactDataRow*) _tmp1_) : NULL);
+#line 138 "../src/contacts-contact-list.vala"
+                               row = _tmp2_;
+#line 139 "../src/contacts-contact-list.vala"
+                               _tmp3_ = row;
+#line 139 "../src/contacts-contact-list.vala"
+                               _tmp4_ = self->priv->_state;
+#line 139 "../src/contacts-contact-list.vala"
+                               contacts_contact_list_contact_data_row_expose_checkbox (_tmp3_, _tmp4_ == 
CONTACTS_UI_STATE_SELECTING);
+#line 141 "../src/contacts-contact-list.vala"
+                               _tmp5_ = self->priv->_state;
+#line 141 "../src/contacts-contact-list.vala"
+                               if (_tmp5_ != CONTACTS_UI_STATE_SELECTING) {
+#line 648 "contacts-contact-list.c"
+                                       ContactsContactListContactDataRow* _tmp6_;
+                                       GtkCheckButton* _tmp7_;
+#line 142 "../src/contacts-contact-list.vala"
+                                       _tmp6_ = row;
+#line 142 "../src/contacts-contact-list.vala"
+                                       _tmp7_ = _tmp6_->selector_button;
+#line 142 "../src/contacts-contact-list.vala"
+                                       gtk_toggle_button_set_active ((GtkToggleButton*) _tmp7_, FALSE);
+#line 657 "contacts-contact-list.c"
+                               }
+#line 137 "../src/contacts-contact-list.vala"
+                               _g_object_unref0 (row);
+#line 661 "contacts-contact-list.c"
+                       }
+               }
+#line 137 "../src/contacts-contact-list.vala"
+               (widget_collection == NULL) ? NULL : (widget_collection = (g_list_free (widget_collection), 
NULL));
+#line 666 "contacts-contact-list.c"
+       }
+#line 145 "../src/contacts-contact-list.vala"
+       _tmp8_ = self->priv->_state;
+#line 145 "../src/contacts-contact-list.vala"
+       if (_tmp8_ != CONTACTS_UI_STATE_SELECTING) {
+#line 146 "../src/contacts-contact-list.vala"
+               self->priv->nr_contacts_marked = 0;
+#line 674 "contacts-contact-list.c"
+       }
+}
+
+static gint
+contacts_contact_list_compare_rows (ContactsContactList* self,
+                                    GtkListBoxRow* row_a,
+                                    GtkListBoxRow* row_b)
+{
+       FolksIndividual* a = NULL;
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       FolksIndividual* b = NULL;
+       FolksIndividual* _tmp2_;
+       FolksIndividual* _tmp3_;
+       FolksIndividual* _tmp4_;
+       gboolean _tmp5_;
+       gboolean _tmp6_;
+       FolksIndividual* _tmp7_;
+       gboolean _tmp8_;
+       gboolean _tmp9_;
+       const gchar* _tmp14_ = NULL;
+       const gchar* a_name = NULL;
+       const gchar* _tmp20_ = NULL;
+       const gchar* b_name = NULL;
+       const gchar* _tmp26_;
+       const gchar* _tmp27_;
+       gint result = 0;
+#line 149 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 149 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (row_a != NULL, 0);
+#line 149 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (row_b != NULL, 0);
+#line 150 "../src/contacts-contact-list.vala"
+       _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (row_a, CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
ContactsContactListContactDataRow)->individual;
+#line 150 "../src/contacts-contact-list.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 150 "../src/contacts-contact-list.vala"
+       a = _tmp1_;
+#line 151 "../src/contacts-contact-list.vala"
+       _tmp2_ = G_TYPE_CHECK_INSTANCE_CAST (row_b, CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
ContactsContactListContactDataRow)->individual;
+#line 151 "../src/contacts-contact-list.vala"
+       _tmp3_ = _g_object_ref0 (_tmp2_);
+#line 151 "../src/contacts-contact-list.vala"
+       b = _tmp3_;
+#line 154 "../src/contacts-contact-list.vala"
+       _tmp4_ = a;
+#line 154 "../src/contacts-contact-list.vala"
+       _tmp5_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp4_);
+#line 154 "../src/contacts-contact-list.vala"
+       _tmp6_ = _tmp5_;
+#line 154 "../src/contacts-contact-list.vala"
+       _tmp7_ = b;
+#line 154 "../src/contacts-contact-list.vala"
+       _tmp8_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp7_);
+#line 154 "../src/contacts-contact-list.vala"
+       _tmp9_ = _tmp8_;
+#line 154 "../src/contacts-contact-list.vala"
+       if (_tmp6_ != _tmp9_) {
+#line 734 "contacts-contact-list.c"
+               gint _tmp10_ = 0;
+               FolksIndividual* _tmp11_;
+               gboolean _tmp12_;
+               gboolean _tmp13_;
+#line 155 "../src/contacts-contact-list.vala"
+               _tmp11_ = a;
+#line 155 "../src/contacts-contact-list.vala"
+               _tmp12_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp11_);
+#line 155 "../src/contacts-contact-list.vala"
+               _tmp13_ = _tmp12_;
+#line 155 "../src/contacts-contact-list.vala"
+               if (_tmp13_) {
+#line 155 "../src/contacts-contact-list.vala"
+                       _tmp10_ = -1;
+#line 749 "contacts-contact-list.c"
+               } else {
+#line 155 "../src/contacts-contact-list.vala"
+                       _tmp10_ = 1;
+#line 753 "contacts-contact-list.c"
+               }
+#line 155 "../src/contacts-contact-list.vala"
+               result = _tmp10_;
+#line 155 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (b);
+#line 155 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (a);
+#line 155 "../src/contacts-contact-list.vala"
+               return result;
+#line 763 "contacts-contact-list.c"
+       }
+#line 158 "../src/contacts-contact-list.vala"
+       if (self->priv->sort_on_surname) {
+#line 767 "contacts-contact-list.c"
+               FolksIndividual* _tmp15_;
+               const gchar* _tmp16_;
+#line 158 "../src/contacts-contact-list.vala"
+               _tmp15_ = a;
+#line 158 "../src/contacts-contact-list.vala"
+               _tmp16_ = contacts_contact_list_try_get_surname (self, _tmp15_);
+#line 158 "../src/contacts-contact-list.vala"
+               _tmp14_ = _tmp16_;
+#line 776 "contacts-contact-list.c"
+       } else {
+               FolksIndividual* _tmp17_;
+               const gchar* _tmp18_;
+               const gchar* _tmp19_;
+#line 158 "../src/contacts-contact-list.vala"
+               _tmp17_ = a;
+#line 158 "../src/contacts-contact-list.vala"
+               _tmp18_ = folks_individual_get_display_name (_tmp17_);
+#line 158 "../src/contacts-contact-list.vala"
+               _tmp19_ = _tmp18_;
+#line 158 "../src/contacts-contact-list.vala"
+               _tmp14_ = _tmp19_;
+#line 789 "contacts-contact-list.c"
+       }
+#line 158 "../src/contacts-contact-list.vala"
+       a_name = _tmp14_;
+#line 159 "../src/contacts-contact-list.vala"
+       if (self->priv->sort_on_surname) {
+#line 795 "contacts-contact-list.c"
+               FolksIndividual* _tmp21_;
+               const gchar* _tmp22_;
+#line 159 "../src/contacts-contact-list.vala"
+               _tmp21_ = b;
+#line 159 "../src/contacts-contact-list.vala"
+               _tmp22_ = contacts_contact_list_try_get_surname (self, _tmp21_);
+#line 159 "../src/contacts-contact-list.vala"
+               _tmp20_ = _tmp22_;
+#line 804 "contacts-contact-list.c"
+       } else {
+               FolksIndividual* _tmp23_;
+               const gchar* _tmp24_;
+               const gchar* _tmp25_;
+#line 159 "../src/contacts-contact-list.vala"
+               _tmp23_ = b;
+#line 159 "../src/contacts-contact-list.vala"
+               _tmp24_ = folks_individual_get_display_name (_tmp23_);
+#line 159 "../src/contacts-contact-list.vala"
+               _tmp25_ = _tmp24_;
+#line 159 "../src/contacts-contact-list.vala"
+               _tmp20_ = _tmp25_;
+#line 817 "contacts-contact-list.c"
+       }
+#line 159 "../src/contacts-contact-list.vala"
+       b_name = _tmp20_;
+#line 161 "../src/contacts-contact-list.vala"
+       _tmp26_ = a_name;
+#line 161 "../src/contacts-contact-list.vala"
+       _tmp27_ = b_name;
+#line 161 "../src/contacts-contact-list.vala"
+       result = g_utf8_collate (_tmp26_, _tmp27_);
+#line 161 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (b);
+#line 161 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (a);
+#line 161 "../src/contacts-contact-list.vala"
+       return result;
+#line 833 "contacts-contact-list.c"
+}
+
+static const gchar*
+contacts_contact_list_try_get_surname (ContactsContactList* self,
+                                       FolksIndividual* indiv)
+{
+       gboolean _tmp0_ = FALSE;
+       FolksStructuredName* _tmp1_;
+       FolksStructuredName* _tmp2_;
+       const gchar* _tmp11_;
+       const gchar* _tmp12_;
+       const gchar* result = NULL;
+#line 164 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 164 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (indiv != NULL, NULL);
+#line 165 "../src/contacts-contact-list.vala"
+       _tmp1_ = folks_name_details_get_structured_name ((FolksNameDetails*) indiv);
+#line 165 "../src/contacts-contact-list.vala"
+       _tmp2_ = _tmp1_;
+#line 165 "../src/contacts-contact-list.vala"
+       if (_tmp2_ != NULL) {
+#line 856 "contacts-contact-list.c"
+               FolksStructuredName* _tmp3_;
+               FolksStructuredName* _tmp4_;
+               const gchar* _tmp5_;
+               const gchar* _tmp6_;
+#line 165 "../src/contacts-contact-list.vala"
+               _tmp3_ = folks_name_details_get_structured_name ((FolksNameDetails*) indiv);
+#line 165 "../src/contacts-contact-list.vala"
+               _tmp4_ = _tmp3_;
+#line 165 "../src/contacts-contact-list.vala"
+               _tmp5_ = folks_structured_name_get_family_name (_tmp4_);
+#line 165 "../src/contacts-contact-list.vala"
+               _tmp6_ = _tmp5_;
+#line 165 "../src/contacts-contact-list.vala"
+               _tmp0_ = g_strcmp0 (_tmp6_, "") != 0;
+#line 871 "contacts-contact-list.c"
+       } else {
+#line 165 "../src/contacts-contact-list.vala"
+               _tmp0_ = FALSE;
+#line 875 "contacts-contact-list.c"
+       }
+#line 165 "../src/contacts-contact-list.vala"
+       if (_tmp0_) {
+#line 879 "contacts-contact-list.c"
+               FolksStructuredName* _tmp7_;
+               FolksStructuredName* _tmp8_;
+               const gchar* _tmp9_;
+               const gchar* _tmp10_;
+#line 166 "../src/contacts-contact-list.vala"
+               _tmp7_ = folks_name_details_get_structured_name ((FolksNameDetails*) indiv);
+#line 166 "../src/contacts-contact-list.vala"
+               _tmp8_ = _tmp7_;
+#line 166 "../src/contacts-contact-list.vala"
+               _tmp9_ = folks_structured_name_get_family_name (_tmp8_);
+#line 166 "../src/contacts-contact-list.vala"
+               _tmp10_ = _tmp9_;
+#line 166 "../src/contacts-contact-list.vala"
+               result = _tmp10_;
+#line 166 "../src/contacts-contact-list.vala"
+               return result;
+#line 896 "contacts-contact-list.c"
+       }
+#line 169 "../src/contacts-contact-list.vala"
+       _tmp11_ = folks_individual_get_display_name (indiv);
+#line 169 "../src/contacts-contact-list.vala"
+       _tmp12_ = _tmp11_;
+#line 169 "../src/contacts-contact-list.vala"
+       result = _tmp12_;
+#line 169 "../src/contacts-contact-list.vala"
+       return result;
+#line 906 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_update_header (ContactsContactList* self,
+                                     GtkListBoxRow* row,
+                                     GtkListBoxRow* before)
+{
+       FolksIndividual* current = NULL;
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       FolksIndividual* previous = NULL;
+       FolksIndividual* _tmp9_;
+       FolksIndividual* _tmp10_;
+       gboolean _tmp11_ = FALSE;
+       FolksIndividual* _tmp12_;
+       gboolean _tmp13_;
+       gboolean _tmp14_;
+#line 172 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 172 "../src/contacts-contact-list.vala"
+       g_return_if_fail (row != NULL);
+#line 173 "../src/contacts-contact-list.vala"
+       _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (row, CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
ContactsContactListContactDataRow)->individual;
+#line 173 "../src/contacts-contact-list.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 173 "../src/contacts-contact-list.vala"
+       current = _tmp1_;
+#line 175 "../src/contacts-contact-list.vala"
+       if (before == NULL) {
+#line 936 "contacts-contact-list.c"
+               FolksIndividual* _tmp2_;
+               gboolean _tmp3_;
+               gboolean _tmp4_;
+#line 176 "../src/contacts-contact-list.vala"
+               _tmp2_ = current;
+#line 176 "../src/contacts-contact-list.vala"
+               _tmp3_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp2_);
+#line 176 "../src/contacts-contact-list.vala"
+               _tmp4_ = _tmp3_;
+#line 176 "../src/contacts-contact-list.vala"
+               if (_tmp4_) {
+#line 948 "contacts-contact-list.c"
+                       GtkLabel* _tmp5_;
+                       GtkLabel* _tmp6_;
+#line 177 "../src/contacts-contact-list.vala"
+                       _tmp5_ = contacts_contact_list_create_header_label (self, _ ("Favorites"));
+#line 177 "../src/contacts-contact-list.vala"
+                       _tmp6_ = _tmp5_;
+#line 177 "../src/contacts-contact-list.vala"
+                       gtk_list_box_row_set_header (row, (GtkWidget*) _tmp6_);
+#line 177 "../src/contacts-contact-list.vala"
+                       _g_object_unref0 (_tmp6_);
+#line 959 "contacts-contact-list.c"
+               } else {
+                       GtkLabel* _tmp7_;
+                       GtkLabel* _tmp8_;
+#line 179 "../src/contacts-contact-list.vala"
+                       _tmp7_ = contacts_contact_list_create_header_label (self, _ ("All Contacts"));
+#line 179 "../src/contacts-contact-list.vala"
+                       _tmp8_ = _tmp7_;
+#line 179 "../src/contacts-contact-list.vala"
+                       gtk_list_box_row_set_header (row, (GtkWidget*) _tmp8_);
+#line 179 "../src/contacts-contact-list.vala"
+                       _g_object_unref0 (_tmp8_);
+#line 971 "contacts-contact-list.c"
+               }
+#line 180 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (current);
+#line 180 "../src/contacts-contact-list.vala"
+               return;
+#line 977 "contacts-contact-list.c"
+       }
+#line 183 "../src/contacts-contact-list.vala"
+       _tmp9_ = G_TYPE_CHECK_INSTANCE_CAST (before, CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
ContactsContactListContactDataRow)->individual;
+#line 183 "../src/contacts-contact-list.vala"
+       _tmp10_ = _g_object_ref0 (_tmp9_);
+#line 183 "../src/contacts-contact-list.vala"
+       previous = _tmp10_;
+#line 184 "../src/contacts-contact-list.vala"
+       _tmp12_ = current;
+#line 184 "../src/contacts-contact-list.vala"
+       _tmp13_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp12_);
+#line 184 "../src/contacts-contact-list.vala"
+       _tmp14_ = _tmp13_;
+#line 184 "../src/contacts-contact-list.vala"
+       if (!_tmp14_) {
+#line 993 "contacts-contact-list.c"
+               FolksIndividual* _tmp15_;
+               gboolean _tmp16_;
+               gboolean _tmp17_;
+#line 184 "../src/contacts-contact-list.vala"
+               _tmp15_ = previous;
+#line 184 "../src/contacts-contact-list.vala"
+               _tmp16_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp15_);
+#line 184 "../src/contacts-contact-list.vala"
+               _tmp17_ = _tmp16_;
+#line 184 "../src/contacts-contact-list.vala"
+               _tmp11_ = _tmp17_;
+#line 1005 "contacts-contact-list.c"
+       } else {
+#line 184 "../src/contacts-contact-list.vala"
+               _tmp11_ = FALSE;
+#line 1009 "contacts-contact-list.c"
+       }
+#line 184 "../src/contacts-contact-list.vala"
+       if (_tmp11_) {
+#line 1013 "contacts-contact-list.c"
+               GtkLabel* _tmp18_;
+               GtkLabel* _tmp19_;
+#line 185 "../src/contacts-contact-list.vala"
+               _tmp18_ = contacts_contact_list_create_header_label (self, _ ("All Contacts"));
+#line 185 "../src/contacts-contact-list.vala"
+               _tmp19_ = _tmp18_;
+#line 185 "../src/contacts-contact-list.vala"
+               gtk_list_box_row_set_header (row, (GtkWidget*) _tmp19_);
+#line 185 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (_tmp19_);
+#line 1024 "contacts-contact-list.c"
+       } else {
+#line 187 "../src/contacts-contact-list.vala"
+               gtk_list_box_row_set_header (row, NULL);
+#line 1028 "contacts-contact-list.c"
+       }
+#line 172 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (previous);
+#line 172 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (current);
+#line 1034 "contacts-contact-list.c"
+}
+
+static GtkLabel*
+contacts_contact_list_create_header_label (ContactsContactList* self,
+                                           const gchar* text)
+{
+       GtkLabel* label = NULL;
+       GtkLabel* _tmp0_;
+       PangoAttrList* attrs = NULL;
+       PangoAttrList* _tmp1_;
+       PangoAttribute* _tmp2_;
+       PangoAttribute* _tmp3_;
+       PangoAttribute* _tmp4_;
+       GtkLabel* result = NULL;
+#line 191 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 191 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (text != NULL, NULL);
+#line 192 "../src/contacts-contact-list.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new (text);
+#line 192 "../src/contacts-contact-list.vala"
+       g_object_ref_sink (_tmp0_);
+#line 192 "../src/contacts-contact-list.vala"
+       label = _tmp0_;
+#line 193 "../src/contacts-contact-list.vala"
+       gtk_widget_set_halign ((GtkWidget*) label, GTK_ALIGN_START);
+#line 194 "../src/contacts-contact-list.vala"
+       g_object_set ((GtkWidget*) label, "margin", 3, NULL);
+#line 195 "../src/contacts-contact-list.vala"
+       gtk_widget_set_margin_start ((GtkWidget*) label, 6);
+#line 196 "../src/contacts-contact-list.vala"
+       gtk_widget_set_margin_top ((GtkWidget*) label, 6);
+#line 197 "../src/contacts-contact-list.vala"
+       _tmp1_ = pango_attr_list_new ();
+#line 197 "../src/contacts-contact-list.vala"
+       attrs = _tmp1_;
+#line 198 "../src/contacts-contact-list.vala"
+       _tmp2_ = pango_attr_weight_new (PANGO_WEIGHT_BOLD);
+#line 198 "../src/contacts-contact-list.vala"
+       pango_attr_list_insert (attrs, _tmp2_);
+#line 199 "../src/contacts-contact-list.vala"
+       _tmp3_ = pango_attr_scale_new ((PANGO_SCALE_SMALL + PANGO_SCALE_MEDIUM) / 2.0);
+#line 199 "../src/contacts-contact-list.vala"
+       pango_attr_list_insert (attrs, _tmp3_);
+#line 200 "../src/contacts-contact-list.vala"
+       _tmp4_ = pango_attr_foreground_alpha_new ((guint16) 30000);
+#line 200 "../src/contacts-contact-list.vala"
+       pango_attr_list_insert (attrs, _tmp4_);
+#line 201 "../src/contacts-contact-list.vala"
+       gtk_label_set_attributes (label, attrs);
+#line 202 "../src/contacts-contact-list.vala"
+       result = label;
+#line 202 "../src/contacts-contact-list.vala"
+       _pango_attr_list_unref0 (attrs);
+#line 202 "../src/contacts-contact-list.vala"
+       return result;
+#line 1091 "contacts-contact-list.c"
+}
+
+static Block16Data*
+block16_data_ref (Block16Data* _data16_)
+{
+#line 207 "../src/contacts-contact-list.vala"
+       g_atomic_int_inc (&_data16_->_ref_count_);
+#line 207 "../src/contacts-contact-list.vala"
+       return _data16_;
+#line 1101 "contacts-contact-list.c"
+}
+
+static void
+block16_data_unref (void * _userdata_)
+{
+       Block16Data* _data16_;
+       _data16_ = (Block16Data*) _userdata_;
+#line 207 "../src/contacts-contact-list.vala"
+       if (g_atomic_int_dec_and_test (&_data16_->_ref_count_)) {
+#line 1111 "contacts-contact-list.c"
+               ContactsContactList* self;
+#line 207 "../src/contacts-contact-list.vala"
+               self = _data16_->self;
+#line 207 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (_data16_->row);
+#line 207 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (self);
+#line 207 "../src/contacts-contact-list.vala"
+               g_slice_free (Block16Data, _data16_);
+#line 1121 "contacts-contact-list.c"
+       }
+}
+
+static void
+___lambda7_ (Block16Data* _data16_)
+{
+       ContactsContactList* self;
+       ContactsContactListContactDataRow* _tmp0_;
+#line 209 "../src/contacts-contact-list.vala"
+       self = _data16_->self;
+#line 209 "../src/contacts-contact-list.vala"
+       _tmp0_ = _data16_->row;
+#line 209 "../src/contacts-contact-list.vala"
+       contacts_contact_list_on_row_checkbox_toggled (self, _tmp0_);
+#line 1136 "contacts-contact-list.c"
+}
+
+static void
+____lambda7__gtk_toggle_button_toggled (GtkToggleButton* _sender,
+                                        gpointer self)
+{
+#line 209 "../src/contacts-contact-list.vala"
+       ___lambda7_ (self);
+#line 1145 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_contact_added_cb (ContactsContactList* self,
+                                        ContactsStore* store,
+                                        FolksIndividual* i)
+{
+#line 205 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 205 "../src/contacts-contact-list.vala"
+       g_return_if_fail (store != NULL);
+#line 205 "../src/contacts-contact-list.vala"
+       g_return_if_fail (i != NULL);
+#line 207 "../src/contacts-contact-list.vala"
+       if (!contacts_utils_is_ignorable (i)) {
+#line 1161 "contacts-contact-list.c"
+               Block16Data* _data16_;
+               ContactsContactListContactDataRow* _tmp0_;
+               ContactsContactListContactDataRow* _tmp1_;
+               GtkCheckButton* _tmp2_;
+               ContactsContactListContactDataRow* _tmp3_;
+               GtkCheckButton* _tmp4_;
+               ContactsUiState _tmp5_;
+               ContactsContactListContactDataRow* _tmp6_;
+#line 207 "../src/contacts-contact-list.vala"
+               _data16_ = g_slice_new0 (Block16Data);
+#line 207 "../src/contacts-contact-list.vala"
+               _data16_->_ref_count_ = 1;
+#line 207 "../src/contacts-contact-list.vala"
+               _data16_->self = g_object_ref (self);
+#line 208 "../src/contacts-contact-list.vala"
+               _tmp0_ = contacts_contact_list_contact_data_row_new (i);
+#line 208 "../src/contacts-contact-list.vala"
+               g_object_ref_sink (_tmp0_);
+#line 208 "../src/contacts-contact-list.vala"
+               _data16_->row = _tmp0_;
+#line 209 "../src/contacts-contact-list.vala"
+               _tmp1_ = _data16_->row;
+#line 209 "../src/contacts-contact-list.vala"
+               _tmp2_ = _tmp1_->selector_button;
+#line 209 "../src/contacts-contact-list.vala"
+               g_signal_connect_data ((GtkToggleButton*) _tmp2_, "toggled", (GCallback) 
____lambda7__gtk_toggle_button_toggled, block16_data_ref (_data16_), (GClosureNotify) block16_data_unref, 0);
+#line 210 "../src/contacts-contact-list.vala"
+               _tmp3_ = _data16_->row;
+#line 210 "../src/contacts-contact-list.vala"
+               _tmp4_ = _tmp3_->selector_button;
+#line 210 "../src/contacts-contact-list.vala"
+               _tmp5_ = self->priv->_state;
+#line 210 "../src/contacts-contact-list.vala"
+               gtk_widget_set_visible ((GtkWidget*) _tmp4_, _tmp5_ == CONTACTS_UI_STATE_SELECTING);
+#line 212 "../src/contacts-contact-list.vala"
+               _tmp6_ = _data16_->row;
+#line 212 "../src/contacts-contact-list.vala"
+               gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp6_);
+#line 207 "../src/contacts-contact-list.vala"
+               block16_data_unref (_data16_);
+#line 207 "../src/contacts-contact-list.vala"
+               _data16_ = NULL;
+#line 1204 "contacts-contact-list.c"
+       } else {
+               const gchar* _tmp7_;
+               const gchar* _tmp8_;
+#line 214 "../src/contacts-contact-list.vala"
+               _tmp7_ = folks_individual_get_id (i);
+#line 214 "../src/contacts-contact-list.vala"
+               _tmp8_ = _tmp7_;
+#line 214 "../src/contacts-contact-list.vala"
+               g_debug ("contacts-contact-list.vala:214: Contact %s was ignored", _tmp8_);
+#line 1214 "contacts-contact-list.c"
+       }
+}
+
+static void
+contacts_contact_list_on_row_checkbox_toggled (ContactsContactList* self,
+                                               ContactsContactListContactDataRow* row)
+{
+       gint _tmp0_ = 0;
+       GtkCheckButton* _tmp1_;
+       gboolean _tmp2_;
+       gboolean _tmp3_;
+       gboolean _tmp4_ = FALSE;
+       GtkCheckButton* _tmp5_;
+       gboolean _tmp6_;
+       gboolean _tmp7_;
+       gboolean _tmp8_ = FALSE;
+       GtkCheckButton* _tmp9_;
+       gboolean _tmp10_;
+       gboolean _tmp11_;
+#line 218 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 218 "../src/contacts-contact-list.vala"
+       g_return_if_fail (row != NULL);
+#line 219 "../src/contacts-contact-list.vala"
+       _tmp1_ = row->selector_button;
+#line 219 "../src/contacts-contact-list.vala"
+       _tmp2_ = gtk_toggle_button_get_active ((GtkToggleButton*) _tmp1_);
+#line 219 "../src/contacts-contact-list.vala"
+       _tmp3_ = _tmp2_;
+#line 219 "../src/contacts-contact-list.vala"
+       if (_tmp3_) {
+#line 219 "../src/contacts-contact-list.vala"
+               _tmp0_ = 1;
+#line 1248 "contacts-contact-list.c"
+       } else {
+#line 219 "../src/contacts-contact-list.vala"
+               _tmp0_ = -1;
+#line 1252 "contacts-contact-list.c"
+       }
+#line 219 "../src/contacts-contact-list.vala"
+       self->priv->nr_contacts_marked = self->priv->nr_contacts_marked + _tmp0_;
+#line 222 "../src/contacts-contact-list.vala"
+       _tmp5_ = row->selector_button;
+#line 222 "../src/contacts-contact-list.vala"
+       _tmp6_ = gtk_toggle_button_get_active ((GtkToggleButton*) _tmp5_);
+#line 222 "../src/contacts-contact-list.vala"
+       _tmp7_ = _tmp6_;
+#line 222 "../src/contacts-contact-list.vala"
+       if (_tmp7_) {
+#line 222 "../src/contacts-contact-list.vala"
+               _tmp4_ = self->priv->nr_contacts_marked == 1;
+#line 1266 "contacts-contact-list.c"
+       } else {
+#line 222 "../src/contacts-contact-list.vala"
+               _tmp4_ = FALSE;
+#line 1270 "contacts-contact-list.c"
+       }
+#line 222 "../src/contacts-contact-list.vala"
+       if (_tmp4_) {
+#line 223 "../src/contacts-contact-list.vala"
+               contacts_contact_list_set_state (self, CONTACTS_UI_STATE_SELECTING);
+#line 1276 "contacts-contact-list.c"
+       }
+#line 227 "../src/contacts-contact-list.vala"
+       _tmp9_ = row->selector_button;
+#line 227 "../src/contacts-contact-list.vala"
+       _tmp10_ = gtk_toggle_button_get_active ((GtkToggleButton*) _tmp9_);
+#line 227 "../src/contacts-contact-list.vala"
+       _tmp11_ = _tmp10_;
+#line 227 "../src/contacts-contact-list.vala"
+       if (!_tmp11_) {
+#line 227 "../src/contacts-contact-list.vala"
+               _tmp8_ = self->priv->nr_contacts_marked == 0;
+#line 1288 "contacts-contact-list.c"
+       } else {
+#line 227 "../src/contacts-contact-list.vala"
+               _tmp8_ = FALSE;
+#line 1292 "contacts-contact-list.c"
+       }
+#line 227 "../src/contacts-contact-list.vala"
+       if (_tmp8_) {
+#line 228 "../src/contacts-contact-list.vala"
+               contacts_contact_list_set_state (self, CONTACTS_UI_STATE_SHOWING);
+#line 1298 "contacts-contact-list.c"
+       }
+#line 230 "../src/contacts-contact-list.vala"
+       g_signal_emit (self, contacts_contact_list_signals[CONTACTS_CONTACT_LIST_CONTACTS_MARKED_SIGNAL], 0, 
self->priv->nr_contacts_marked);
+#line 1302 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_contact_removed_cb (ContactsContactList* self,
+                                          ContactsStore* store,
+                                          FolksIndividual* i)
+{
+       ContactsContactListContactDataRow* row = NULL;
+       ContactsContactListContactDataRow* _tmp0_;
+       ContactsContactListContactDataRow* _tmp1_;
+#line 233 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 233 "../src/contacts-contact-list.vala"
+       g_return_if_fail (store != NULL);
+#line 233 "../src/contacts-contact-list.vala"
+       g_return_if_fail (i != NULL);
+#line 234 "../src/contacts-contact-list.vala"
+       _tmp0_ = contacts_contact_list_find_row_for_contact (self, i);
+#line 234 "../src/contacts-contact-list.vala"
+       row = _tmp0_;
+#line 235 "../src/contacts-contact-list.vala"
+       _tmp1_ = row;
+#line 235 "../src/contacts-contact-list.vala"
+       if (_tmp1_ != NULL) {
+#line 1327 "contacts-contact-list.c"
+               ContactsContactListContactDataRow* _tmp2_;
+#line 236 "../src/contacts-contact-list.vala"
+               _tmp2_ = row;
+#line 236 "../src/contacts-contact-list.vala"
+               gtk_widget_destroy ((GtkWidget*) _tmp2_);
+#line 1333 "contacts-contact-list.c"
+       }
+#line 233 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (row);
+#line 1337 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_real_row_selected (GtkListBox* base,
+                                         GtkListBoxRow* row)
+{
+       ContactsContactList * self;
+       ContactsContactListContactDataRow* data = NULL;
+       ContactsContactListContactDataRow* _tmp0_;
+       ContactsContactListContactDataRow* _tmp1_;
+       FolksIndividual* _tmp2_ = NULL;
+       ContactsContactListContactDataRow* _tmp3_;
+       FolksIndividual* individual = NULL;
+       FolksIndividual* _tmp6_;
+#line 239 "../src/contacts-contact-list.vala"
+       self = (ContactsContactList*) base;
+#line 240 "../src/contacts-contact-list.vala"
+       _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (row, CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
ContactsContactListContactDataRow);
+#line 240 "../src/contacts-contact-list.vala"
+       _tmp1_ = _g_object_ref0 (CONTACTS_CONTACT_LIST_IS_CONTACT_DATA_ROW (_tmp0_) ? 
((ContactsContactListContactDataRow*) _tmp0_) : NULL);
+#line 240 "../src/contacts-contact-list.vala"
+       data = _tmp1_;
+#line 241 "../src/contacts-contact-list.vala"
+       _tmp3_ = data;
+#line 241 "../src/contacts-contact-list.vala"
+       if (_tmp3_ != NULL) {
+#line 1364 "contacts-contact-list.c"
+               ContactsContactListContactDataRow* _tmp4_;
+               FolksIndividual* _tmp5_;
+#line 241 "../src/contacts-contact-list.vala"
+               _tmp4_ = data;
+#line 241 "../src/contacts-contact-list.vala"
+               _tmp5_ = _tmp4_->individual;
+#line 241 "../src/contacts-contact-list.vala"
+               _tmp2_ = _tmp5_;
+#line 1373 "contacts-contact-list.c"
+       } else {
+#line 241 "../src/contacts-contact-list.vala"
+               _tmp2_ = NULL;
+#line 1377 "contacts-contact-list.c"
+       }
+#line 241 "../src/contacts-contact-list.vala"
+       _tmp6_ = _g_object_ref0 (_tmp2_);
+#line 241 "../src/contacts-contact-list.vala"
+       individual = _tmp6_;
+#line 242 "../src/contacts-contact-list.vala"
+       g_signal_emit (self, contacts_contact_list_signals[CONTACTS_CONTACT_LIST_SELECTION_CHANGED_SIGNAL], 
0, individual);
+#line 239 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (individual);
+#line 239 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (data);
+#line 1389 "contacts-contact-list.c"
+}
+
+static gboolean
+contacts_contact_list_filter_row (ContactsContactList* self,
+                                  GtkListBoxRow* row)
+{
+       FolksIndividual* individual = NULL;
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       FolksQuery* _tmp2_;
+       gboolean result = FALSE;
+#line 249 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 249 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (row != NULL, FALSE);
+#line 250 "../src/contacts-contact-list.vala"
+       _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (row, CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
ContactsContactListContactDataRow)->individual;
+#line 250 "../src/contacts-contact-list.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 250 "../src/contacts-contact-list.vala"
+       individual = _tmp1_;
+#line 251 "../src/contacts-contact-list.vala"
+       _tmp2_ = self->priv->filter_query;
+#line 251 "../src/contacts-contact-list.vala"
+       result = folks_query_is_match (_tmp2_, individual) > ((guint) 0);
+#line 251 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (individual);
+#line 251 "../src/contacts-contact-list.vala"
+       return result;
+#line 1419 "contacts-contact-list.c"
+}
+
+void
+contacts_contact_list_select_contact (ContactsContactList* self,
+                                      FolksIndividual* individual)
+{
+       ContactsContactListContactDataRow* _tmp0_;
+       ContactsContactListContactDataRow* _tmp1_;
+#line 254 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 255 "../src/contacts-contact-list.vala"
+       if (individual == NULL) {
+#line 257 "../src/contacts-contact-list.vala"
+               gtk_list_box_select_row ((GtkListBox*) self, NULL);
+#line 258 "../src/contacts-contact-list.vala"
+               return;
+#line 1436 "contacts-contact-list.c"
+       }
+#line 261 "../src/contacts-contact-list.vala"
+       _tmp0_ = contacts_contact_list_find_row_for_contact (self, individual);
+#line 261 "../src/contacts-contact-list.vala"
+       _tmp1_ = _tmp0_;
+#line 261 "../src/contacts-contact-list.vala"
+       gtk_list_box_select_row ((GtkListBox*) self, (GtkListBoxRow*) _tmp1_);
+#line 261 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (_tmp1_);
+#line 1446 "contacts-contact-list.c"
+}
+
+void
+contacts_contact_list_hide_contact (ContactsContactList* self,
+                                    FolksIndividual* individual)
+{
+#line 264 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 265 "../src/contacts-contact-list.vala"
+       if (individual != NULL) {
+#line 1457 "contacts-contact-list.c"
+               ContactsContactListContactDataRow* _tmp0_;
+               ContactsContactListContactDataRow* _tmp1_;
+#line 266 "../src/contacts-contact-list.vala"
+               _tmp0_ = contacts_contact_list_find_row_for_contact (self, individual);
+#line 266 "../src/contacts-contact-list.vala"
+               _tmp1_ = _tmp0_;
+#line 266 "../src/contacts-contact-list.vala"
+               gtk_widget_hide ((GtkWidget*) _tmp1_);
+#line 266 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (_tmp1_);
+#line 1468 "contacts-contact-list.c"
+       }
+}
+
+static ContactsContactListContactDataRow*
+contacts_contact_list_find_row_for_contact (ContactsContactList* self,
+                                            FolksIndividual* individual)
+{
+       GList* _tmp0_;
+       ContactsContactListContactDataRow* result = NULL;
+#line 271 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 271 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 272 "../src/contacts-contact-list.vala"
+       _tmp0_ = gtk_container_get_children ((GtkContainer*) self);
+#line 1484 "contacts-contact-list.c"
+       {
+               GList* widget_collection = NULL;
+               GList* widget_it = NULL;
+#line 272 "../src/contacts-contact-list.vala"
+               widget_collection = _tmp0_;
+#line 272 "../src/contacts-contact-list.vala"
+               for (widget_it = widget_collection; widget_it != NULL; widget_it = widget_it->next) {
+#line 1492 "contacts-contact-list.c"
+                       GtkWidget* widget = NULL;
+#line 272 "../src/contacts-contact-list.vala"
+                       widget = (GtkWidget*) widget_it->data;
+#line 1496 "contacts-contact-list.c"
+                       {
+                               ContactsContactListContactDataRow* row = NULL;
+                               GtkWidget* _tmp1_;
+                               ContactsContactListContactDataRow* _tmp2_;
+                               ContactsContactListContactDataRow* _tmp3_;
+                               FolksIndividual* _tmp4_;
+#line 273 "../src/contacts-contact-list.vala"
+                               _tmp1_ = widget;
+#line 273 "../src/contacts-contact-list.vala"
+                               _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, 
CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, ContactsContactListContactDataRow));
+#line 273 "../src/contacts-contact-list.vala"
+                               row = _tmp2_;
+#line 274 "../src/contacts-contact-list.vala"
+                               _tmp3_ = row;
+#line 274 "../src/contacts-contact-list.vala"
+                               _tmp4_ = _tmp3_->individual;
+#line 274 "../src/contacts-contact-list.vala"
+                               if (_tmp4_ == individual) {
+#line 275 "../src/contacts-contact-list.vala"
+                                       result = row;
+#line 275 "../src/contacts-contact-list.vala"
+                                       (widget_collection == NULL) ? NULL : (widget_collection = 
(g_list_free (widget_collection), NULL));
+#line 275 "../src/contacts-contact-list.vala"
+                                       return result;
+#line 1521 "contacts-contact-list.c"
+                               }
+#line 272 "../src/contacts-contact-list.vala"
+                               _g_object_unref0 (row);
+#line 1525 "contacts-contact-list.c"
+                       }
+               }
+#line 272 "../src/contacts-contact-list.vala"
+               (widget_collection == NULL) ? NULL : (widget_collection = (g_list_free (widget_collection), 
NULL));
+#line 1530 "contacts-contact-list.c"
+       }
+#line 278 "../src/contacts-contact-list.vala"
+       result = NULL;
+#line 278 "../src/contacts-contact-list.vala"
+       return result;
+#line 1536 "contacts-contact-list.c"
+}
+
+GeeLinkedList*
+contacts_contact_list_get_marked_contacts (ContactsContactList* self)
+{
+       GeeLinkedList* cs = NULL;
+       GeeLinkedList* _tmp0_;
+       GList* _tmp1_;
+       GeeLinkedList* result = NULL;
+#line 281 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 282 "../src/contacts-contact-list.vala"
+       _tmp0_ = gee_linked_list_new (FOLKS_TYPE_INDIVIDUAL, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 
g_object_unref, NULL, NULL, NULL);
+#line 282 "../src/contacts-contact-list.vala"
+       cs = _tmp0_;
+#line 283 "../src/contacts-contact-list.vala"
+       _tmp1_ = gtk_container_get_children ((GtkContainer*) self);
+#line 1554 "contacts-contact-list.c"
+       {
+               GList* widget_collection = NULL;
+               GList* widget_it = NULL;
+#line 283 "../src/contacts-contact-list.vala"
+               widget_collection = _tmp1_;
+#line 283 "../src/contacts-contact-list.vala"
+               for (widget_it = widget_collection; widget_it != NULL; widget_it = widget_it->next) {
+#line 1562 "contacts-contact-list.c"
+                       GtkWidget* widget = NULL;
+#line 283 "../src/contacts-contact-list.vala"
+                       widget = (GtkWidget*) widget_it->data;
+#line 1566 "contacts-contact-list.c"
+                       {
+                               ContactsContactListContactDataRow* row = NULL;
+                               GtkWidget* _tmp2_;
+                               ContactsContactListContactDataRow* _tmp3_;
+                               ContactsContactListContactDataRow* _tmp4_;
+                               GtkCheckButton* _tmp5_;
+                               gboolean _tmp6_;
+                               gboolean _tmp7_;
+#line 284 "../src/contacts-contact-list.vala"
+                               _tmp2_ = widget;
+#line 284 "../src/contacts-contact-list.vala"
+                               _tmp3_ = _g_object_ref0 (CONTACTS_CONTACT_LIST_IS_CONTACT_DATA_ROW (_tmp2_) ? 
((ContactsContactListContactDataRow*) _tmp2_) : NULL);
+#line 284 "../src/contacts-contact-list.vala"
+                               row = _tmp3_;
+#line 285 "../src/contacts-contact-list.vala"
+                               _tmp4_ = row;
+#line 285 "../src/contacts-contact-list.vala"
+                               _tmp5_ = _tmp4_->selector_button;
+#line 285 "../src/contacts-contact-list.vala"
+                               _tmp6_ = gtk_toggle_button_get_active ((GtkToggleButton*) _tmp5_);
+#line 285 "../src/contacts-contact-list.vala"
+                               _tmp7_ = _tmp6_;
+#line 285 "../src/contacts-contact-list.vala"
+                               if (_tmp7_) {
+#line 1591 "contacts-contact-list.c"
+                                       GeeLinkedList* _tmp8_;
+                                       ContactsContactListContactDataRow* _tmp9_;
+                                       FolksIndividual* _tmp10_;
+#line 286 "../src/contacts-contact-list.vala"
+                                       _tmp8_ = cs;
+#line 286 "../src/contacts-contact-list.vala"
+                                       _tmp9_ = row;
+#line 286 "../src/contacts-contact-list.vala"
+                                       _tmp10_ = _tmp9_->individual;
+#line 286 "../src/contacts-contact-list.vala"
+                                       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp8_, 
_tmp10_);
+#line 1603 "contacts-contact-list.c"
+                               }
+#line 283 "../src/contacts-contact-list.vala"
+                               _g_object_unref0 (row);
+#line 1607 "contacts-contact-list.c"
+                       }
+               }
+#line 283 "../src/contacts-contact-list.vala"
+               (widget_collection == NULL) ? NULL : (widget_collection = (g_list_free (widget_collection), 
NULL));
+#line 1612 "contacts-contact-list.c"
+       }
+#line 288 "../src/contacts-contact-list.vala"
+       result = cs;
+#line 288 "../src/contacts-contact-list.vala"
+       return result;
+#line 1618 "contacts-contact-list.c"
+}
+
+GeeLinkedList*
+contacts_contact_list_get_marked_contacts_and_hide (ContactsContactList* self)
+{
+       GeeLinkedList* cs = NULL;
+       GeeLinkedList* _tmp0_;
+       GList* _tmp1_;
+       GeeLinkedList* result = NULL;
+#line 291 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 292 "../src/contacts-contact-list.vala"
+       _tmp0_ = gee_linked_list_new (FOLKS_TYPE_INDIVIDUAL, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 
g_object_unref, NULL, NULL, NULL);
+#line 292 "../src/contacts-contact-list.vala"
+       cs = _tmp0_;
+#line 293 "../src/contacts-contact-list.vala"
+       _tmp1_ = gtk_container_get_children ((GtkContainer*) self);
+#line 1636 "contacts-contact-list.c"
+       {
+               GList* widget_collection = NULL;
+               GList* widget_it = NULL;
+#line 293 "../src/contacts-contact-list.vala"
+               widget_collection = _tmp1_;
+#line 293 "../src/contacts-contact-list.vala"
+               for (widget_it = widget_collection; widget_it != NULL; widget_it = widget_it->next) {
+#line 1644 "contacts-contact-list.c"
+                       GtkWidget* widget = NULL;
+#line 293 "../src/contacts-contact-list.vala"
+                       widget = (GtkWidget*) widget_it->data;
+#line 1648 "contacts-contact-list.c"
+                       {
+                               ContactsContactListContactDataRow* row = NULL;
+                               GtkWidget* _tmp2_;
+                               ContactsContactListContactDataRow* _tmp3_;
+                               ContactsContactListContactDataRow* _tmp4_;
+                               GtkCheckButton* _tmp5_;
+                               gboolean _tmp6_;
+                               gboolean _tmp7_;
+#line 294 "../src/contacts-contact-list.vala"
+                               _tmp2_ = widget;
+#line 294 "../src/contacts-contact-list.vala"
+                               _tmp3_ = _g_object_ref0 (CONTACTS_CONTACT_LIST_IS_CONTACT_DATA_ROW (_tmp2_) ? 
((ContactsContactListContactDataRow*) _tmp2_) : NULL);
+#line 294 "../src/contacts-contact-list.vala"
+                               row = _tmp3_;
+#line 295 "../src/contacts-contact-list.vala"
+                               _tmp4_ = row;
+#line 295 "../src/contacts-contact-list.vala"
+                               _tmp5_ = _tmp4_->selector_button;
+#line 295 "../src/contacts-contact-list.vala"
+                               _tmp6_ = gtk_toggle_button_get_active ((GtkToggleButton*) _tmp5_);
+#line 295 "../src/contacts-contact-list.vala"
+                               _tmp7_ = _tmp6_;
+#line 295 "../src/contacts-contact-list.vala"
+                               if (_tmp7_) {
+#line 1673 "contacts-contact-list.c"
+                                       ContactsContactListContactDataRow* _tmp8_;
+                                       GeeLinkedList* _tmp9_;
+                                       ContactsContactListContactDataRow* _tmp10_;
+                                       FolksIndividual* _tmp11_;
+#line 296 "../src/contacts-contact-list.vala"
+                                       _tmp8_ = row;
+#line 296 "../src/contacts-contact-list.vala"
+                                       gtk_widget_set_visible ((GtkWidget*) _tmp8_, FALSE);
+#line 297 "../src/contacts-contact-list.vala"
+                                       _tmp9_ = cs;
+#line 297 "../src/contacts-contact-list.vala"
+                                       _tmp10_ = row;
+#line 297 "../src/contacts-contact-list.vala"
+                                       _tmp11_ = _tmp10_->individual;
+#line 297 "../src/contacts-contact-list.vala"
+                                       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp9_, 
_tmp11_);
+#line 1690 "contacts-contact-list.c"
+                               }
+#line 293 "../src/contacts-contact-list.vala"
+                               _g_object_unref0 (row);
+#line 1694 "contacts-contact-list.c"
+                       }
+               }
+#line 293 "../src/contacts-contact-list.vala"
+               (widget_collection == NULL) ? NULL : (widget_collection = (g_list_free (widget_collection), 
NULL));
+#line 1699 "contacts-contact-list.c"
+       }
+#line 300 "../src/contacts-contact-list.vala"
+       result = cs;
+#line 300 "../src/contacts-contact-list.vala"
+       return result;
+#line 1705 "contacts-contact-list.c"
+}
+
+static gboolean
+contacts_contact_list_real_button_press_event (GtkWidget* base,
+                                               GdkEventButton* event)
+{
+       ContactsContactList * self;
+       gboolean result = FALSE;
+#line 304 "../src/contacts-contact-list.vala"
+       self = (ContactsContactList*) base;
+#line 304 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (event != NULL, FALSE);
+#line 305 "../src/contacts-contact-list.vala"
+       GTK_WIDGET_CLASS (contacts_contact_list_parent_class)->button_press_event ((GtkWidget*) 
G_TYPE_CHECK_INSTANCE_CAST (self, gtk_list_box_get_type (), GtkListBox), event);
+#line 307 "../src/contacts-contact-list.vala"
+       if (event->button == ((guint) GDK_BUTTON_SECONDARY)) {
+#line 1722 "contacts-contact-list.c"
+               ContactsContactListContactDataRow* row = NULL;
+               GtkListBoxRow* _tmp0_;
+               ContactsContactListContactDataRow* _tmp1_;
+               ContactsContactListContactDataRow* _tmp2_;
+#line 308 "../src/contacts-contact-list.vala"
+               _tmp0_ = gtk_list_box_get_row_at_y ((GtkListBox*) self, (gint) round (event->y));
+#line 308 "../src/contacts-contact-list.vala"
+               _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, 
CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, ContactsContactListContactDataRow));
+#line 308 "../src/contacts-contact-list.vala"
+               row = _tmp1_;
+#line 309 "../src/contacts-contact-list.vala"
+               _tmp2_ = row;
+#line 309 "../src/contacts-contact-list.vala"
+               if (_tmp2_ != NULL) {
+#line 1737 "contacts-contact-list.c"
+                       ContactsContactListContactDataRow* _tmp3_;
+                       gboolean _tmp4_ = FALSE;
+                       ContactsUiState _tmp5_;
+                       ContactsContactListContactDataRow* _tmp10_;
+                       GtkCheckButton* _tmp11_;
+#line 310 "../src/contacts-contact-list.vala"
+                       _tmp3_ = row;
+#line 310 "../src/contacts-contact-list.vala"
+                       gtk_list_box_select_row ((GtkListBox*) self, (GtkListBoxRow*) _tmp3_);
+#line 311 "../src/contacts-contact-list.vala"
+                       _tmp5_ = self->priv->_state;
+#line 311 "../src/contacts-contact-list.vala"
+                       if (_tmp5_ != CONTACTS_UI_STATE_SELECTING) {
+#line 311 "../src/contacts-contact-list.vala"
+                               _tmp4_ = TRUE;
+#line 1753 "contacts-contact-list.c"
+                       } else {
+                               ContactsContactListContactDataRow* _tmp6_;
+                               GtkCheckButton* _tmp7_;
+                               gboolean _tmp8_;
+                               gboolean _tmp9_;
+#line 311 "../src/contacts-contact-list.vala"
+                               _tmp6_ = row;
+#line 311 "../src/contacts-contact-list.vala"
+                               _tmp7_ = _tmp6_->selector_button;
+#line 311 "../src/contacts-contact-list.vala"
+                               _tmp8_ = gtk_toggle_button_get_active ((GtkToggleButton*) _tmp7_);
+#line 311 "../src/contacts-contact-list.vala"
+                               _tmp9_ = _tmp8_;
+#line 311 "../src/contacts-contact-list.vala"
+                               _tmp4_ = !_tmp9_;
+#line 1769 "contacts-contact-list.c"
+                       }
+#line 311 "../src/contacts-contact-list.vala"
+                       _tmp10_ = row;
+#line 311 "../src/contacts-contact-list.vala"
+                       _tmp11_ = _tmp10_->selector_button;
+#line 311 "../src/contacts-contact-list.vala"
+                       gtk_toggle_button_set_active ((GtkToggleButton*) _tmp11_, _tmp4_);
+#line 1777 "contacts-contact-list.c"
+               }
+#line 307 "../src/contacts-contact-list.vala"
+               _g_object_unref0 (row);
+#line 1781 "contacts-contact-list.c"
+       }
+#line 315 "../src/contacts-contact-list.vala"
+       result = FALSE;
+#line 315 "../src/contacts-contact-list.vala"
+       return result;
+#line 1787 "contacts-contact-list.c"
+}
+
+ContactsUiState
+contacts_contact_list_get_state (ContactsContactList* self)
+{
+       ContactsUiState result;
+       ContactsUiState _tmp0_;
+#line 107 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 107 "../src/contacts-contact-list.vala"
+       _tmp0_ = self->priv->_state;
+#line 107 "../src/contacts-contact-list.vala"
+       result = _tmp0_;
+#line 107 "../src/contacts-contact-list.vala"
+       return result;
+#line 1803 "contacts-contact-list.c"
+}
+
+void
+contacts_contact_list_set_state (ContactsContactList* self,
+                                 ContactsUiState value)
+{
+#line 107 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 107 "../src/contacts-contact-list.vala"
+       if (contacts_contact_list_get_state (self) != value) {
+#line 107 "../src/contacts-contact-list.vala"
+               self->priv->_state = value;
+#line 107 "../src/contacts-contact-list.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_contact_list_properties[CONTACTS_CONTACT_LIST_STATE_PROPERTY]);
+#line 1818 "contacts-contact-list.c"
+       }
+}
+
+static inline gpointer
+contacts_contact_list_contact_data_row_get_instance_private (ContactsContactListContactDataRow* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsContactListContactDataRow_private_offset);
+}
+
+static void
+_contacts_contact_list_contact_data_row_on_contact_changed_g_object_notify (GObject* _sender,
+                                                                            GParamSpec* pspec,
+                                                                            gpointer self)
+{
+#line 40 "../src/contacts-contact-list.vala"
+       contacts_contact_list_contact_data_row_on_contact_changed ((ContactsContactListContactDataRow*) self, 
_sender, pspec);
+#line 1835 "contacts-contact-list.c"
+}
+
+static ContactsContactListContactDataRow*
+contacts_contact_list_contact_data_row_construct (GType object_type,
+                                                  FolksIndividual* i)
+{
+       ContactsContactListContactDataRow * self = NULL;
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       GtkStyleContext* _tmp2_;
+       GtkGrid* grid = NULL;
+       GtkGrid* _tmp3_;
+       FolksIndividual* _tmp4_;
+       ContactsAvatar* _tmp5_;
+       FolksIndividual* _tmp6_;
+       const gchar* _tmp7_;
+       const gchar* _tmp8_;
+       GtkLabel* _tmp9_;
+       GtkLabel* _tmp10_;
+       GtkLabel* _tmp11_;
+       GtkLabel* _tmp12_;
+       GtkLabel* _tmp13_;
+       GtkCheckButton* _tmp14_;
+       GtkCheckButton* _tmp15_;
+       GtkCheckButton* _tmp16_;
+       GtkCheckButton* _tmp17_;
+       GtkCheckButton* _tmp18_;
+       GtkCheckButton* _tmp19_;
+       ContactsAvatar* _tmp20_;
+       GtkLabel* _tmp21_;
+       GtkCheckButton* _tmp22_;
+#line 38 "../src/contacts-contact-list.vala"
+       g_return_val_if_fail (i != NULL, NULL);
+#line 38 "../src/contacts-contact-list.vala"
+       self = (ContactsContactListContactDataRow*) g_object_new (object_type, NULL);
+#line 39 "../src/contacts-contact-list.vala"
+       _tmp0_ = _g_object_ref0 (i);
+#line 39 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->individual);
+#line 39 "../src/contacts-contact-list.vala"
+       self->individual = _tmp0_;
+#line 40 "../src/contacts-contact-list.vala"
+       _tmp1_ = self->individual;
+#line 40 "../src/contacts-contact-list.vala"
+       g_signal_connect_object ((GObject*) _tmp1_, "notify", (GCallback) 
_contacts_contact_list_contact_data_row_on_contact_changed_g_object_notify, self, 0);
+#line 42 "../src/contacts-contact-list.vala"
+       _tmp2_ = gtk_widget_get_style_context ((GtkWidget*) self);
+#line 42 "../src/contacts-contact-list.vala"
+       gtk_style_context_add_class (_tmp2_, "contact-data-row");
+#line 44 "../src/contacts-contact-list.vala"
+       _tmp3_ = (GtkGrid*) gtk_grid_new ();
+#line 44 "../src/contacts-contact-list.vala"
+       g_object_ref_sink (_tmp3_);
+#line 44 "../src/contacts-contact-list.vala"
+       grid = _tmp3_;
+#line 45 "../src/contacts-contact-list.vala"
+       g_object_set ((GtkWidget*) grid, "margin", 3, NULL);
+#line 46 "../src/contacts-contact-list.vala"
+       gtk_widget_set_margin_start ((GtkWidget*) grid, 9);
+#line 47 "../src/contacts-contact-list.vala"
+       gtk_grid_set_column_spacing (grid, (guint) 10);
+#line 48 "../src/contacts-contact-list.vala"
+       _tmp4_ = self->individual;
+#line 48 "../src/contacts-contact-list.vala"
+       _tmp5_ = contacts_avatar_new (CONTACTS_CONTACT_LIST_CONTACT_DATA_ROW_LIST_AVATAR_SIZE, _tmp4_);
+#line 48 "../src/contacts-contact-list.vala"
+       g_object_ref_sink (_tmp5_);
+#line 48 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->avatar);
+#line 48 "../src/contacts-contact-list.vala"
+       self->priv->avatar = _tmp5_;
+#line 50 "../src/contacts-contact-list.vala"
+       _tmp6_ = self->individual;
+#line 50 "../src/contacts-contact-list.vala"
+       _tmp7_ = folks_individual_get_display_name (_tmp6_);
+#line 50 "../src/contacts-contact-list.vala"
+       _tmp8_ = _tmp7_;
+#line 50 "../src/contacts-contact-list.vala"
+       _tmp9_ = (GtkLabel*) gtk_label_new (_tmp8_);
+#line 50 "../src/contacts-contact-list.vala"
+       g_object_ref_sink (_tmp9_);
+#line 50 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->label);
+#line 50 "../src/contacts-contact-list.vala"
+       self->priv->label = _tmp9_;
+#line 51 "../src/contacts-contact-list.vala"
+       _tmp10_ = self->priv->label;
+#line 51 "../src/contacts-contact-list.vala"
+       gtk_label_set_ellipsize (_tmp10_, PANGO_ELLIPSIZE_END);
+#line 52 "../src/contacts-contact-list.vala"
+       _tmp11_ = self->priv->label;
+#line 52 "../src/contacts-contact-list.vala"
+       gtk_widget_set_valign ((GtkWidget*) _tmp11_, GTK_ALIGN_CENTER);
+#line 53 "../src/contacts-contact-list.vala"
+       _tmp12_ = self->priv->label;
+#line 53 "../src/contacts-contact-list.vala"
+       gtk_widget_set_halign ((GtkWidget*) _tmp12_, GTK_ALIGN_START);
+#line 55 "../src/contacts-contact-list.vala"
+       _tmp13_ = self->priv->label;
+#line 55 "../src/contacts-contact-list.vala"
+       gtk_label_set_xalign (_tmp13_, (gfloat) 0);
+#line 57 "../src/contacts-contact-list.vala"
+       _tmp14_ = (GtkCheckButton*) gtk_check_button_new ();
+#line 57 "../src/contacts-contact-list.vala"
+       g_object_ref_sink (_tmp14_);
+#line 57 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->selector_button);
+#line 57 "../src/contacts-contact-list.vala"
+       self->selector_button = _tmp14_;
+#line 58 "../src/contacts-contact-list.vala"
+       _tmp15_ = self->selector_button;
+#line 58 "../src/contacts-contact-list.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp15_, FALSE);
+#line 59 "../src/contacts-contact-list.vala"
+       _tmp16_ = self->selector_button;
+#line 59 "../src/contacts-contact-list.vala"
+       gtk_widget_set_valign ((GtkWidget*) _tmp16_, GTK_ALIGN_CENTER);
+#line 60 "../src/contacts-contact-list.vala"
+       _tmp17_ = self->selector_button;
+#line 60 "../src/contacts-contact-list.vala"
+       gtk_widget_set_halign ((GtkWidget*) _tmp17_, GTK_ALIGN_END);
+#line 61 "../src/contacts-contact-list.vala"
+       _tmp18_ = self->selector_button;
+#line 61 "../src/contacts-contact-list.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp18_, TRUE);
+#line 63 "../src/contacts-contact-list.vala"
+       _tmp19_ = self->selector_button;
+#line 63 "../src/contacts-contact-list.vala"
+       gtk_widget_set_margin_end ((GtkWidget*) _tmp19_, 12);
+#line 65 "../src/contacts-contact-list.vala"
+       _tmp20_ = self->priv->avatar;
+#line 65 "../src/contacts-contact-list.vala"
+       gtk_grid_attach (grid, (GtkWidget*) _tmp20_, 0, 0, 1, 1);
+#line 66 "../src/contacts-contact-list.vala"
+       _tmp21_ = self->priv->label;
+#line 66 "../src/contacts-contact-list.vala"
+       gtk_grid_attach (grid, (GtkWidget*) _tmp21_, 1, 0, 1, 1);
+#line 67 "../src/contacts-contact-list.vala"
+       _tmp22_ = self->selector_button;
+#line 67 "../src/contacts-contact-list.vala"
+       gtk_grid_attach (grid, (GtkWidget*) _tmp22_, 2, 0, 1, 1);
+#line 68 "../src/contacts-contact-list.vala"
+       gtk_container_add ((GtkContainer*) self, (GtkWidget*) grid);
+#line 69 "../src/contacts-contact-list.vala"
+       gtk_widget_show_all ((GtkWidget*) self);
+#line 38 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (grid);
+#line 38 "../src/contacts-contact-list.vala"
+       return self;
+#line 1985 "contacts-contact-list.c"
+}
+
+static ContactsContactListContactDataRow*
+contacts_contact_list_contact_data_row_new (FolksIndividual* i)
+{
+#line 38 "../src/contacts-contact-list.vala"
+       return contacts_contact_list_contact_data_row_construct (CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
i);
+#line 1993 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_contact_data_row_on_contact_changed (ContactsContactListContactDataRow* self,
+                                                           GObject* obj,
+                                                           GParamSpec* pspec)
+{
+       GtkLabel* _tmp0_;
+       FolksIndividual* _tmp1_;
+       const gchar* _tmp2_;
+       const gchar* _tmp3_;
+#line 72 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 72 "../src/contacts-contact-list.vala"
+       g_return_if_fail (obj != NULL);
+#line 72 "../src/contacts-contact-list.vala"
+       g_return_if_fail (pspec != NULL);
+#line 73 "../src/contacts-contact-list.vala"
+       _tmp0_ = self->priv->label;
+#line 73 "../src/contacts-contact-list.vala"
+       _tmp1_ = self->individual;
+#line 73 "../src/contacts-contact-list.vala"
+       _tmp2_ = folks_individual_get_display_name (_tmp1_);
+#line 73 "../src/contacts-contact-list.vala"
+       _tmp3_ = _tmp2_;
+#line 73 "../src/contacts-contact-list.vala"
+       gtk_label_set_text (_tmp0_, _tmp3_);
+#line 74 "../src/contacts-contact-list.vala"
+       gtk_list_box_row_changed ((GtkListBoxRow*) self);
+#line 2023 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_contact_data_row_expose_checkbox (ContactsContactListContactDataRow* self,
+                                                        gboolean expose)
+{
+       gboolean hovering = FALSE;
+       gboolean _tmp0_ = FALSE;
+       GtkCheckButton* _tmp1_;
+#line 78 "../src/contacts-contact-list.vala"
+       g_return_if_fail (self != NULL);
+#line 79 "../src/contacts-contact-list.vala"
+       self->priv->checkbox_exposed = expose;
+#line 81 "../src/contacts-contact-list.vala"
+       hovering = (gtk_widget_get_state_flags ((GtkWidget*) self) & GTK_STATE_FLAG_PRELIGHT) == 
GTK_STATE_FLAG_PRELIGHT;
+#line 82 "../src/contacts-contact-list.vala"
+       if (expose) {
+#line 82 "../src/contacts-contact-list.vala"
+               _tmp0_ = TRUE;
+#line 2043 "contacts-contact-list.c"
+       } else {
+#line 82 "../src/contacts-contact-list.vala"
+               _tmp0_ = hovering;
+#line 2047 "contacts-contact-list.c"
+       }
+#line 82 "../src/contacts-contact-list.vala"
+       _tmp1_ = self->selector_button;
+#line 82 "../src/contacts-contact-list.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp1_, _tmp0_);
+#line 2053 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_contact_data_row_real_state_flags_changed (GtkWidget* base,
+                                                                 GtkStateFlags previous_state)
+{
+       ContactsContactListContactDataRow * self;
+       gboolean hovering_now = FALSE;
+       gboolean was_hovering = FALSE;
+#line 87 "../src/contacts-contact-list.vala"
+       self = (ContactsContactListContactDataRow*) base;
+#line 88 "../src/contacts-contact-list.vala"
+       hovering_now = (gtk_widget_get_state_flags ((GtkWidget*) self) & GTK_STATE_FLAG_PRELIGHT) == 
GTK_STATE_FLAG_PRELIGHT;
+#line 89 "../src/contacts-contact-list.vala"
+       was_hovering = (previous_state & GTK_STATE_FLAG_PRELIGHT) == GTK_STATE_FLAG_PRELIGHT;
+#line 91 "../src/contacts-contact-list.vala"
+       if (hovering_now != was_hovering) {
+#line 2071 "contacts-contact-list.c"
+               gboolean _tmp0_ = FALSE;
+               GtkCheckButton* _tmp1_;
+#line 92 "../src/contacts-contact-list.vala"
+               if (self->priv->checkbox_exposed) {
+#line 92 "../src/contacts-contact-list.vala"
+                       _tmp0_ = TRUE;
+#line 2078 "contacts-contact-list.c"
+               } else {
+#line 92 "../src/contacts-contact-list.vala"
+                       _tmp0_ = hovering_now;
+#line 2082 "contacts-contact-list.c"
+               }
+#line 92 "../src/contacts-contact-list.vala"
+               _tmp1_ = self->selector_button;
+#line 92 "../src/contacts-contact-list.vala"
+               gtk_widget_set_visible ((GtkWidget*) _tmp1_, _tmp0_);
+#line 2088 "contacts-contact-list.c"
+       }
+}
+
+static void
+contacts_contact_list_contact_data_row_class_init (ContactsContactListContactDataRowClass * klass,
+                                                   gpointer klass_data)
+{
+#line 28 "../src/contacts-contact-list.vala"
+       contacts_contact_list_contact_data_row_parent_class = g_type_class_peek_parent (klass);
+#line 28 "../src/contacts-contact-list.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsContactListContactDataRow_private_offset);
+#line 28 "../src/contacts-contact-list.vala"
+       ((GtkWidgetClass *) klass)->state_flags_changed = (void (*) (GtkWidget*, GtkStateFlags)) 
contacts_contact_list_contact_data_row_real_state_flags_changed;
+#line 28 "../src/contacts-contact-list.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_contact_list_contact_data_row_finalize;
+#line 2104 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_contact_data_row_instance_init (ContactsContactListContactDataRow * self,
+                                                      gpointer klass)
+{
+#line 28 "../src/contacts-contact-list.vala"
+       self->priv = contacts_contact_list_contact_data_row_get_instance_private (self);
+#line 36 "../src/contacts-contact-list.vala"
+       self->priv->checkbox_exposed = FALSE;
+#line 2115 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_contact_data_row_finalize (GObject * obj)
+{
+       ContactsContactListContactDataRow * self;
+#line 28 "../src/contacts-contact-list.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_CONTACT_LIST_TYPE_CONTACT_DATA_ROW, 
ContactsContactListContactDataRow);
+#line 31 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->individual);
+#line 32 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->label);
+#line 33 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->avatar);
+#line 34 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->selector_button);
+#line 28 "../src/contacts-contact-list.vala"
+       G_OBJECT_CLASS (contacts_contact_list_contact_data_row_parent_class)->finalize (obj);
+#line 2134 "contacts-contact-list.c"
+}
+
+static GType
+contacts_contact_list_contact_data_row_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsContactListContactDataRowClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) 
contacts_contact_list_contact_data_row_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof 
(ContactsContactListContactDataRow), 0, (GInstanceInitFunc) 
contacts_contact_list_contact_data_row_instance_init, NULL };
+       GType contacts_contact_list_contact_data_row_type_id;
+       contacts_contact_list_contact_data_row_type_id = g_type_register_static (gtk_list_box_row_get_type 
(), "ContactsContactListContactDataRow", &g_define_type_info, 0);
+       ContactsContactListContactDataRow_private_offset = g_type_add_instance_private 
(contacts_contact_list_contact_data_row_type_id, sizeof (ContactsContactListContactDataRowPrivate));
+       return contacts_contact_list_contact_data_row_type_id;
+}
+
+static GType
+contacts_contact_list_contact_data_row_get_type (void)
+{
+       static volatile gsize contacts_contact_list_contact_data_row_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_list_contact_data_row_type_id__volatile)) {
+               GType contacts_contact_list_contact_data_row_type_id;
+               contacts_contact_list_contact_data_row_type_id = 
contacts_contact_list_contact_data_row_get_type_once ();
+               g_once_init_leave (&contacts_contact_list_contact_data_row_type_id__volatile, 
contacts_contact_list_contact_data_row_type_id);
+       }
+       return contacts_contact_list_contact_data_row_type_id__volatile;
+}
+
+static void
+contacts_contact_list_class_init (ContactsContactListClass * klass,
+                                  gpointer klass_data)
+{
+#line 27 "../src/contacts-contact-list.vala"
+       contacts_contact_list_parent_class = g_type_class_peek_parent (klass);
+#line 27 "../src/contacts-contact-list.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsContactList_private_offset);
+#line 27 "../src/contacts-contact-list.vala"
+       ((GtkListBoxClass *) klass)->row_selected = (void (*) (GtkListBox*, GtkListBoxRow*)) 
contacts_contact_list_real_row_selected;
+#line 27 "../src/contacts-contact-list.vala"
+       ((GtkWidgetClass *) klass)->button_press_event = (gboolean (*) (GtkWidget*, GdkEventButton*)) 
contacts_contact_list_real_button_press_event;
+#line 27 "../src/contacts-contact-list.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_contact_list_get_property;
+#line 27 "../src/contacts-contact-list.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_contact_list_set_property;
+#line 27 "../src/contacts-contact-list.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_contact_list_finalize;
+#line 27 "../src/contacts-contact-list.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_CONTACT_LIST_STATE_PROPERTY, 
contacts_contact_list_properties[CONTACTS_CONTACT_LIST_STATE_PROPERTY] = g_param_spec_enum ("state", "state", 
"state", CONTACTS_TYPE_UI_STATE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
+#line 27 "../src/contacts-contact-list.vala"
+       contacts_contact_list_signals[CONTACTS_CONTACT_LIST_SELECTION_CHANGED_SIGNAL] = g_signal_new 
("selection-changed", CONTACTS_TYPE_CONTACT_LIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, FOLKS_TYPE_INDIVIDUAL);
+#line 27 "../src/contacts-contact-list.vala"
+       contacts_contact_list_signals[CONTACTS_CONTACT_LIST_CONTACTS_MARKED_SIGNAL] = g_signal_new 
("contacts-marked", CONTACTS_TYPE_CONTACT_LIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
+#line 2183 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_instance_init (ContactsContactList * self,
+                                     gpointer klass)
+{
+#line 27 "../src/contacts-contact-list.vala"
+       self->priv = contacts_contact_list_get_instance_private (self);
+#line 99 "../src/contacts-contact-list.vala"
+       self->priv->nr_contacts_marked = 0;
+#line 105 "../src/contacts-contact-list.vala"
+       self->priv->sort_on_surname = FALSE;
+#line 2196 "contacts-contact-list.c"
+}
+
+static void
+contacts_contact_list_finalize (GObject * obj)
+{
+       ContactsContactList * self;
+#line 27 "../src/contacts-contact-list.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_CONTACT_LIST, ContactsContactList);
+#line 101 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->filter_query);
+#line 103 "../src/contacts-contact-list.vala"
+       _g_object_unref0 (self->priv->store);
+#line 27 "../src/contacts-contact-list.vala"
+       G_OBJECT_CLASS (contacts_contact_list_parent_class)->finalize (obj);
+#line 2211 "contacts-contact-list.c"
+}
+
+/**
+ * The ContactList is the actual list of {@link Contact}s that the user sees on
+ * the left. It is contained by the {@link ListPane}, which also provides other
+ * functionality, such as an action bar.
+ */
+static GType
+contacts_contact_list_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsContactListClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_contact_list_class_init, (GClassFinalizeFunc) NULL, 
NULL, sizeof (ContactsContactList), 0, (GInstanceInitFunc) contacts_contact_list_instance_init, NULL };
+       GType contacts_contact_list_type_id;
+       contacts_contact_list_type_id = g_type_register_static (gtk_list_box_get_type (), 
"ContactsContactList", &g_define_type_info, 0);
+       ContactsContactList_private_offset = g_type_add_instance_private (contacts_contact_list_type_id, 
sizeof (ContactsContactListPrivate));
+       return contacts_contact_list_type_id;
+}
+
+GType
+contacts_contact_list_get_type (void)
+{
+       static volatile gsize contacts_contact_list_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_list_type_id__volatile)) {
+               GType contacts_contact_list_type_id;
+               contacts_contact_list_type_id = contacts_contact_list_get_type_once ();
+               g_once_init_leave (&contacts_contact_list_type_id__volatile, contacts_contact_list_type_id);
+       }
+       return contacts_contact_list_type_id__volatile;
+}
+
+static void
+_vala_contacts_contact_list_get_property (GObject * object,
+                                          guint property_id,
+                                          GValue * value,
+                                          GParamSpec * pspec)
+{
+       ContactsContactList * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_CONTACT_LIST, ContactsContactList);
+#line 27 "../src/contacts-contact-list.vala"
+       switch (property_id) {
+#line 27 "../src/contacts-contact-list.vala"
+               case CONTACTS_CONTACT_LIST_STATE_PROPERTY:
+#line 27 "../src/contacts-contact-list.vala"
+               g_value_set_enum (value, contacts_contact_list_get_state (self));
+#line 27 "../src/contacts-contact-list.vala"
+               break;
+#line 2257 "contacts-contact-list.c"
+               default:
+#line 27 "../src/contacts-contact-list.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 27 "../src/contacts-contact-list.vala"
+               break;
+#line 2263 "contacts-contact-list.c"
+       }
+}
+
+static void
+_vala_contacts_contact_list_set_property (GObject * object,
+                                          guint property_id,
+                                          const GValue * value,
+                                          GParamSpec * pspec)
+{
+       ContactsContactList * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_CONTACT_LIST, ContactsContactList);
+#line 27 "../src/contacts-contact-list.vala"
+       switch (property_id) {
+#line 27 "../src/contacts-contact-list.vala"
+               case CONTACTS_CONTACT_LIST_STATE_PROPERTY:
+#line 27 "../src/contacts-contact-list.vala"
+               contacts_contact_list_set_state (self, g_value_get_enum (value));
+#line 27 "../src/contacts-contact-list.vala"
+               break;
+#line 2283 "contacts-contact-list.c"
+               default:
+#line 27 "../src/contacts-contact-list.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 27 "../src/contacts-contact-list.vala"
+               break;
+#line 2289 "contacts-contact-list.c"
+       }
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c
new file mode 100644
index 0000000..9511d3e
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-pane.c
@@ -0,0 +1,2732 @@
+/* contacts-contact-pane.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-contact-pane.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <folks/folks.h>
+#include "contacts.h"
+#include <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+#include <glib/gi18n-lib.h>
+
+#define CONTACTS_TYPE_CONTACT_PANE (contacts_contact_pane_get_type ())
+#define CONTACTS_CONTACT_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_PANE, 
ContactsContactPane))
+#define CONTACTS_CONTACT_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_PANE, 
ContactsContactPaneClass))
+#define CONTACTS_IS_CONTACT_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_PANE))
+#define CONTACTS_IS_CONTACT_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_PANE))
+#define CONTACTS_CONTACT_PANE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_PANE, 
ContactsContactPaneClass))
+
+typedef struct _ContactsContactPane ContactsContactPane;
+typedef struct _ContactsContactPaneClass ContactsContactPaneClass;
+typedef struct _ContactsContactPanePrivate ContactsContactPanePrivate;
+
+#define CONTACTS_TYPE_WINDOW (contacts_window_get_type ())
+#define CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_WINDOW, ContactsWindow))
+#define CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+#define CONTACTS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+
+typedef struct _ContactsWindow ContactsWindow;
+typedef struct _ContactsWindowClass ContactsWindowClass;
+
+#define CONTACTS_TYPE_CONTACT_FORM (contacts_contact_form_get_type ())
+#define CONTACTS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactForm))
+#define CONTACTS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+#define CONTACTS_IS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_IS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_CONTACT_FORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+
+typedef struct _ContactsContactForm ContactsContactForm;
+typedef struct _ContactsContactFormClass ContactsContactFormClass;
+
+#define CONTACTS_TYPE_CONTACT_SHEET (contacts_contact_sheet_get_type ())
+#define CONTACTS_CONTACT_SHEET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_SHEET, 
ContactsContactSheet))
+#define CONTACTS_CONTACT_SHEET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_SHEET, 
ContactsContactSheetClass))
+#define CONTACTS_IS_CONTACT_SHEET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_SHEET))
+#define CONTACTS_IS_CONTACT_SHEET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_CONTACT_SHEET))
+#define CONTACTS_CONTACT_SHEET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_CONTACT_SHEET, ContactsContactSheetClass))
+
+typedef struct _ContactsContactSheet ContactsContactSheet;
+typedef struct _ContactsContactSheetClass ContactsContactSheetClass;
+
+#define CONTACTS_TYPE_CONTACT_EDITOR (contacts_contact_editor_get_type ())
+#define CONTACTS_CONTACT_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_EDITOR, 
ContactsContactEditor))
+#define CONTACTS_CONTACT_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditorClass))
+#define CONTACTS_IS_CONTACT_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_EDITOR))
+#define CONTACTS_IS_CONTACT_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_CONTACT_EDITOR))
+#define CONTACTS_CONTACT_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_CONTACT_EDITOR, ContactsContactEditorClass))
+
+typedef struct _ContactsContactEditor ContactsContactEditor;
+typedef struct _ContactsContactEditorClass ContactsContactEditorClass;
+
+#define CONTACTS_TYPE_LINK_SUGGESTION_GRID (contacts_link_suggestion_grid_get_type ())
+#define CONTACTS_LINK_SUGGESTION_GRID(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID, ContactsLinkSuggestionGrid))
+#define CONTACTS_LINK_SUGGESTION_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID, ContactsLinkSuggestionGridClass))
+#define CONTACTS_IS_LINK_SUGGESTION_GRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID))
+#define CONTACTS_IS_LINK_SUGGESTION_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID))
+#define CONTACTS_LINK_SUGGESTION_GRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID, ContactsLinkSuggestionGridClass))
+
+typedef struct _ContactsLinkSuggestionGrid ContactsLinkSuggestionGrid;
+typedef struct _ContactsLinkSuggestionGridClass ContactsLinkSuggestionGridClass;
+enum  {
+       CONTACTS_CONTACT_PANE_0_PROPERTY,
+       CONTACTS_CONTACT_PANE_NUM_PROPERTIES
+};
+static GParamSpec* contacts_contact_pane_properties[CONTACTS_CONTACT_PANE_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+typedef struct _Block17Data Block17Data;
+typedef struct _Block18Data Block18Data;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define CONTACTS_TYPE_LINK_OPERATION (contacts_link_operation_get_type ())
+#define CONTACTS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LINK_OPERATION, 
ContactsLinkOperation))
+#define CONTACTS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+#define CONTACTS_IS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_IS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_LINK_OPERATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+
+typedef struct _ContactsLinkOperation ContactsLinkOperation;
+typedef struct _ContactsLinkOperationClass ContactsLinkOperationClass;
+typedef struct _ContactsContactFormPrivate ContactsContactFormPrivate;
+typedef struct _ContactsContactEditorPrivate ContactsContactEditorPrivate;
+
+#define CONTACTS_TYPE_LINKED_PERSONAS_DIALOG (contacts_linked_personas_dialog_get_type ())
+#define CONTACTS_LINKED_PERSONAS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, ContactsLinkedPersonasDialog))
+#define CONTACTS_LINKED_PERSONAS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, ContactsLinkedPersonasDialogClass))
+#define CONTACTS_IS_LINKED_PERSONAS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG))
+#define CONTACTS_IS_LINKED_PERSONAS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG))
+#define CONTACTS_LINKED_PERSONAS_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, ContactsLinkedPersonasDialogClass))
+
+typedef struct _ContactsLinkedPersonasDialog ContactsLinkedPersonasDialog;
+typedef struct _ContactsLinkedPersonasDialogClass ContactsLinkedPersonasDialogClass;
+typedef struct _ContactsLinkedPersonasDialogPrivate ContactsLinkedPersonasDialogPrivate;
+
+#define CONTACTS_CONTACT_EDITOR_TYPE_PROPERTY_DATA (contacts_contact_editor_property_data_get_type ())
+typedef struct _ContactsContactEditorPropertyData ContactsContactEditorPropertyData;
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _ContactsContactPaneSaveEditorChangesData ContactsContactPaneSaveEditorChangesData;
+#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
+typedef struct _ContactsContactPaneCreateContactData ContactsContactPaneCreateContactData;
+
+#define CONTACTS_TYPE_IN_APP_NOTIFICATION (contacts_in_app_notification_get_type ())
+#define CONTACTS_IN_APP_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotification))
+#define CONTACTS_IN_APP_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotificationClass))
+#define CONTACTS_IS_IN_APP_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION))
+#define CONTACTS_IS_IN_APP_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_IN_APP_NOTIFICATION))
+#define CONTACTS_IN_APP_NOTIFICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotificationClass))
+
+typedef struct _ContactsInAppNotification ContactsInAppNotification;
+typedef struct _ContactsInAppNotificationClass ContactsInAppNotificationClass;
+enum  {
+       CONTACTS_CONTACT_PANE_CONTACTS_LINKED_SIGNAL,
+       CONTACTS_CONTACT_PANE_WILL_DELETE_SIGNAL,
+       CONTACTS_CONTACT_PANE_DISPLAY_NAME_CHANGED_SIGNAL,
+       CONTACTS_CONTACT_PANE_NUM_SIGNALS
+};
+static guint contacts_contact_pane_signals[CONTACTS_CONTACT_PANE_NUM_SIGNALS] = {0};
+#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, 
__LINE__, G_STRFUNC, msg);
+#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, 
G_STRFUNC, msg); return; }
+#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning 
(G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
+#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, 
__LINE__, G_STRFUNC, msg);
+
+struct _ContactsContactPane {
+       GtkStack parent_instance;
+       ContactsContactPanePrivate * priv;
+       FolksIndividual* individual;
+       gboolean on_edit_mode;
+};
+
+struct _ContactsContactPaneClass {
+       GtkStackClass parent_class;
+};
+
+struct _ContactsContactPanePrivate {
+       ContactsWindow* parent_window;
+       ContactsStore* store;
+       GtkGrid* none_selected_page;
+       GtkContainer* contact_sheet_page;
+       ContactsContactSheet* sheet;
+       GtkBox* contact_editor_page;
+       ContactsContactEditor* editor;
+       GSimpleActionGroup* edit_contact_actions;
+       ContactsLinkSuggestionGrid* suggestion_grid;
+};
+
+struct _Block17Data {
+       int _ref_count_;
+       ContactsContactPane* self;
+       FolksIndividual* i;
+};
+
+struct _Block18Data {
+       int _ref_count_;
+       Block17Data * _data17_;
+       gchar* linked_contact;
+};
+
+struct _ContactsContactForm {
+       GtkGrid parent_instance;
+       ContactsContactFormPrivate * priv;
+       FolksIndividual* individual;
+       ContactsStore* store;
+       GtkGrid* container_grid;
+       gint last_row;
+};
+
+struct _ContactsContactFormClass {
+       GtkGridClass parent_class;
+};
+
+struct _ContactsContactEditor {
+       ContactsContactForm parent_instance;
+       ContactsContactEditorPrivate * priv;
+       GtkButton* linked_button;
+       GtkButton* remove_button;
+};
+
+struct _ContactsContactEditorClass {
+       ContactsContactFormClass parent_class;
+};
+
+struct _ContactsLinkedPersonasDialog {
+       GtkDialog parent_instance;
+       ContactsLinkedPersonasDialogPrivate * priv;
+       gboolean any_unlinked;
+};
+
+struct _ContactsLinkedPersonasDialogClass {
+       GtkDialogClass parent_class;
+};
+
+struct _ContactsContactEditorPropertyData {
+       FolksPersona* persona;
+       GValue value;
+};
+
+struct _ContactsContactPaneSaveEditorChangesData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsContactPane* self;
+       GeeIterator* _prop_it;
+       ContactsContactEditor* _tmp0_;
+       GeeHashMap* _tmp1_;
+       GeeHashMap* _tmp2_;
+       GeeSet* _tmp3_;
+       GeeSet* _tmp4_;
+       GeeSet* _tmp5_;
+       GeeIterator* _tmp6_;
+       GeeIterator* _tmp7_;
+       GeeIterator* _tmp8_;
+       GeeMapEntry* prop;
+       GeeIterator* _tmp9_;
+       gpointer _tmp10_;
+       GeeMapEntry* _tmp11_;
+       gconstpointer _tmp12_;
+       ContactsContactEditorPropertyData* _tmp13_;
+       FolksPersona* _tmp14_;
+       GeeMapEntry* _tmp15_;
+       gconstpointer _tmp16_;
+       const gchar* _tmp17_;
+       GeeMapEntry* _tmp18_;
+       gconstpointer _tmp19_;
+       ContactsContactEditorPropertyData* _tmp20_;
+       GValue _tmp21_;
+       GError* e;
+       GError* _tmp22_;
+       const gchar* _tmp23_;
+       ContactsContactEditor* _tmp24_;
+       GValue v;
+       ContactsContactEditor* _tmp25_;
+       GValue _tmp26_;
+       FolksIndividual* _tmp27_;
+       GValue _tmp28_;
+       const gchar* _tmp29_;
+       GError* _vala1_e;
+       GError* _tmp30_;
+       const gchar* _tmp31_;
+       ContactsContactEditor* _tmp32_;
+       GValue _vala1_v;
+       ContactsContactEditor* _tmp33_;
+       GValue _tmp34_;
+       FolksIndividual* _tmp35_;
+       GValue _tmp36_;
+       GError* _vala2_e;
+       GError* _tmp37_;
+       const gchar* _tmp38_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsContactPaneCreateContactData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsContactPane* self;
+       GHashTable* details;
+       GHashFunc _tmp0_;
+       GEqualFunc _tmp1_;
+       GHashTable* _tmp2_;
+       ContactsContactEditor* _tmp3_;
+       GHashTable* _tmp4_;
+       gchar* _tmp5_;
+       ContactsContactEditor* _tmp6_;
+       GValue _tmp7_;
+       GValue _tmp8_;
+       GValue* _tmp9_;
+       ContactsContactEditor* _tmp10_;
+       GHashTable* _tmp11_;
+       gchar* _tmp12_;
+       ContactsContactEditor* _tmp13_;
+       GValue _tmp14_;
+       GValue _tmp15_;
+       GValue* _tmp16_;
+       GeeIterator* _prop_it;
+       ContactsContactEditor* _tmp17_;
+       GeeHashMap* _tmp18_;
+       GeeHashMap* _tmp19_;
+       GeeSet* _tmp20_;
+       GeeSet* _tmp21_;
+       GeeSet* _tmp22_;
+       GeeIterator* _tmp23_;
+       GeeIterator* _tmp24_;
+       GeeIterator* _tmp25_;
+       GeeMapEntry* prop;
+       GeeIterator* _tmp26_;
+       gpointer _tmp27_;
+       GHashTable* _tmp28_;
+       GeeMapEntry* _tmp29_;
+       gconstpointer _tmp30_;
+       const gchar* _tmp31_;
+       gchar* _tmp32_;
+       GeeMapEntry* _tmp33_;
+       gconstpointer _tmp34_;
+       ContactsContactEditorPropertyData* _tmp35_;
+       GValue _tmp36_;
+       GValue _tmp37_;
+       GValue* _tmp38_;
+       GHashTable* _tmp39_;
+       ContactsStore* _tmp40_;
+       FolksIndividualAggregator* _tmp41_;
+       FolksIndividualAggregator* _tmp42_;
+       FolksPersonaStore* _tmp43_;
+       FolksPersonaStore* _tmp44_;
+       ContactsFakePersona* fake_persona;
+       ContactsFakePersonaStore* _tmp45_;
+       ContactsFakePersonaStore* _tmp46_;
+       GHashTable* _tmp47_;
+       ContactsFakePersona* _tmp48_;
+       ContactsFakePersona* _tmp49_;
+       GeeHashSet* fake_personas;
+       GeeHashSet* _tmp50_;
+       GeeHashSet* _tmp51_;
+       ContactsFakePersona* _tmp52_;
+       FolksIndividual* fake_individual;
+       GeeHashSet* _tmp53_;
+       FolksIndividual* _tmp54_;
+       ContactsWindow* _tmp55_;
+       FolksIndividual* _tmp56_;
+       FolksPersonaStore* primary_store;
+       ContactsStore* _tmp57_;
+       FolksIndividualAggregator* _tmp58_;
+       FolksIndividualAggregator* _tmp59_;
+       FolksPersonaStore* _tmp60_;
+       FolksPersonaStore* _tmp61_;
+       FolksPersonaStore* _tmp62_;
+       FolksPersona* persona;
+       FolksPersona* _tmp63_;
+       FolksPersonaStore* _tmp64_;
+       GHashTable* _tmp65_;
+       FolksPersona* _tmp66_;
+       FolksPersona* _tmp67_;
+       GError* e;
+       GError* _tmp68_;
+       const gchar* _tmp69_;
+       gchar* _tmp70_;
+       gchar* _tmp71_;
+       ContactsWindow* _tmp72_;
+       FolksIndividual* individual;
+       FolksPersona* _tmp73_;
+       FolksIndividual* _tmp74_;
+       FolksIndividual* _tmp75_;
+       FolksIndividual* _tmp76_;
+       FolksIndividual* _tmp77_;
+       ContactsWindow* _tmp78_;
+       FolksIndividual* _tmp79_;
+       ContactsWindow* _tmp80_;
+       GError* _inner_error0_;
+};
+
+static gint ContactsContactPane_private_offset;
+static gpointer contacts_contact_pane_parent_class = NULL;
+
+#define PROFILE_SIZE 128
+GType contacts_contact_pane_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactPane, g_object_unref)
+GType contacts_window_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsWindow, g_object_unref)
+GType contacts_contact_form_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactForm, g_object_unref)
+GType contacts_contact_sheet_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactSheet, g_object_unref)
+GType contacts_contact_editor_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactEditor, g_object_unref)
+GType contacts_link_suggestion_grid_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkSuggestionGrid, g_object_unref)
+static void contacts_contact_pane_on_add_detail (ContactsContactPane* self,
+                                          GSimpleAction* action,
+                                          GVariant* parameter);
+static void _contacts_contact_pane_on_add_detail_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                            GVariant* parameter,
+                                                                            gpointer self);
+ContactsContactPane* contacts_contact_pane_new (ContactsWindow* parent_window,
+                                                ContactsStore* contacts_store);
+ContactsContactPane* contacts_contact_pane_construct (GType object_type,
+                                                      ContactsWindow* parent_window,
+                                                      ContactsStore* contacts_store);
+void contacts_contact_pane_add_suggestion (ContactsContactPane* self,
+                                           FolksIndividual* i);
+static Block17Data* block17_data_ref (Block17Data* _data17_);
+static void block17_data_unref (void * _userdata_);
+static void contacts_contact_pane_remove_suggestion_grid (ContactsContactPane* self);
+ContactsLinkSuggestionGrid* contacts_link_suggestion_grid_new (FolksIndividual* individual);
+ContactsLinkSuggestionGrid* contacts_link_suggestion_grid_construct (GType object_type,
+                                                                     FolksIndividual* individual);
+static void __lambda43_ (Block17Data* _data17_);
+static Block18Data* block18_data_ref (Block18Data* _data18_);
+static void block18_data_unref (void * _userdata_);
+void contacts_link_contacts (FolksIndividual* main,
+                             FolksIndividual* other,
+                             ContactsStore* contacts_store,
+                             GAsyncReadyCallback _callback_,
+                             gpointer _user_data_);
+GType contacts_link_operation_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkOperation, g_object_unref)
+ContactsLinkOperation* contacts_link_contacts_finish (GAsyncResult* _res_);
+static void __lambda44_ (Block18Data* _data18_,
+                  GObject* obj,
+                  GAsyncResult* _result_);
+static void ___lambda44__gasync_ready_callback (GObject* source_object,
+                                         GAsyncResult* res,
+                                         gpointer self);
+static void ___lambda43__contacts_link_suggestion_grid_suggestion_accepted (ContactsLinkSuggestionGrid* 
_sender,
+                                                                     gpointer self);
+static void __lambda45_ (Block17Data* _data17_);
+static void ___lambda45__contacts_link_suggestion_grid_suggestion_rejected (ContactsLinkSuggestionGrid* 
_sender,
+                                                                     gpointer self);
+void contacts_contact_pane_show_contact (ContactsContactPane* self,
+                                         FolksIndividual* individual);
+static void contacts_contact_pane_show_contact_sheet (ContactsContactPane* self);
+static void contacts_contact_pane_remove_contact_sheet (ContactsContactPane* self);
+ContactsContactSheet* contacts_contact_sheet_new (FolksIndividual* individual,
+                                                  ContactsStore* store);
+ContactsContactSheet* contacts_contact_sheet_construct (GType object_type,
+                                                        FolksIndividual* individual,
+                                                        ContactsStore* store);
+static void contacts_contact_pane_create_contact_editor (ContactsContactPane* self);
+static void contacts_contact_pane_remove_contact_editor (ContactsContactPane* self);
+ContactsContactEditor* contacts_contact_editor_new (FolksIndividual* individual,
+                                                    ContactsStore* store,
+                                                    GActionGroup* editor_actions);
+ContactsContactEditor* contacts_contact_editor_construct (GType object_type,
+                                                          FolksIndividual* individual,
+                                                          ContactsStore* store,
+                                                          GActionGroup* editor_actions);
+static void contacts_contact_pane_linked_accounts (ContactsContactPane* self);
+static void _contacts_contact_pane_linked_accounts_gtk_button_clicked (GtkButton* _sender,
+                                                                gpointer self);
+static void contacts_contact_pane_delete_contact (ContactsContactPane* self);
+static void _contacts_contact_pane_delete_contact_gtk_button_clicked (GtkButton* _sender,
+                                                               gpointer self);
+void contacts_contact_editor_add_new_row_for_property (ContactsContactEditor* self,
+                                                       FolksPersona* persona,
+                                                       const gchar* prop_name,
+                                                       const gchar* type);
+GType contacts_linked_personas_dialog_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkedPersonasDialog, g_object_unref)
+ContactsLinkedPersonasDialog* contacts_linked_personas_dialog_new (ContactsWindow* main_win,
+                                                                   ContactsStore* store,
+                                                                   FolksIndividual* individual);
+ContactsLinkedPersonasDialog* contacts_linked_personas_dialog_construct (GType object_type,
+                                                                         ContactsWindow* main_win,
+                                                                         ContactsStore* store,
+                                                                         FolksIndividual* individual);
+void contacts_contact_pane_stop_editing (ContactsContactPane* self,
+                                         gboolean drop_changes);
+void contacts_contact_pane_start_editing (ContactsContactPane* self);
+static void contacts_contact_pane_save_editor_changes (ContactsContactPane* self,
+                                                GAsyncReadyCallback _callback_,
+                                                gpointer _user_data_);
+static void contacts_contact_pane_save_editor_changes_finish (ContactsContactPane* self,
+                                                       GAsyncResult* _res_);
+static void contacts_contact_pane_save_editor_changes_data_free (gpointer _data);
+static gboolean contacts_contact_pane_save_editor_changes_co (ContactsContactPaneSaveEditorChangesData* 
_data_);
+GType contacts_contact_editor_property_data_get_type (void) G_GNUC_CONST;
+ContactsContactEditorPropertyData* contacts_contact_editor_property_data_dup (const 
ContactsContactEditorPropertyData* self);
+void contacts_contact_editor_property_data_free (ContactsContactEditorPropertyData* self);
+void contacts_contact_editor_property_data_copy (const ContactsContactEditorPropertyData* self,
+                                                 ContactsContactEditorPropertyData* dest);
+void contacts_contact_editor_property_data_destroy (ContactsContactEditorPropertyData* self);
+GeeHashMap* contacts_contact_editor_properties_changed (ContactsContactEditor* self);
+static void contacts_contact_pane_save_editor_changes_ready (GObject* source_object,
+                                                      GAsyncResult* _res_,
+                                                      gpointer _user_data_);
+static void contacts_contact_pane_show_message (ContactsContactPane* self,
+                                         const gchar* message);
+gboolean contacts_contact_editor_name_changed (ContactsContactEditor* self);
+void contacts_contact_editor_get_full_name_value (ContactsContactEditor* self,
+                                                  GValue* result);
+gboolean contacts_contact_editor_avatar_changed (ContactsContactEditor* self);
+void contacts_contact_editor_get_avatar_value (ContactsContactEditor* self,
+                                               GValue* result);
+void contacts_contact_pane_new_contact (ContactsContactPane* self);
+static void contacts_contact_pane_create_contact_data_free (gpointer _data);
+void contacts_contact_pane_create_contact (ContactsContactPane* self,
+                                           GAsyncReadyCallback _callback_,
+                                           gpointer _user_data_);
+void contacts_contact_pane_create_contact_finish (ContactsContactPane* self,
+                                                  GAsyncResult* _res_);
+static gboolean contacts_contact_pane_create_contact_co (ContactsContactPaneCreateContactData* _data_);
+static void _g_free0_ (gpointer var);
+static void _vala_GValue_free (GValue* self);
+static void __vala_GValue_free0_ (gpointer var);
+static GValue* _g_value_dup (GValue* self);
+static void contacts_contact_pane_show_message_dialog (ContactsContactPane* self,
+                                                const gchar* message);
+void contacts_window_set_shown_contact (ContactsWindow* self,
+                                        FolksIndividual* i);
+static void contacts_contact_pane_create_contact_ready (GObject* source_object,
+                                                 GAsyncResult* _res_,
+                                                 gpointer _user_data_);
+GType contacts_in_app_notification_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsInAppNotification, g_object_unref)
+ContactsInAppNotification* contacts_in_app_notification_new (const gchar* message,
+                                                             GtkButton* button);
+ContactsInAppNotification* contacts_in_app_notification_construct (GType object_type,
+                                                                   const gchar* message,
+                                                                   GtkButton* button);
+void contacts_in_app_notification_show (ContactsInAppNotification* self);
+void contacts_window_add_notification (ContactsWindow* self,
+                                       ContactsInAppNotification* notification);
+static void g_cclosure_user_marshal_VOID__STRING_STRING_OBJECT (GClosure * closure,
+                                                         GValue * return_value,
+                                                         guint n_param_values,
+                                                         const GValue * param_values,
+                                                         gpointer invocation_hint,
+                                                         gpointer marshal_data);
+static void contacts_contact_pane_finalize (GObject * obj);
+static GType contacts_contact_pane_get_type_once (void);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+
+static const GActionEntry CONTACTS_CONTACT_PANE_action_entries[11] = {{"add.email-addresses.home", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.email-addresses.work", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.phone-numbers.cell", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.phone-numbers.home", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.phone-numbers.work", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.urls", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.nickname", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.birthday", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.postal-addresses.home", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}, {"add.postal-addresses.work", 
_contacts_contact_pane_on
 _add_det
 ail_gsimple_action_activate_callback}, {"add.notes", 
_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback}};
+
+static inline gpointer
+contacts_contact_pane_get_instance_private (ContactsContactPane* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsContactPane_private_offset);
+}
+
+static void
+_contacts_contact_pane_on_add_detail_gsimple_action_activate_callback (GSimpleAction* action,
+                                                                       GVariant* parameter,
+                                                                       gpointer self)
+{
+#line 50 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_on_add_detail ((ContactsContactPane*) self, action, parameter);
+#line 565 "contacts-contact-pane.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 77 "../src/contacts-contact-pane.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 573 "contacts-contact-pane.c"
+}
+
+ContactsContactPane*
+contacts_contact_pane_construct (GType object_type,
+                                 ContactsWindow* parent_window,
+                                 ContactsStore* contacts_store)
+{
+       ContactsContactPane * self = NULL;
+       ContactsWindow* _tmp0_;
+       ContactsStore* _tmp1_;
+       GSimpleActionGroup* _tmp2_;
+#line 76 "../src/contacts-contact-pane.vala"
+       g_return_val_if_fail (parent_window != NULL, NULL);
+#line 76 "../src/contacts-contact-pane.vala"
+       g_return_val_if_fail (contacts_store != NULL, NULL);
+#line 76 "../src/contacts-contact-pane.vala"
+       self = (ContactsContactPane*) g_object_new (object_type, NULL);
+#line 77 "../src/contacts-contact-pane.vala"
+       _tmp0_ = _g_object_ref0 (parent_window);
+#line 77 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->parent_window);
+#line 77 "../src/contacts-contact-pane.vala"
+       self->priv->parent_window = _tmp0_;
+#line 78 "../src/contacts-contact-pane.vala"
+       _tmp1_ = _g_object_ref0 (contacts_store);
+#line 78 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->store);
+#line 78 "../src/contacts-contact-pane.vala"
+       self->priv->store = _tmp1_;
+#line 80 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->priv->edit_contact_actions;
+#line 80 "../src/contacts-contact-pane.vala"
+       g_action_map_add_action_entries ((GActionMap*) _tmp2_, CONTACTS_CONTACT_PANE_action_entries, (gint) 
G_N_ELEMENTS (CONTACTS_CONTACT_PANE_action_entries), self);
+#line 76 "../src/contacts-contact-pane.vala"
+       return self;
+#line 609 "contacts-contact-pane.c"
+}
+
+ContactsContactPane*
+contacts_contact_pane_new (ContactsWindow* parent_window,
+                           ContactsStore* contacts_store)
+{
+#line 76 "../src/contacts-contact-pane.vala"
+       return contacts_contact_pane_construct (CONTACTS_TYPE_CONTACT_PANE, parent_window, contacts_store);
+#line 618 "contacts-contact-pane.c"
+}
+
+static Block17Data*
+block17_data_ref (Block17Data* _data17_)
+{
+#line 83 "../src/contacts-contact-pane.vala"
+       g_atomic_int_inc (&_data17_->_ref_count_);
+#line 83 "../src/contacts-contact-pane.vala"
+       return _data17_;
+#line 628 "contacts-contact-pane.c"
+}
+
+static void
+block17_data_unref (void * _userdata_)
+{
+       Block17Data* _data17_;
+       _data17_ = (Block17Data*) _userdata_;
+#line 83 "../src/contacts-contact-pane.vala"
+       if (g_atomic_int_dec_and_test (&_data17_->_ref_count_)) {
+#line 638 "contacts-contact-pane.c"
+               ContactsContactPane* self;
+#line 83 "../src/contacts-contact-pane.vala"
+               self = _data17_->self;
+#line 83 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data17_->i);
+#line 83 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (self);
+#line 83 "../src/contacts-contact-pane.vala"
+               g_slice_free (Block17Data, _data17_);
+#line 648 "contacts-contact-pane.c"
+       }
+}
+
+static Block18Data*
+block18_data_ref (Block18Data* _data18_)
+{
+#line 90 "../src/contacts-contact-pane.vala"
+       g_atomic_int_inc (&_data18_->_ref_count_);
+#line 90 "../src/contacts-contact-pane.vala"
+       return _data18_;
+#line 659 "contacts-contact-pane.c"
+}
+
+static void
+block18_data_unref (void * _userdata_)
+{
+       Block18Data* _data18_;
+       _data18_ = (Block18Data*) _userdata_;
+#line 90 "../src/contacts-contact-pane.vala"
+       if (g_atomic_int_dec_and_test (&_data18_->_ref_count_)) {
+#line 669 "contacts-contact-pane.c"
+               ContactsContactPane* self;
+#line 90 "../src/contacts-contact-pane.vala"
+               self = _data18_->_data17_->self;
+#line 90 "../src/contacts-contact-pane.vala"
+               _g_free0 (_data18_->linked_contact);
+#line 90 "../src/contacts-contact-pane.vala"
+               block17_data_unref (_data18_->_data17_);
+#line 90 "../src/contacts-contact-pane.vala"
+               _data18_->_data17_ = NULL;
+#line 90 "../src/contacts-contact-pane.vala"
+               g_slice_free (Block18Data, _data18_);
+#line 681 "contacts-contact-pane.c"
+       }
+}
+
+static void
+__lambda44_ (Block18Data* _data18_,
+             GObject* obj,
+             GAsyncResult* _result_)
+{
+       Block17Data* _data17_;
+       ContactsContactPane* self;
+       ContactsLinkOperation* operation = NULL;
+       ContactsLinkOperation* _tmp0_;
+#line 92 "../src/contacts-contact-pane.vala"
+       _data17_ = _data18_->_data17_;
+#line 92 "../src/contacts-contact-pane.vala"
+       self = _data17_->self;
+#line 92 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (_result_ != NULL);
+#line 93 "../src/contacts-contact-pane.vala"
+       _tmp0_ = contacts_link_contacts_finish (_result_);
+#line 93 "../src/contacts-contact-pane.vala"
+       operation = _tmp0_;
+#line 94 "../src/contacts-contact-pane.vala"
+       g_signal_emit (self, contacts_contact_pane_signals[CONTACTS_CONTACT_PANE_CONTACTS_LINKED_SIGNAL], 0, 
NULL, _data18_->linked_contact, operation);
+#line 92 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (operation);
+#line 708 "contacts-contact-pane.c"
+}
+
+static void
+___lambda44__gasync_ready_callback (GObject* source_object,
+                                    GAsyncResult* res,
+                                    gpointer self)
+{
+#line 92 "../src/contacts-contact-pane.vala"
+       __lambda44_ (self, source_object, res);
+#line 92 "../src/contacts-contact-pane.vala"
+       block18_data_unref (self);
+#line 720 "contacts-contact-pane.c"
+}
+
+static void
+__lambda43_ (Block17Data* _data17_)
+{
+       ContactsContactPane* self;
+       Block18Data* _data18_;
+       FolksIndividual* _tmp0_;
+       const gchar* _tmp1_;
+       const gchar* _tmp2_;
+       gchar* _tmp3_;
+       FolksIndividual* _tmp4_;
+       ContactsStore* _tmp5_;
+#line 90 "../src/contacts-contact-pane.vala"
+       self = _data17_->self;
+#line 90 "../src/contacts-contact-pane.vala"
+       _data18_ = g_slice_new0 (Block18Data);
+#line 90 "../src/contacts-contact-pane.vala"
+       _data18_->_ref_count_ = 1;
+#line 90 "../src/contacts-contact-pane.vala"
+       _data18_->_data17_ = block17_data_ref (_data17_);
+#line 91 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->individual;
+#line 91 "../src/contacts-contact-pane.vala"
+       _tmp1_ = folks_individual_get_display_name (_tmp0_);
+#line 91 "../src/contacts-contact-pane.vala"
+       _tmp2_ = _tmp1_;
+#line 91 "../src/contacts-contact-pane.vala"
+       _tmp3_ = g_strdup (_tmp2_);
+#line 91 "../src/contacts-contact-pane.vala"
+       _data18_->linked_contact = _tmp3_;
+#line 92 "../src/contacts-contact-pane.vala"
+       _tmp4_ = self->individual;
+#line 92 "../src/contacts-contact-pane.vala"
+       _tmp5_ = self->priv->store;
+#line 92 "../src/contacts-contact-pane.vala"
+       contacts_link_contacts (_tmp4_, _data17_->i, _tmp5_, ___lambda44__gasync_ready_callback, 
block18_data_ref (_data18_));
+#line 96 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_suggestion_grid (self);
+#line 90 "../src/contacts-contact-pane.vala"
+       block18_data_unref (_data18_);
+#line 90 "../src/contacts-contact-pane.vala"
+       _data18_ = NULL;
+#line 764 "contacts-contact-pane.c"
+}
+
+static void
+___lambda43__contacts_link_suggestion_grid_suggestion_accepted (ContactsLinkSuggestionGrid* _sender,
+                                                                gpointer self)
+{
+#line 90 "../src/contacts-contact-pane.vala"
+       __lambda43_ (self);
+#line 773 "contacts-contact-pane.c"
+}
+
+static void
+__lambda45_ (Block17Data* _data17_)
+{
+       ContactsContactPane* self;
+       ContactsStore* _tmp0_;
+       FolksIndividual* _tmp1_;
+#line 99 "../src/contacts-contact-pane.vala"
+       self = _data17_->self;
+#line 101 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->store;
+#line 101 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->individual;
+#line 101 "../src/contacts-contact-pane.vala"
+       contacts_store_add_no_suggest_link (_tmp0_, _tmp1_, _data17_->i);
+#line 102 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_suggestion_grid (self);
+#line 792 "contacts-contact-pane.c"
+}
+
+static void
+___lambda45__contacts_link_suggestion_grid_suggestion_rejected (ContactsLinkSuggestionGrid* _sender,
+                                                                gpointer self)
+{
+#line 99 "../src/contacts-contact-pane.vala"
+       __lambda45_ (self);
+#line 801 "contacts-contact-pane.c"
+}
+
+void
+contacts_contact_pane_add_suggestion (ContactsContactPane* self,
+                                      FolksIndividual* i)
+{
+       Block17Data* _data17_;
+       FolksIndividual* _tmp0_;
+       GtkOverlay* parent_overlay = NULL;
+       GtkContainer* _tmp1_;
+       GtkOverlay* _tmp2_;
+       ContactsLinkSuggestionGrid* _tmp3_;
+       ContactsLinkSuggestionGrid* _tmp4_;
+       ContactsLinkSuggestionGrid* _tmp5_;
+       ContactsLinkSuggestionGrid* _tmp6_;
+#line 83 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 83 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (i != NULL);
+#line 83 "../src/contacts-contact-pane.vala"
+       _data17_ = g_slice_new0 (Block17Data);
+#line 83 "../src/contacts-contact-pane.vala"
+       _data17_->_ref_count_ = 1;
+#line 83 "../src/contacts-contact-pane.vala"
+       _data17_->self = g_object_ref (self);
+#line 83 "../src/contacts-contact-pane.vala"
+       _tmp0_ = _g_object_ref0 (i);
+#line 83 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data17_->i);
+#line 83 "../src/contacts-contact-pane.vala"
+       _data17_->i = _tmp0_;
+#line 84 "../src/contacts-contact-pane.vala"
+       _tmp1_ = gtk_widget_get_parent ((GtkWidget*) self);
+#line 84 "../src/contacts-contact-pane.vala"
+       _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, gtk_overlay_get_type ()) ? 
((GtkOverlay*) _tmp1_) : NULL);
+#line 84 "../src/contacts-contact-pane.vala"
+       parent_overlay = _tmp2_;
+#line 86 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_suggestion_grid (self);
+#line 87 "../src/contacts-contact-pane.vala"
+       _tmp3_ = contacts_link_suggestion_grid_new (_data17_->i);
+#line 87 "../src/contacts-contact-pane.vala"
+       g_object_ref_sink (_tmp3_);
+#line 87 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->suggestion_grid);
+#line 87 "../src/contacts-contact-pane.vala"
+       self->priv->suggestion_grid = _tmp3_;
+#line 88 "../src/contacts-contact-pane.vala"
+       _tmp4_ = self->priv->suggestion_grid;
+#line 88 "../src/contacts-contact-pane.vala"
+       gtk_overlay_add_overlay (parent_overlay, (GtkWidget*) _tmp4_);
+#line 90 "../src/contacts-contact-pane.vala"
+       _tmp5_ = self->priv->suggestion_grid;
+#line 90 "../src/contacts-contact-pane.vala"
+       g_signal_connect_data (_tmp5_, "suggestion-accepted", (GCallback) 
___lambda43__contacts_link_suggestion_grid_suggestion_accepted, block17_data_ref (_data17_), (GClosureNotify) 
block17_data_unref, 0);
+#line 99 "../src/contacts-contact-pane.vala"
+       _tmp6_ = self->priv->suggestion_grid;
+#line 99 "../src/contacts-contact-pane.vala"
+       g_signal_connect_data (_tmp6_, "suggestion-rejected", (GCallback) 
___lambda45__contacts_link_suggestion_grid_suggestion_rejected, block17_data_ref (_data17_), (GClosureNotify) 
block17_data_unref, 0);
+#line 83 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (parent_overlay);
+#line 83 "../src/contacts-contact-pane.vala"
+       block17_data_unref (_data17_);
+#line 83 "../src/contacts-contact-pane.vala"
+       _data17_ = NULL;
+#line 867 "contacts-contact-pane.c"
+}
+
+void
+contacts_contact_pane_show_contact (ContactsContactPane* self,
+                                    FolksIndividual* individual)
+{
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       FolksIndividual* _tmp2_;
+#line 106 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 107 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->individual;
+#line 107 "../src/contacts-contact-pane.vala"
+       if (_tmp0_ == individual) {
+#line 108 "../src/contacts-contact-pane.vala"
+               return;
+#line 885 "contacts-contact-pane.c"
+       }
+#line 110 "../src/contacts-contact-pane.vala"
+       _tmp1_ = _g_object_ref0 (individual);
+#line 110 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->individual);
+#line 110 "../src/contacts-contact-pane.vala"
+       self->individual = _tmp1_;
+#line 112 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->individual;
+#line 112 "../src/contacts-contact-pane.vala"
+       if (_tmp2_ != NULL) {
+#line 113 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_show_contact_sheet (self);
+#line 899 "contacts-contact-pane.c"
+       } else {
+               GtkGrid* _tmp3_;
+#line 115 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_remove_contact_sheet (self);
+#line 116 "../src/contacts-contact-pane.vala"
+               _tmp3_ = self->priv->none_selected_page;
+#line 116 "../src/contacts-contact-pane.vala"
+               gtk_stack_set_visible_child ((GtkStack*) self, (GtkWidget*) _tmp3_);
+#line 908 "contacts-contact-pane.c"
+       }
+}
+
+static void
+contacts_contact_pane_show_contact_sheet (ContactsContactPane* self)
+{
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       ContactsStore* _tmp2_;
+       ContactsContactSheet* _tmp3_;
+       GtkContainer* _tmp4_;
+       ContactsContactSheet* _tmp5_;
+       GtkContainer* _tmp6_;
+       GeeMap* matches = NULL;
+       ContactsStore* _tmp7_;
+       FolksIndividualAggregator* _tmp8_;
+       FolksIndividualAggregator* _tmp9_;
+       FolksIndividual* _tmp10_;
+       GeeMap* _tmp11_;
+#line 120 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 121 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->individual;
+#line 121 "../src/contacts-contact-pane.vala"
+       _vala_assert (_tmp0_ != NULL, "this.individual != null");
+#line 123 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_contact_sheet (self);
+#line 124 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->individual;
+#line 124 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->priv->store;
+#line 124 "../src/contacts-contact-pane.vala"
+       _tmp3_ = contacts_contact_sheet_new (_tmp1_, _tmp2_);
+#line 124 "../src/contacts-contact-pane.vala"
+       g_object_ref_sink (_tmp3_);
+#line 124 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->sheet);
+#line 124 "../src/contacts-contact-pane.vala"
+       self->priv->sheet = _tmp3_;
+#line 125 "../src/contacts-contact-pane.vala"
+       _tmp4_ = self->priv->contact_sheet_page;
+#line 125 "../src/contacts-contact-pane.vala"
+       _tmp5_ = self->priv->sheet;
+#line 125 "../src/contacts-contact-pane.vala"
+       gtk_container_add (_tmp4_, (GtkWidget*) _tmp5_);
+#line 126 "../src/contacts-contact-pane.vala"
+       _tmp6_ = self->priv->contact_sheet_page;
+#line 126 "../src/contacts-contact-pane.vala"
+       gtk_stack_set_visible_child ((GtkStack*) self, (GtkWidget*) _tmp6_);
+#line 128 "../src/contacts-contact-pane.vala"
+       _tmp7_ = self->priv->store;
+#line 128 "../src/contacts-contact-pane.vala"
+       _tmp8_ = contacts_store_get_aggregator (_tmp7_);
+#line 128 "../src/contacts-contact-pane.vala"
+       _tmp9_ = _tmp8_;
+#line 128 "../src/contacts-contact-pane.vala"
+       _tmp10_ = self->individual;
+#line 128 "../src/contacts-contact-pane.vala"
+       _tmp11_ = folks_individual_aggregator_get_potential_matches (_tmp9_, _tmp10_, 
FOLKS_MATCH_RESULT_HIGH);
+#line 128 "../src/contacts-contact-pane.vala"
+       matches = _tmp11_;
+#line 970 "contacts-contact-pane.c"
+       {
+               GeeIterator* _i_it = NULL;
+               GeeMap* _tmp12_;
+               GeeSet* _tmp13_;
+               GeeSet* _tmp14_;
+               GeeSet* _tmp15_;
+               GeeIterator* _tmp16_;
+               GeeIterator* _tmp17_;
+#line 129 "../src/contacts-contact-pane.vala"
+               _tmp12_ = matches;
+#line 129 "../src/contacts-contact-pane.vala"
+               _tmp13_ = gee_map_get_keys (_tmp12_);
+#line 129 "../src/contacts-contact-pane.vala"
+               _tmp14_ = _tmp13_;
+#line 129 "../src/contacts-contact-pane.vala"
+               _tmp15_ = _tmp14_;
+#line 129 "../src/contacts-contact-pane.vala"
+               _tmp16_ = gee_iterable_iterator ((GeeIterable*) _tmp15_);
+#line 129 "../src/contacts-contact-pane.vala"
+               _tmp17_ = _tmp16_;
+#line 129 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_tmp15_);
+#line 129 "../src/contacts-contact-pane.vala"
+               _i_it = _tmp17_;
+#line 129 "../src/contacts-contact-pane.vala"
+               while (TRUE) {
+#line 997 "contacts-contact-pane.c"
+                       GeeIterator* _tmp18_;
+                       FolksIndividual* i = NULL;
+                       GeeIterator* _tmp19_;
+                       gpointer _tmp20_;
+                       gboolean _tmp21_ = FALSE;
+                       FolksIndividual* _tmp22_;
+#line 129 "../src/contacts-contact-pane.vala"
+                       _tmp18_ = _i_it;
+#line 129 "../src/contacts-contact-pane.vala"
+                       if (!gee_iterator_next (_tmp18_)) {
+#line 129 "../src/contacts-contact-pane.vala"
+                               break;
+#line 1010 "contacts-contact-pane.c"
+                       }
+#line 129 "../src/contacts-contact-pane.vala"
+                       _tmp19_ = _i_it;
+#line 129 "../src/contacts-contact-pane.vala"
+                       _tmp20_ = gee_iterator_get (_tmp19_);
+#line 129 "../src/contacts-contact-pane.vala"
+                       i = (FolksIndividual*) _tmp20_;
+#line 130 "../src/contacts-contact-pane.vala"
+                       _tmp22_ = i;
+#line 130 "../src/contacts-contact-pane.vala"
+                       if (_tmp22_ != NULL) {
+#line 1022 "contacts-contact-pane.c"
+                               ContactsStore* _tmp23_;
+                               FolksIndividual* _tmp24_;
+                               FolksIndividual* _tmp25_;
+#line 130 "../src/contacts-contact-pane.vala"
+                               _tmp23_ = self->priv->store;
+#line 130 "../src/contacts-contact-pane.vala"
+                               _tmp24_ = self->individual;
+#line 130 "../src/contacts-contact-pane.vala"
+                               _tmp25_ = i;
+#line 130 "../src/contacts-contact-pane.vala"
+                               _tmp21_ = contacts_utils_suggest_link_to (_tmp23_, _tmp24_, _tmp25_);
+#line 1034 "contacts-contact-pane.c"
+                       } else {
+#line 130 "../src/contacts-contact-pane.vala"
+                               _tmp21_ = FALSE;
+#line 1038 "contacts-contact-pane.c"
+                       }
+#line 130 "../src/contacts-contact-pane.vala"
+                       if (_tmp21_) {
+#line 1042 "contacts-contact-pane.c"
+                               FolksIndividual* _tmp26_;
+#line 131 "../src/contacts-contact-pane.vala"
+                               _tmp26_ = i;
+#line 131 "../src/contacts-contact-pane.vala"
+                               contacts_contact_pane_add_suggestion (self, _tmp26_);
+#line 132 "../src/contacts-contact-pane.vala"
+                               _g_object_unref0 (i);
+#line 132 "../src/contacts-contact-pane.vala"
+                               break;
+#line 1052 "contacts-contact-pane.c"
+                       }
+#line 129 "../src/contacts-contact-pane.vala"
+                       _g_object_unref0 (i);
+#line 1056 "contacts-contact-pane.c"
+               }
+#line 129 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_i_it);
+#line 1060 "contacts-contact-pane.c"
+       }
+#line 120 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (matches);
+#line 1064 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_remove_contact_sheet (ContactsContactPane* self)
+{
+       ContactsContactSheet* _tmp0_;
+       GtkContainer* _tmp1_;
+       ContactsContactSheet* _tmp2_;
+       ContactsContactSheet* _tmp3_;
+#line 137 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 138 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->sheet;
+#line 138 "../src/contacts-contact-pane.vala"
+       if (_tmp0_ == NULL) {
+#line 139 "../src/contacts-contact-pane.vala"
+               return;
+#line 1082 "contacts-contact-pane.c"
+       }
+#line 142 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_suggestion_grid (self);
+#line 144 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->priv->contact_sheet_page;
+#line 144 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->priv->sheet;
+#line 144 "../src/contacts-contact-pane.vala"
+       gtk_container_remove (_tmp1_, (GtkWidget*) _tmp2_);
+#line 145 "../src/contacts-contact-pane.vala"
+       _tmp3_ = self->priv->sheet;
+#line 145 "../src/contacts-contact-pane.vala"
+       gtk_widget_destroy ((GtkWidget*) _tmp3_);
+#line 146 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->sheet);
+#line 146 "../src/contacts-contact-pane.vala"
+       self->priv->sheet = NULL;
+#line 1100 "contacts-contact-pane.c"
+}
+
+static void
+_contacts_contact_pane_linked_accounts_gtk_button_clicked (GtkButton* _sender,
+                                                           gpointer self)
+{
+#line 155 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_linked_accounts ((ContactsContactPane*) self);
+#line 1109 "contacts-contact-pane.c"
+}
+
+static void
+_contacts_contact_pane_delete_contact_gtk_button_clicked (GtkButton* _sender,
+                                                          gpointer self)
+{
+#line 156 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_delete_contact ((ContactsContactPane*) self);
+#line 1118 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_create_contact_editor (ContactsContactPane* self)
+{
+       ContactsContactEditor* _tmp0_;
+       FolksIndividual* _tmp1_;
+       ContactsStore* _tmp2_;
+       GSimpleActionGroup* _tmp3_;
+       ContactsContactEditor* _tmp4_;
+       ContactsContactEditor* _tmp5_;
+       GtkButton* _tmp6_;
+       ContactsContactEditor* _tmp7_;
+       GtkButton* _tmp8_;
+       GSimpleAction* birthday_action = NULL;
+       GSimpleActionGroup* _tmp9_;
+       GAction* _tmp10_;
+       GSimpleAction* _tmp11_;
+       ContactsContactEditor* _tmp12_;
+       GSimpleAction* nickname_action = NULL;
+       GSimpleActionGroup* _tmp13_;
+       GAction* _tmp14_;
+       GSimpleAction* _tmp15_;
+       ContactsContactEditor* _tmp16_;
+       GSimpleAction* notes_action = NULL;
+       GSimpleActionGroup* _tmp17_;
+       GAction* _tmp18_;
+       GSimpleAction* _tmp19_;
+       ContactsContactEditor* _tmp20_;
+       GtkBox* _tmp21_;
+       ContactsContactEditor* _tmp22_;
+#line 149 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 150 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->editor;
+#line 150 "../src/contacts-contact-pane.vala"
+       if (_tmp0_ != NULL) {
+#line 151 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_remove_contact_editor (self);
+#line 1158 "contacts-contact-pane.c"
+       }
+#line 153 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->individual;
+#line 153 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->priv->store;
+#line 153 "../src/contacts-contact-pane.vala"
+       _tmp3_ = self->priv->edit_contact_actions;
+#line 153 "../src/contacts-contact-pane.vala"
+       _tmp4_ = contacts_contact_editor_new (_tmp1_, _tmp2_, (GActionGroup*) _tmp3_);
+#line 153 "../src/contacts-contact-pane.vala"
+       g_object_ref_sink (_tmp4_);
+#line 153 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->editor);
+#line 153 "../src/contacts-contact-pane.vala"
+       self->priv->editor = _tmp4_;
+#line 155 "../src/contacts-contact-pane.vala"
+       _tmp5_ = self->priv->editor;
+#line 155 "../src/contacts-contact-pane.vala"
+       _tmp6_ = _tmp5_->linked_button;
+#line 155 "../src/contacts-contact-pane.vala"
+       g_signal_connect_object (_tmp6_, "clicked", (GCallback) 
_contacts_contact_pane_linked_accounts_gtk_button_clicked, self, 0);
+#line 156 "../src/contacts-contact-pane.vala"
+       _tmp7_ = self->priv->editor;
+#line 156 "../src/contacts-contact-pane.vala"
+       _tmp8_ = _tmp7_->remove_button;
+#line 156 "../src/contacts-contact-pane.vala"
+       g_signal_connect_object (_tmp8_, "clicked", (GCallback) 
_contacts_contact_pane_delete_contact_gtk_button_clicked, self, 0);
+#line 159 "../src/contacts-contact-pane.vala"
+       _tmp9_ = self->priv->edit_contact_actions;
+#line 159 "../src/contacts-contact-pane.vala"
+       _tmp10_ = g_action_map_lookup_action ((GActionMap*) _tmp9_, "add.birthday");
+#line 159 "../src/contacts-contact-pane.vala"
+       _tmp11_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, g_simple_action_get_type ()) ? 
((GSimpleAction*) _tmp10_) : NULL);
+#line 159 "../src/contacts-contact-pane.vala"
+       birthday_action = _tmp11_;
+#line 160 "../src/contacts-contact-pane.vala"
+       _tmp12_ = self->priv->editor;
+#line 160 "../src/contacts-contact-pane.vala"
+       g_object_bind_property_with_closures ((GObject*) _tmp12_, "has-birthday-row", (GObject*) 
birthday_action, "enabled", G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN, (GClosure*) ((NULL == NULL) ? 
NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : 
g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 163 "../src/contacts-contact-pane.vala"
+       _tmp13_ = self->priv->edit_contact_actions;
+#line 163 "../src/contacts-contact-pane.vala"
+       _tmp14_ = g_action_map_lookup_action ((GActionMap*) _tmp13_, "add.nickname");
+#line 163 "../src/contacts-contact-pane.vala"
+       _tmp15_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, g_simple_action_get_type ()) ? 
((GSimpleAction*) _tmp14_) : NULL);
+#line 163 "../src/contacts-contact-pane.vala"
+       nickname_action = _tmp15_;
+#line 164 "../src/contacts-contact-pane.vala"
+       _tmp16_ = self->priv->editor;
+#line 164 "../src/contacts-contact-pane.vala"
+       g_object_bind_property_with_closures ((GObject*) _tmp16_, "has-nickname-row", (GObject*) 
nickname_action, "enabled", G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN, (GClosure*) ((NULL == NULL) ? 
NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : 
g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 167 "../src/contacts-contact-pane.vala"
+       _tmp17_ = self->priv->edit_contact_actions;
+#line 167 "../src/contacts-contact-pane.vala"
+       _tmp18_ = g_action_map_lookup_action ((GActionMap*) _tmp17_, "add.notes");
+#line 167 "../src/contacts-contact-pane.vala"
+       _tmp19_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, g_simple_action_get_type ()) ? 
((GSimpleAction*) _tmp18_) : NULL);
+#line 167 "../src/contacts-contact-pane.vala"
+       notes_action = _tmp19_;
+#line 168 "../src/contacts-contact-pane.vala"
+       _tmp20_ = self->priv->editor;
+#line 168 "../src/contacts-contact-pane.vala"
+       g_object_bind_property_with_closures ((GObject*) _tmp20_, "has-notes-row", (GObject*) notes_action, 
"enabled", G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN, (GClosure*) ((NULL == NULL) ? NULL : 
g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : 
g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 171 "../src/contacts-contact-pane.vala"
+       _tmp21_ = self->priv->contact_editor_page;
+#line 171 "../src/contacts-contact-pane.vala"
+       _tmp22_ = self->priv->editor;
+#line 171 "../src/contacts-contact-pane.vala"
+       gtk_container_add ((GtkContainer*) _tmp21_, (GtkWidget*) _tmp22_);
+#line 149 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (notes_action);
+#line 149 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (nickname_action);
+#line 149 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (birthday_action);
+#line 1234 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_remove_contact_editor (ContactsContactPane* self)
+{
+       ContactsContactEditor* _tmp0_;
+       GtkBox* _tmp1_;
+       ContactsContactEditor* _tmp2_;
+#line 174 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 175 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->editor;
+#line 175 "../src/contacts-contact-pane.vala"
+       if (_tmp0_ == NULL) {
+#line 176 "../src/contacts-contact-pane.vala"
+               return;
+#line 1251 "contacts-contact-pane.c"
+       }
+#line 178 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->priv->contact_editor_page;
+#line 178 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->priv->editor;
+#line 178 "../src/contacts-contact-pane.vala"
+       gtk_container_remove ((GtkContainer*) _tmp1_, (GtkWidget*) _tmp2_);
+#line 179 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->editor);
+#line 179 "../src/contacts-contact-pane.vala"
+       self->priv->editor = NULL;
+#line 1263 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_on_add_detail (ContactsContactPane* self,
+                                     GSimpleAction* action,
+                                     GVariant* parameter)
+{
+       gchar** tok = NULL;
+       const gchar* _tmp0_;
+       const gchar* _tmp1_;
+       gchar** _tmp2_;
+       gchar** _tmp3_;
+       gint tok_length1;
+       gint _tok_size_;
+       gchar** _tmp4_;
+       gint _tmp4__length1;
+       const gchar* _tmp5_;
+#line 182 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 182 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (action != NULL);
+#line 183 "../src/contacts-contact-pane.vala"
+       _tmp0_ = g_action_get_name ((GAction*) action);
+#line 183 "../src/contacts-contact-pane.vala"
+       _tmp1_ = _tmp0_;
+#line 183 "../src/contacts-contact-pane.vala"
+       _tmp3_ = _tmp2_ = g_strsplit (_tmp1_, ".", 0);
+#line 183 "../src/contacts-contact-pane.vala"
+       tok = _tmp3_;
+#line 183 "../src/contacts-contact-pane.vala"
+       tok_length1 = _vala_array_length (_tmp2_);
+#line 183 "../src/contacts-contact-pane.vala"
+       _tok_size_ = tok_length1;
+#line 185 "../src/contacts-contact-pane.vala"
+       _tmp4_ = tok;
+#line 185 "../src/contacts-contact-pane.vala"
+       _tmp4__length1 = tok_length1;
+#line 185 "../src/contacts-contact-pane.vala"
+       _tmp5_ = _tmp4_[0];
+#line 185 "../src/contacts-contact-pane.vala"
+       if (g_strcmp0 (_tmp5_, "add") == 0) {
+#line 1305 "contacts-contact-pane.c"
+               gchar* _tmp6_ = NULL;
+               gchar** _tmp7_;
+               gint _tmp7__length1;
+               ContactsContactEditor* _tmp11_;
+               FolksIndividual* _tmp12_;
+               FolksPersona* _tmp13_;
+               FolksPersona* _tmp14_;
+               gchar** _tmp15_;
+               gint _tmp15__length1;
+               const gchar* _tmp16_;
+#line 188 "../src/contacts-contact-pane.vala"
+               _tmp7_ = tok;
+#line 188 "../src/contacts-contact-pane.vala"
+               _tmp7__length1 = tok_length1;
+#line 188 "../src/contacts-contact-pane.vala"
+               if (_tmp7__length1 > 2) {
+#line 1322 "contacts-contact-pane.c"
+                       gchar** _tmp8_;
+                       gint _tmp8__length1;
+                       const gchar* _tmp9_;
+                       gchar* _tmp10_;
+#line 188 "../src/contacts-contact-pane.vala"
+                       _tmp8_ = tok;
+#line 188 "../src/contacts-contact-pane.vala"
+                       _tmp8__length1 = tok_length1;
+#line 188 "../src/contacts-contact-pane.vala"
+                       _tmp9_ = _tmp8_[2];
+#line 188 "../src/contacts-contact-pane.vala"
+                       _tmp10_ = g_utf8_strup (_tmp9_, (gssize) -1);
+#line 188 "../src/contacts-contact-pane.vala"
+                       _g_free0 (_tmp6_);
+#line 188 "../src/contacts-contact-pane.vala"
+                       _tmp6_ = _tmp10_;
+#line 1339 "contacts-contact-pane.c"
+               } else {
+#line 188 "../src/contacts-contact-pane.vala"
+                       _g_free0 (_tmp6_);
+#line 188 "../src/contacts-contact-pane.vala"
+                       _tmp6_ = NULL;
+#line 1345 "contacts-contact-pane.c"
+               }
+#line 186 "../src/contacts-contact-pane.vala"
+               _tmp11_ = self->priv->editor;
+#line 186 "../src/contacts-contact-pane.vala"
+               _tmp12_ = self->individual;
+#line 186 "../src/contacts-contact-pane.vala"
+               _tmp13_ = contacts_utils_find_primary_persona (_tmp12_);
+#line 186 "../src/contacts-contact-pane.vala"
+               _tmp14_ = _tmp13_;
+#line 186 "../src/contacts-contact-pane.vala"
+               _tmp15_ = tok;
+#line 186 "../src/contacts-contact-pane.vala"
+               _tmp15__length1 = tok_length1;
+#line 186 "../src/contacts-contact-pane.vala"
+               _tmp16_ = _tmp15_[1];
+#line 186 "../src/contacts-contact-pane.vala"
+               contacts_contact_editor_add_new_row_for_property (_tmp11_, _tmp14_, _tmp16_, _tmp6_);
+#line 186 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_tmp14_);
+#line 185 "../src/contacts-contact-pane.vala"
+               _g_free0 (_tmp6_);
+#line 1367 "contacts-contact-pane.c"
+       }
+#line 182 "../src/contacts-contact-pane.vala"
+       tok = (_vala_array_free (tok, tok_length1, (GDestroyNotify) g_free), NULL);
+#line 1371 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_linked_accounts (ContactsContactPane* self)
+{
+       ContactsLinkedPersonasDialog* dialog = NULL;
+       ContactsWindow* _tmp0_;
+       ContactsStore* _tmp1_;
+       FolksIndividual* _tmp2_;
+       ContactsLinkedPersonasDialog* _tmp3_;
+       gboolean _tmp4_ = FALSE;
+       ContactsLinkedPersonasDialog* _tmp5_;
+       ContactsLinkedPersonasDialog* _tmp7_;
+#line 192 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 193 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->parent_window;
+#line 193 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->priv->store;
+#line 193 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->individual;
+#line 193 "../src/contacts-contact-pane.vala"
+       _tmp3_ = contacts_linked_personas_dialog_new (_tmp0_, _tmp1_, _tmp2_);
+#line 193 "../src/contacts-contact-pane.vala"
+       g_object_ref_sink (_tmp3_);
+#line 193 "../src/contacts-contact-pane.vala"
+       dialog = _tmp3_;
+#line 194 "../src/contacts-contact-pane.vala"
+       _tmp5_ = dialog;
+#line 194 "../src/contacts-contact-pane.vala"
+       if (gtk_dialog_run ((GtkDialog*) _tmp5_) == ((gint) GTK_RESPONSE_CLOSE)) {
+#line 1403 "contacts-contact-pane.c"
+               ContactsLinkedPersonasDialog* _tmp6_;
+#line 194 "../src/contacts-contact-pane.vala"
+               _tmp6_ = dialog;
+#line 194 "../src/contacts-contact-pane.vala"
+               _tmp4_ = _tmp6_->any_unlinked;
+#line 1409 "contacts-contact-pane.c"
+       } else {
+#line 194 "../src/contacts-contact-pane.vala"
+               _tmp4_ = FALSE;
+#line 1413 "contacts-contact-pane.c"
+       }
+#line 194 "../src/contacts-contact-pane.vala"
+       if (_tmp4_) {
+#line 196 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_stop_editing (self, FALSE);
+#line 197 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_start_editing (self);
+#line 1421 "contacts-contact-pane.c"
+       }
+#line 199 "../src/contacts-contact-pane.vala"
+       _tmp7_ = dialog;
+#line 199 "../src/contacts-contact-pane.vala"
+       gtk_widget_destroy ((GtkWidget*) _tmp7_);
+#line 192 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (dialog);
+#line 1429 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_delete_contact (ContactsContactPane* self)
+{
+       FolksIndividual* _tmp0_;
+#line 202 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 203 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->individual;
+#line 203 "../src/contacts-contact-pane.vala"
+       if (_tmp0_ != NULL) {
+#line 1442 "contacts-contact-pane.c"
+               FolksIndividual* _tmp1_;
+#line 204 "../src/contacts-contact-pane.vala"
+               _tmp1_ = self->individual;
+#line 204 "../src/contacts-contact-pane.vala"
+               g_signal_emit (self, contacts_contact_pane_signals[CONTACTS_CONTACT_PANE_WILL_DELETE_SIGNAL], 
0, _tmp1_);
+#line 1448 "contacts-contact-pane.c"
+       }
+}
+
+void
+contacts_contact_pane_start_editing (ContactsContactPane* self)
+{
+       gboolean _tmp0_ = FALSE;
+       GtkBox* _tmp2_;
+#line 208 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 209 "../src/contacts-contact-pane.vala"
+       if (self->on_edit_mode) {
+#line 209 "../src/contacts-contact-pane.vala"
+               _tmp0_ = TRUE;
+#line 1463 "contacts-contact-pane.c"
+       } else {
+               FolksIndividual* _tmp1_;
+#line 209 "../src/contacts-contact-pane.vala"
+               _tmp1_ = self->individual;
+#line 209 "../src/contacts-contact-pane.vala"
+               _tmp0_ = _tmp1_ == NULL;
+#line 1470 "contacts-contact-pane.c"
+       }
+#line 209 "../src/contacts-contact-pane.vala"
+       if (_tmp0_) {
+#line 210 "../src/contacts-contact-pane.vala"
+               return;
+#line 1476 "contacts-contact-pane.c"
+       }
+#line 212 "../src/contacts-contact-pane.vala"
+       self->on_edit_mode = TRUE;
+#line 214 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_contact_sheet (self);
+#line 215 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_create_contact_editor (self);
+#line 216 "../src/contacts-contact-pane.vala"
+       _tmp2_ = self->priv->contact_editor_page;
+#line 216 "../src/contacts-contact-pane.vala"
+       gtk_stack_set_visible_child ((GtkStack*) self, (GtkWidget*) _tmp2_);
+#line 1488 "contacts-contact-pane.c"
+}
+
+void
+contacts_contact_pane_stop_editing (ContactsContactPane* self,
+                                    gboolean drop_changes)
+{
+       FolksIndividual* _tmp0_;
+#line 219 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 220 "../src/contacts-contact-pane.vala"
+       if (!self->on_edit_mode) {
+#line 221 "../src/contacts-contact-pane.vala"
+               return;
+#line 1502 "contacts-contact-pane.c"
+       }
+#line 223 "../src/contacts-contact-pane.vala"
+       self->on_edit_mode = FALSE;
+#line 225 "../src/contacts-contact-pane.vala"
+       if (!drop_changes) {
+#line 226 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_save_editor_changes (self, NULL, NULL);
+#line 1510 "contacts-contact-pane.c"
+       }
+#line 228 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_contact_editor (self);
+#line 230 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->individual;
+#line 230 "../src/contacts-contact-pane.vala"
+       if (_tmp0_ != NULL) {
+#line 231 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_show_contact_sheet (self);
+#line 1520 "contacts-contact-pane.c"
+       } else {
+               GtkGrid* _tmp1_;
+#line 233 "../src/contacts-contact-pane.vala"
+               _tmp1_ = self->priv->none_selected_page;
+#line 233 "../src/contacts-contact-pane.vala"
+               gtk_stack_set_visible_child ((GtkStack*) self, (GtkWidget*) _tmp1_);
+#line 1527 "contacts-contact-pane.c"
+       }
+}
+
+static void
+contacts_contact_pane_save_editor_changes_data_free (gpointer _data)
+{
+       ContactsContactPaneSaveEditorChangesData* _data_;
+       _data_ = _data;
+#line 30 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->self);
+#line 30 "../src/contacts-contact-pane.vala"
+       g_slice_free (ContactsContactPaneSaveEditorChangesData, _data_);
+#line 1540 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_save_editor_changes (ContactsContactPane* self,
+                                           GAsyncReadyCallback _callback_,
+                                           gpointer _user_data_)
+{
+       ContactsContactPaneSaveEditorChangesData* _data_;
+       ContactsContactPane* _tmp0_;
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_ = g_slice_new0 (ContactsContactPaneSaveEditorChangesData);
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 30 "../src/contacts-contact-pane.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_contact_pane_save_editor_changes_data_free);
+#line 30 "../src/contacts-contact-pane.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_->self = _tmp0_;
+#line 30 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_save_editor_changes_co (_data_);
+#line 1562 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_save_editor_changes_finish (ContactsContactPane* self,
+                                                  GAsyncResult* _res_)
+{
+       ContactsContactPaneSaveEditorChangesData* _data_;
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 1572 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_save_editor_changes_ready (GObject* source_object,
+                                                 GAsyncResult* _res_,
+                                                 gpointer _user_data_)
+{
+       ContactsContactPaneSaveEditorChangesData* _data_;
+#line 239 "../src/contacts-contact-pane.vala"
+       _data_ = _user_data_;
+#line 239 "../src/contacts-contact-pane.vala"
+       _data_->_source_object_ = source_object;
+#line 239 "../src/contacts-contact-pane.vala"
+       _data_->_res_ = _res_;
+#line 239 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_save_editor_changes_co (_data_);
+#line 1589 "contacts-contact-pane.c"
+}
+
+static gboolean
+contacts_contact_pane_save_editor_changes_co (ContactsContactPaneSaveEditorChangesData* _data_)
+{
+#line 236 "../src/contacts-contact-pane.vala"
+       switch (_data_->_state_) {
+#line 236 "../src/contacts-contact-pane.vala"
+               case 0:
+#line 1599 "contacts-contact-pane.c"
+               goto _state_0;
+#line 236 "../src/contacts-contact-pane.vala"
+               case 1:
+#line 1603 "contacts-contact-pane.c"
+               goto _state_1;
+#line 236 "../src/contacts-contact-pane.vala"
+               case 2:
+#line 1607 "contacts-contact-pane.c"
+               goto _state_2;
+#line 236 "../src/contacts-contact-pane.vala"
+               case 3:
+#line 1611 "contacts-contact-pane.c"
+               goto _state_3;
+               default:
+#line 236 "../src/contacts-contact-pane.vala"
+               g_assert_not_reached ();
+#line 1616 "contacts-contact-pane.c"
+       }
+       _state_0:
+       {
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp0_ = _data_->self->priv->editor;
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp1_ = contacts_contact_editor_properties_changed (_data_->_tmp0_);
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp2_ = _data_->_tmp1_;
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp3_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _data_->_tmp2_);
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp4_ = _data_->_tmp3_;
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp5_ = _data_->_tmp4_;
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp6_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp5_);
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_tmp7_ = _data_->_tmp6_;
+#line 237 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->_tmp5_);
+#line 237 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->_tmp2_);
+#line 237 "../src/contacts-contact-pane.vala"
+               _data_->_prop_it = _data_->_tmp7_;
+#line 237 "../src/contacts-contact-pane.vala"
+               while (TRUE) {
+#line 237 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp8_ = _data_->_prop_it;
+#line 237 "../src/contacts-contact-pane.vala"
+                       if (!gee_iterator_next (_data_->_tmp8_)) {
+#line 237 "../src/contacts-contact-pane.vala"
+                               break;
+#line 1650 "contacts-contact-pane.c"
+                       }
+#line 237 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp9_ = _data_->_prop_it;
+#line 237 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp10_ = gee_iterator_get (_data_->_tmp9_);
+#line 237 "../src/contacts-contact-pane.vala"
+                       _data_->prop = (GeeMapEntry*) _data_->_tmp10_;
+#line 1658 "contacts-contact-pane.c"
+                       {
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp11_ = _data_->prop;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp12_ = gee_map_entry_get_value (_data_->_tmp11_);
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp13_ = _data_->_tmp12_;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp14_ = (*((ContactsContactEditorPropertyData*) 
_data_->_tmp13_)).persona;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp15_ = _data_->prop;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp16_ = gee_map_entry_get_key (_data_->_tmp15_);
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp17_ = _data_->_tmp16_;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp18_ = _data_->prop;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp19_ = gee_map_entry_get_value (_data_->_tmp18_);
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp20_ = _data_->_tmp19_;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp21_ = (*((ContactsContactEditorPropertyData*) 
_data_->_tmp20_)).value;
+#line 239 "../src/contacts-contact-pane.vala"
+                               _data_->_state_ = 1;
+#line 239 "../src/contacts-contact-pane.vala"
+                               contacts_utils_set_persona_property (_data_->_tmp14_, (const gchar*) 
_data_->_tmp17_, &_data_->_tmp21_, contacts_contact_pane_save_editor_changes_ready, _data_);
+#line 239 "../src/contacts-contact-pane.vala"
+                               return FALSE;
+#line 1688 "contacts-contact-pane.c"
+                               _state_1:
+#line 239 "../src/contacts-contact-pane.vala"
+                               contacts_utils_set_persona_property_finish (_data_->_res_, 
&_data_->_inner_error0_);
+#line 239 "../src/contacts-contact-pane.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 1694 "contacts-contact-pane.c"
+                                       goto __catch10_g_error;
+                               }
+                       }
+                       goto __finally10;
+                       __catch10_g_error:
+                       {
+#line 238 "../src/contacts-contact-pane.vala"
+                               _data_->e = _data_->_inner_error0_;
+#line 238 "../src/contacts-contact-pane.vala"
+                               _data_->_inner_error0_ = NULL;
+#line 241 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp22_ = _data_->e;
+#line 241 "../src/contacts-contact-pane.vala"
+                               _data_->_tmp23_ = _data_->_tmp22_->message;
+#line 241 "../src/contacts-contact-pane.vala"
+                               contacts_contact_pane_show_message (_data_->self, _data_->_tmp23_);
+#line 238 "../src/contacts-contact-pane.vala"
+                               _g_error_free0 (_data_->e);
+#line 1713 "contacts-contact-pane.c"
+                       }
+                       __finally10:
+#line 238 "../src/contacts-contact-pane.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 238 "../src/contacts-contact-pane.vala"
+                               _g_object_unref0 (_data_->prop);
+#line 238 "../src/contacts-contact-pane.vala"
+                               _g_object_unref0 (_data_->_prop_it);
+#line 238 "../src/contacts-contact-pane.vala"
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, 
__LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 238 "../src/contacts-contact-pane.vala"
+                               g_clear_error (&_data_->_inner_error0_);
+#line 238 "../src/contacts-contact-pane.vala"
+                               g_object_unref (_data_->_async_result);
+#line 238 "../src/contacts-contact-pane.vala"
+                               return FALSE;
+#line 1730 "contacts-contact-pane.c"
+                       }
+#line 237 "../src/contacts-contact-pane.vala"
+                       _g_object_unref0 (_data_->prop);
+#line 1734 "contacts-contact-pane.c"
+               }
+#line 237 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->_prop_it);
+#line 1738 "contacts-contact-pane.c"
+       }
+#line 245 "../src/contacts-contact-pane.vala"
+       _data_->_tmp24_ = _data_->self->priv->editor;
+#line 245 "../src/contacts-contact-pane.vala"
+       if (contacts_contact_editor_name_changed (_data_->_tmp24_)) {
+#line 246 "../src/contacts-contact-pane.vala"
+               _data_->_tmp25_ = _data_->self->priv->editor;
+#line 246 "../src/contacts-contact-pane.vala"
+               memset (&_data_->_tmp26_, 0, sizeof (GValue));
+#line 246 "../src/contacts-contact-pane.vala"
+               contacts_contact_editor_get_full_name_value (_data_->_tmp25_, &_data_->_tmp26_);
+#line 246 "../src/contacts-contact-pane.vala"
+               _data_->v = _data_->_tmp26_;
+#line 1752 "contacts-contact-pane.c"
+               {
+#line 248 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp27_ = _data_->self->individual;
+#line 248 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp28_ = _data_->v;
+#line 248 "../src/contacts-contact-pane.vala"
+                       _data_->_state_ = 2;
+#line 248 "../src/contacts-contact-pane.vala"
+                       contacts_utils_set_individual_property (_data_->_tmp27_, "full-name", 
&_data_->_tmp28_, contacts_contact_pane_save_editor_changes_ready, _data_);
+#line 248 "../src/contacts-contact-pane.vala"
+                       return FALSE;
+#line 1764 "contacts-contact-pane.c"
+                       _state_2:
+#line 248 "../src/contacts-contact-pane.vala"
+                       contacts_utils_set_individual_property_finish (_data_->_res_, 
&_data_->_inner_error0_);
+#line 248 "../src/contacts-contact-pane.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 1770 "contacts-contact-pane.c"
+                               goto __catch11_g_error;
+                       }
+#line 249 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp29_ = g_value_get_string (&_data_->v);
+#line 249 "../src/contacts-contact-pane.vala"
+                       g_signal_emit (_data_->self, 
contacts_contact_pane_signals[CONTACTS_CONTACT_PANE_DISPLAY_NAME_CHANGED_SIGNAL], 0, _data_->_tmp29_);
+#line 1777 "contacts-contact-pane.c"
+               }
+               goto __finally11;
+               __catch11_g_error:
+               {
+#line 247 "../src/contacts-contact-pane.vala"
+                       _data_->_vala1_e = _data_->_inner_error0_;
+#line 247 "../src/contacts-contact-pane.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 251 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp30_ = _data_->_vala1_e;
+#line 251 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp31_ = _data_->_tmp30_->message;
+#line 251 "../src/contacts-contact-pane.vala"
+                       contacts_contact_pane_show_message (_data_->self, _data_->_tmp31_);
+#line 247 "../src/contacts-contact-pane.vala"
+                       _g_error_free0 (_data_->_vala1_e);
+#line 1794 "contacts-contact-pane.c"
+               }
+               __finally11:
+#line 247 "../src/contacts-contact-pane.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 247 "../src/contacts-contact-pane.vala"
+                       G_IS_VALUE (&_data_->v) ? (g_value_unset (&_data_->v), NULL) : NULL;
+#line 247 "../src/contacts-contact-pane.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 247 "../src/contacts-contact-pane.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 247 "../src/contacts-contact-pane.vala"
+                       g_object_unref (_data_->_async_result);
+#line 247 "../src/contacts-contact-pane.vala"
+                       return FALSE;
+#line 1809 "contacts-contact-pane.c"
+               }
+#line 245 "../src/contacts-contact-pane.vala"
+               G_IS_VALUE (&_data_->v) ? (g_value_unset (&_data_->v), NULL) : NULL;
+#line 1813 "contacts-contact-pane.c"
+       }
+#line 255 "../src/contacts-contact-pane.vala"
+       _data_->_tmp32_ = _data_->self->priv->editor;
+#line 255 "../src/contacts-contact-pane.vala"
+       if (contacts_contact_editor_avatar_changed (_data_->_tmp32_)) {
+#line 256 "../src/contacts-contact-pane.vala"
+               _data_->_tmp33_ = _data_->self->priv->editor;
+#line 256 "../src/contacts-contact-pane.vala"
+               memset (&_data_->_tmp34_, 0, sizeof (GValue));
+#line 256 "../src/contacts-contact-pane.vala"
+               contacts_contact_editor_get_avatar_value (_data_->_tmp33_, &_data_->_tmp34_);
+#line 256 "../src/contacts-contact-pane.vala"
+               _data_->_vala1_v = _data_->_tmp34_;
+#line 1827 "contacts-contact-pane.c"
+               {
+#line 258 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp35_ = _data_->self->individual;
+#line 258 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp36_ = _data_->_vala1_v;
+#line 258 "../src/contacts-contact-pane.vala"
+                       _data_->_state_ = 3;
+#line 258 "../src/contacts-contact-pane.vala"
+                       contacts_utils_set_individual_property (_data_->_tmp35_, "avatar", &_data_->_tmp36_, 
contacts_contact_pane_save_editor_changes_ready, _data_);
+#line 258 "../src/contacts-contact-pane.vala"
+                       return FALSE;
+#line 1839 "contacts-contact-pane.c"
+                       _state_3:
+#line 258 "../src/contacts-contact-pane.vala"
+                       contacts_utils_set_individual_property_finish (_data_->_res_, 
&_data_->_inner_error0_);
+#line 258 "../src/contacts-contact-pane.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 1845 "contacts-contact-pane.c"
+                               goto __catch12_g_error;
+                       }
+               }
+               goto __finally12;
+               __catch12_g_error:
+               {
+#line 257 "../src/contacts-contact-pane.vala"
+                       _data_->_vala2_e = _data_->_inner_error0_;
+#line 257 "../src/contacts-contact-pane.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 260 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp37_ = _data_->_vala2_e;
+#line 260 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp38_ = _data_->_tmp37_->message;
+#line 260 "../src/contacts-contact-pane.vala"
+                       contacts_contact_pane_show_message (_data_->self, _data_->_tmp38_);
+#line 257 "../src/contacts-contact-pane.vala"
+                       _g_error_free0 (_data_->_vala2_e);
+#line 1864 "contacts-contact-pane.c"
+               }
+               __finally12:
+#line 257 "../src/contacts-contact-pane.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 257 "../src/contacts-contact-pane.vala"
+                       G_IS_VALUE (&_data_->_vala1_v) ? (g_value_unset (&_data_->_vala1_v), NULL) : NULL;
+#line 257 "../src/contacts-contact-pane.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 257 "../src/contacts-contact-pane.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 257 "../src/contacts-contact-pane.vala"
+                       g_object_unref (_data_->_async_result);
+#line 257 "../src/contacts-contact-pane.vala"
+                       return FALSE;
+#line 1879 "contacts-contact-pane.c"
+               }
+#line 255 "../src/contacts-contact-pane.vala"
+               G_IS_VALUE (&_data_->_vala1_v) ? (g_value_unset (&_data_->_vala1_v), NULL) : NULL;
+#line 1883 "contacts-contact-pane.c"
+       }
+#line 236 "../src/contacts-contact-pane.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 236 "../src/contacts-contact-pane.vala"
+       if (_data_->_state_ != 0) {
+#line 236 "../src/contacts-contact-pane.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 236 "../src/contacts-contact-pane.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 1893 "contacts-contact-pane.c"
+               }
+       }
+#line 236 "../src/contacts-contact-pane.vala"
+       g_object_unref (_data_->_async_result);
+#line 236 "../src/contacts-contact-pane.vala"
+       return FALSE;
+#line 1900 "contacts-contact-pane.c"
+}
+
+void
+contacts_contact_pane_new_contact (ContactsContactPane* self)
+{
+       GtkBox* _tmp0_;
+#line 265 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 266 "../src/contacts-contact-pane.vala"
+       self->on_edit_mode = TRUE;
+#line 267 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->individual);
+#line 267 "../src/contacts-contact-pane.vala"
+       self->individual = NULL;
+#line 268 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_remove_contact_sheet (self);
+#line 269 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_create_contact_editor (self);
+#line 270 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->contact_editor_page;
+#line 270 "../src/contacts-contact-pane.vala"
+       gtk_stack_set_visible_child ((GtkStack*) self, (GtkWidget*) _tmp0_);
+#line 1923 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_create_contact_data_free (gpointer _data)
+{
+       ContactsContactPaneCreateContactData* _data_;
+       _data_ = _data;
+#line 30 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->self);
+#line 30 "../src/contacts-contact-pane.vala"
+       g_slice_free (ContactsContactPaneCreateContactData, _data_);
+#line 1935 "contacts-contact-pane.c"
+}
+
+void
+contacts_contact_pane_create_contact (ContactsContactPane* self,
+                                      GAsyncReadyCallback _callback_,
+                                      gpointer _user_data_)
+{
+       ContactsContactPaneCreateContactData* _data_;
+       ContactsContactPane* _tmp0_;
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_ = g_slice_new0 (ContactsContactPaneCreateContactData);
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 30 "../src/contacts-contact-pane.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_contact_pane_create_contact_data_free);
+#line 30 "../src/contacts-contact-pane.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_->self = _tmp0_;
+#line 30 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_create_contact_co (_data_);
+#line 1957 "contacts-contact-pane.c"
+}
+
+void
+contacts_contact_pane_create_contact_finish (ContactsContactPane* self,
+                                             GAsyncResult* _res_)
+{
+       ContactsContactPaneCreateContactData* _data_;
+#line 30 "../src/contacts-contact-pane.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 1967 "contacts-contact-pane.c"
+}
+
+static void
+_g_free0_ (gpointer var)
+{
+#line 275 "../src/contacts-contact-pane.vala"
+       var = (g_free (var), NULL);
+#line 1975 "contacts-contact-pane.c"
+}
+
+static void
+_vala_GValue_free (GValue* self)
+{
+#line 275 "../src/contacts-contact-pane.vala"
+       g_value_unset (self);
+#line 275 "../src/contacts-contact-pane.vala"
+       g_free (self);
+#line 1985 "contacts-contact-pane.c"
+}
+
+static void
+__vala_GValue_free0_ (gpointer var)
+{
+#line 275 "../src/contacts-contact-pane.vala"
+       (var == NULL) ? NULL : (var = (_vala_GValue_free (var), NULL));
+#line 1993 "contacts-contact-pane.c"
+}
+
+static GValue*
+_g_value_dup (GValue* self)
+{
+#line 279 "../src/contacts-contact-pane.vala"
+       return g_boxed_copy (G_TYPE_VALUE, self);
+#line 2001 "contacts-contact-pane.c"
+}
+
+static gpointer
+__g_value_dup0 (gpointer self)
+{
+#line 279 "../src/contacts-contact-pane.vala"
+       return self ? _g_value_dup (self) : NULL;
+#line 2009 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_create_contact_ready (GObject* source_object,
+                                            GAsyncResult* _res_,
+                                            gpointer _user_data_)
+{
+       ContactsContactPaneCreateContactData* _data_;
+#line 311 "../src/contacts-contact-pane.vala"
+       _data_ = _user_data_;
+#line 311 "../src/contacts-contact-pane.vala"
+       _data_->_source_object_ = source_object;
+#line 311 "../src/contacts-contact-pane.vala"
+       _data_->_res_ = _res_;
+#line 311 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_create_contact_co (_data_);
+#line 2026 "contacts-contact-pane.c"
+}
+
+static gboolean
+contacts_contact_pane_create_contact_co (ContactsContactPaneCreateContactData* _data_)
+{
+#line 274 "../src/contacts-contact-pane.vala"
+       switch (_data_->_state_) {
+#line 274 "../src/contacts-contact-pane.vala"
+               case 0:
+#line 2036 "contacts-contact-pane.c"
+               goto _state_0;
+#line 274 "../src/contacts-contact-pane.vala"
+               case 1:
+#line 2040 "contacts-contact-pane.c"
+               goto _state_1;
+               default:
+#line 274 "../src/contacts-contact-pane.vala"
+               g_assert_not_reached ();
+#line 2045 "contacts-contact-pane.c"
+       }
+       _state_0:
+#line 275 "../src/contacts-contact-pane.vala"
+       _data_->_tmp0_ = g_str_hash;
+#line 275 "../src/contacts-contact-pane.vala"
+       _data_->_tmp1_ = g_str_equal;
+#line 275 "../src/contacts-contact-pane.vala"
+       _data_->_tmp2_ = g_hash_table_new_full (_data_->_tmp0_, _data_->_tmp1_, _g_free0_, 
__vala_GValue_free0_);
+#line 275 "../src/contacts-contact-pane.vala"
+       _data_->details = _data_->_tmp2_;
+#line 278 "../src/contacts-contact-pane.vala"
+       _data_->_tmp3_ = _data_->self->priv->editor;
+#line 278 "../src/contacts-contact-pane.vala"
+       if (contacts_contact_editor_name_changed (_data_->_tmp3_)) {
+#line 279 "../src/contacts-contact-pane.vala"
+               _data_->_tmp4_ = _data_->details;
+#line 279 "../src/contacts-contact-pane.vala"
+               _data_->_tmp5_ = g_strdup ("full-name");
+#line 279 "../src/contacts-contact-pane.vala"
+               _data_->_tmp6_ = _data_->self->priv->editor;
+#line 279 "../src/contacts-contact-pane.vala"
+               memset (&_data_->_tmp7_, 0, sizeof (GValue));
+#line 279 "../src/contacts-contact-pane.vala"
+               contacts_contact_editor_get_full_name_value (_data_->_tmp6_, &_data_->_tmp7_);
+#line 279 "../src/contacts-contact-pane.vala"
+               _data_->_tmp8_ = _data_->_tmp7_;
+#line 279 "../src/contacts-contact-pane.vala"
+               _data_->_tmp9_ = __g_value_dup0 (&_data_->_tmp8_);
+#line 279 "../src/contacts-contact-pane.vala"
+               g_hash_table_insert (_data_->_tmp4_, _data_->_tmp5_, _data_->_tmp9_);
+#line 279 "../src/contacts-contact-pane.vala"
+               G_IS_VALUE (&_data_->_tmp8_) ? (g_value_unset (&_data_->_tmp8_), NULL) : NULL;
+#line 2078 "contacts-contact-pane.c"
+       }
+#line 281 "../src/contacts-contact-pane.vala"
+       _data_->_tmp10_ = _data_->self->priv->editor;
+#line 281 "../src/contacts-contact-pane.vala"
+       if (contacts_contact_editor_avatar_changed (_data_->_tmp10_)) {
+#line 282 "../src/contacts-contact-pane.vala"
+               _data_->_tmp11_ = _data_->details;
+#line 282 "../src/contacts-contact-pane.vala"
+               _data_->_tmp12_ = g_strdup ("avatar");
+#line 282 "../src/contacts-contact-pane.vala"
+               _data_->_tmp13_ = _data_->self->priv->editor;
+#line 282 "../src/contacts-contact-pane.vala"
+               memset (&_data_->_tmp14_, 0, sizeof (GValue));
+#line 282 "../src/contacts-contact-pane.vala"
+               contacts_contact_editor_get_avatar_value (_data_->_tmp13_, &_data_->_tmp14_);
+#line 282 "../src/contacts-contact-pane.vala"
+               _data_->_tmp15_ = _data_->_tmp14_;
+#line 282 "../src/contacts-contact-pane.vala"
+               _data_->_tmp16_ = __g_value_dup0 (&_data_->_tmp15_);
+#line 282 "../src/contacts-contact-pane.vala"
+               g_hash_table_insert (_data_->_tmp11_, _data_->_tmp12_, _data_->_tmp16_);
+#line 282 "../src/contacts-contact-pane.vala"
+               G_IS_VALUE (&_data_->_tmp15_) ? (g_value_unset (&_data_->_tmp15_), NULL) : NULL;
+#line 2102 "contacts-contact-pane.c"
+       }
+       {
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp17_ = _data_->self->priv->editor;
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp18_ = contacts_contact_editor_properties_changed (_data_->_tmp17_);
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp19_ = _data_->_tmp18_;
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp20_ = gee_abstract_map_get_entries ((GeeAbstractMap*) _data_->_tmp19_);
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp21_ = _data_->_tmp20_;
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp22_ = _data_->_tmp21_;
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp23_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp22_);
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_tmp24_ = _data_->_tmp23_;
+#line 284 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->_tmp22_);
+#line 284 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->_tmp19_);
+#line 284 "../src/contacts-contact-pane.vala"
+               _data_->_prop_it = _data_->_tmp24_;
+#line 284 "../src/contacts-contact-pane.vala"
+               while (TRUE) {
+#line 284 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp25_ = _data_->_prop_it;
+#line 284 "../src/contacts-contact-pane.vala"
+                       if (!gee_iterator_next (_data_->_tmp25_)) {
+#line 284 "../src/contacts-contact-pane.vala"
+                               break;
+#line 2135 "contacts-contact-pane.c"
+                       }
+#line 284 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp26_ = _data_->_prop_it;
+#line 284 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp27_ = gee_iterator_get (_data_->_tmp26_);
+#line 284 "../src/contacts-contact-pane.vala"
+                       _data_->prop = (GeeMapEntry*) _data_->_tmp27_;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp28_ = _data_->details;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp29_ = _data_->prop;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp30_ = gee_map_entry_get_key (_data_->_tmp29_);
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp31_ = _data_->_tmp30_;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp32_ = g_strdup ((const gchar*) _data_->_tmp31_);
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp33_ = _data_->prop;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp34_ = gee_map_entry_get_value (_data_->_tmp33_);
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp35_ = _data_->_tmp34_;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp36_ = (*((ContactsContactEditorPropertyData*) _data_->_tmp35_)).value;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp37_ = _data_->_tmp36_;
+#line 285 "../src/contacts-contact-pane.vala"
+                       _data_->_tmp38_ = __g_value_dup0 (&_data_->_tmp37_);
+#line 285 "../src/contacts-contact-pane.vala"
+                       g_hash_table_insert (_data_->_tmp28_, _data_->_tmp32_, _data_->_tmp38_);
+#line 284 "../src/contacts-contact-pane.vala"
+                       _g_object_unref0 (_data_->prop);
+#line 2169 "contacts-contact-pane.c"
+               }
+#line 284 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->_prop_it);
+#line 2173 "contacts-contact-pane.c"
+       }
+#line 288 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_stop_editing (_data_->self, TRUE);
+#line 290 "../src/contacts-contact-pane.vala"
+       _data_->_tmp39_ = _data_->details;
+#line 290 "../src/contacts-contact-pane.vala"
+       if (g_hash_table_size (_data_->_tmp39_) == ((guint) 0)) {
+#line 291 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_show_message_dialog (_data_->self, _ ("You need to enter some data"));
+#line 292 "../src/contacts-contact-pane.vala"
+               _g_hash_table_unref0 (_data_->details);
+#line 292 "../src/contacts-contact-pane.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 292 "../src/contacts-contact-pane.vala"
+               if (_data_->_state_ != 0) {
+#line 292 "../src/contacts-contact-pane.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 292 "../src/contacts-contact-pane.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2193 "contacts-contact-pane.c"
+                       }
+               }
+#line 292 "../src/contacts-contact-pane.vala"
+               g_object_unref (_data_->_async_result);
+#line 292 "../src/contacts-contact-pane.vala"
+               return FALSE;
+#line 2200 "contacts-contact-pane.c"
+       }
+#line 295 "../src/contacts-contact-pane.vala"
+       _data_->_tmp40_ = _data_->self->priv->store;
+#line 295 "../src/contacts-contact-pane.vala"
+       _data_->_tmp41_ = contacts_store_get_aggregator (_data_->_tmp40_);
+#line 295 "../src/contacts-contact-pane.vala"
+       _data_->_tmp42_ = _data_->_tmp41_;
+#line 295 "../src/contacts-contact-pane.vala"
+       _data_->_tmp43_ = folks_individual_aggregator_get_primary_store (_data_->_tmp42_);
+#line 295 "../src/contacts-contact-pane.vala"
+       _data_->_tmp44_ = _data_->_tmp43_;
+#line 295 "../src/contacts-contact-pane.vala"
+       if (_data_->_tmp44_ == NULL) {
+#line 296 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_show_message_dialog (_data_->self, _ ("No primary addressbook 
configured"));
+#line 297 "../src/contacts-contact-pane.vala"
+               _g_hash_table_unref0 (_data_->details);
+#line 297 "../src/contacts-contact-pane.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 297 "../src/contacts-contact-pane.vala"
+               if (_data_->_state_ != 0) {
+#line 297 "../src/contacts-contact-pane.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 297 "../src/contacts-contact-pane.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2226 "contacts-contact-pane.c"
+                       }
+               }
+#line 297 "../src/contacts-contact-pane.vala"
+               g_object_unref (_data_->_async_result);
+#line 297 "../src/contacts-contact-pane.vala"
+               return FALSE;
+#line 2233 "contacts-contact-pane.c"
+       }
+#line 301 "../src/contacts-contact-pane.vala"
+       _data_->_tmp45_ = contacts_fake_persona_store_the_store ();
+#line 301 "../src/contacts-contact-pane.vala"
+       _data_->_tmp46_ = _data_->_tmp45_;
+#line 301 "../src/contacts-contact-pane.vala"
+       _data_->_tmp47_ = _data_->details;
+#line 301 "../src/contacts-contact-pane.vala"
+       _data_->_tmp48_ = contacts_fake_persona_new ((FolksPersonaStore*) _data_->_tmp46_, _data_->_tmp47_);
+#line 301 "../src/contacts-contact-pane.vala"
+       _data_->_tmp49_ = _data_->_tmp48_;
+#line 301 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->_tmp46_);
+#line 301 "../src/contacts-contact-pane.vala"
+       _data_->fake_persona = _data_->_tmp49_;
+#line 302 "../src/contacts-contact-pane.vala"
+       _data_->_tmp50_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 302 "../src/contacts-contact-pane.vala"
+       _data_->fake_personas = _data_->_tmp50_;
+#line 303 "../src/contacts-contact-pane.vala"
+       _data_->_tmp51_ = _data_->fake_personas;
+#line 303 "../src/contacts-contact-pane.vala"
+       _data_->_tmp52_ = _data_->fake_persona;
+#line 303 "../src/contacts-contact-pane.vala"
+       gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp51_, (FolksPersona*) 
_data_->_tmp52_);
+#line 304 "../src/contacts-contact-pane.vala"
+       _data_->_tmp53_ = _data_->fake_personas;
+#line 304 "../src/contacts-contact-pane.vala"
+       _data_->_tmp54_ = folks_individual_new ((GeeSet*) _data_->_tmp53_);
+#line 304 "../src/contacts-contact-pane.vala"
+       _data_->fake_individual = _data_->_tmp54_;
+#line 305 "../src/contacts-contact-pane.vala"
+       _data_->_tmp55_ = _data_->self->priv->parent_window;
+#line 305 "../src/contacts-contact-pane.vala"
+       _data_->_tmp56_ = _data_->fake_individual;
+#line 305 "../src/contacts-contact-pane.vala"
+       contacts_window_set_shown_contact (_data_->_tmp55_, _data_->_tmp56_);
+#line 308 "../src/contacts-contact-pane.vala"
+       _data_->_tmp57_ = _data_->self->priv->store;
+#line 308 "../src/contacts-contact-pane.vala"
+       _data_->_tmp58_ = contacts_store_get_aggregator (_data_->_tmp57_);
+#line 308 "../src/contacts-contact-pane.vala"
+       _data_->_tmp59_ = _data_->_tmp58_;
+#line 308 "../src/contacts-contact-pane.vala"
+       _data_->_tmp60_ = folks_individual_aggregator_get_primary_store (_data_->_tmp59_);
+#line 308 "../src/contacts-contact-pane.vala"
+       _data_->_tmp61_ = _data_->_tmp60_;
+#line 308 "../src/contacts-contact-pane.vala"
+       _data_->_tmp62_ = _g_object_ref0 (_data_->_tmp61_);
+#line 308 "../src/contacts-contact-pane.vala"
+       _data_->primary_store = _data_->_tmp62_;
+#line 309 "../src/contacts-contact-pane.vala"
+       _data_->persona = NULL;
+#line 2287 "contacts-contact-pane.c"
+       {
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->_tmp64_ = _data_->primary_store;
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->_tmp65_ = _data_->details;
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->_state_ = 1;
+#line 311 "../src/contacts-contact-pane.vala"
+               folks_persona_store_add_persona_from_details (_data_->_tmp64_, _data_->_tmp65_, 
contacts_contact_pane_create_contact_ready, _data_);
+#line 311 "../src/contacts-contact-pane.vala"
+               return FALSE;
+#line 2299 "contacts-contact-pane.c"
+               _state_1:
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->_tmp66_ = folks_persona_store_add_persona_from_details_finish (_data_->_tmp64_, 
_data_->_res_, &_data_->_inner_error0_);
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->_tmp63_ = _data_->_tmp66_;
+#line 311 "../src/contacts-contact-pane.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 2307 "contacts-contact-pane.c"
+                       goto __catch13_g_error;
+               }
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->_tmp67_ = _data_->_tmp63_;
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->_tmp63_ = NULL;
+#line 311 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->persona);
+#line 311 "../src/contacts-contact-pane.vala"
+               _data_->persona = _data_->_tmp67_;
+#line 310 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->_tmp63_);
+#line 2320 "contacts-contact-pane.c"
+       }
+       goto __finally13;
+       __catch13_g_error:
+       {
+#line 310 "../src/contacts-contact-pane.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 310 "../src/contacts-contact-pane.vala"
+               _data_->_inner_error0_ = NULL;
+#line 313 "../src/contacts-contact-pane.vala"
+               _data_->_tmp68_ = _data_->e;
+#line 313 "../src/contacts-contact-pane.vala"
+               _data_->_tmp69_ = _data_->_tmp68_->message;
+#line 313 "../src/contacts-contact-pane.vala"
+               _data_->_tmp70_ = g_strdup_printf (_ ("Unable to create new contacts: %s"), _data_->_tmp69_);
+#line 313 "../src/contacts-contact-pane.vala"
+               _data_->_tmp71_ = _data_->_tmp70_;
+#line 313 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_show_message_dialog (_data_->self, _data_->_tmp71_);
+#line 313 "../src/contacts-contact-pane.vala"
+               _g_free0 (_data_->_tmp71_);
+#line 314 "../src/contacts-contact-pane.vala"
+               _data_->_tmp72_ = _data_->self->priv->parent_window;
+#line 314 "../src/contacts-contact-pane.vala"
+               contacts_window_set_shown_contact (_data_->_tmp72_, NULL);
+#line 315 "../src/contacts-contact-pane.vala"
+               _g_error_free0 (_data_->e);
+#line 315 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->persona);
+#line 315 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->primary_store);
+#line 315 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->fake_individual);
+#line 315 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->fake_personas);
+#line 315 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->fake_persona);
+#line 315 "../src/contacts-contact-pane.vala"
+               _g_hash_table_unref0 (_data_->details);
+#line 315 "../src/contacts-contact-pane.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 315 "../src/contacts-contact-pane.vala"
+               if (_data_->_state_ != 0) {
+#line 315 "../src/contacts-contact-pane.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 315 "../src/contacts-contact-pane.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2367 "contacts-contact-pane.c"
+                       }
+               }
+#line 315 "../src/contacts-contact-pane.vala"
+               g_object_unref (_data_->_async_result);
+#line 315 "../src/contacts-contact-pane.vala"
+               return FALSE;
+#line 2374 "contacts-contact-pane.c"
+       }
+       __finally13:
+#line 310 "../src/contacts-contact-pane.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 310 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->persona);
+#line 310 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->primary_store);
+#line 310 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->fake_individual);
+#line 310 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->fake_personas);
+#line 310 "../src/contacts-contact-pane.vala"
+               _g_object_unref0 (_data_->fake_persona);
+#line 310 "../src/contacts-contact-pane.vala"
+               _g_hash_table_unref0 (_data_->details);
+#line 310 "../src/contacts-contact-pane.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 310 "../src/contacts-contact-pane.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 310 "../src/contacts-contact-pane.vala"
+               g_object_unref (_data_->_async_result);
+#line 310 "../src/contacts-contact-pane.vala"
+               return FALSE;
+#line 2399 "contacts-contact-pane.c"
+       }
+#line 319 "../src/contacts-contact-pane.vala"
+       _data_->_tmp73_ = _data_->persona;
+#line 319 "../src/contacts-contact-pane.vala"
+       _data_->_tmp74_ = folks_persona_get_individual (_data_->_tmp73_);
+#line 319 "../src/contacts-contact-pane.vala"
+       _data_->_tmp75_ = _data_->_tmp74_;
+#line 319 "../src/contacts-contact-pane.vala"
+       _data_->_tmp76_ = _g_object_ref0 (_data_->_tmp75_);
+#line 319 "../src/contacts-contact-pane.vala"
+       _data_->individual = _data_->_tmp76_;
+#line 320 "../src/contacts-contact-pane.vala"
+       _data_->_tmp77_ = _data_->individual;
+#line 320 "../src/contacts-contact-pane.vala"
+       if (_data_->_tmp77_ != NULL) {
+#line 322 "../src/contacts-contact-pane.vala"
+               _data_->_tmp78_ = _data_->self->priv->parent_window;
+#line 322 "../src/contacts-contact-pane.vala"
+               _data_->_tmp79_ = _data_->individual;
+#line 322 "../src/contacts-contact-pane.vala"
+               contacts_window_set_shown_contact (_data_->_tmp78_, _data_->_tmp79_);
+#line 2421 "contacts-contact-pane.c"
+       } else {
+#line 324 "../src/contacts-contact-pane.vala"
+               contacts_contact_pane_show_message_dialog (_data_->self, _ ("Unable to find newly created 
contact"));
+#line 325 "../src/contacts-contact-pane.vala"
+               _data_->_tmp80_ = _data_->self->priv->parent_window;
+#line 325 "../src/contacts-contact-pane.vala"
+               contacts_window_set_shown_contact (_data_->_tmp80_, NULL);
+#line 2429 "contacts-contact-pane.c"
+       }
+#line 274 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->individual);
+#line 274 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->persona);
+#line 274 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->primary_store);
+#line 274 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->fake_individual);
+#line 274 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->fake_personas);
+#line 274 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (_data_->fake_persona);
+#line 274 "../src/contacts-contact-pane.vala"
+       _g_hash_table_unref0 (_data_->details);
+#line 274 "../src/contacts-contact-pane.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 274 "../src/contacts-contact-pane.vala"
+       if (_data_->_state_ != 0) {
+#line 274 "../src/contacts-contact-pane.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 274 "../src/contacts-contact-pane.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2453 "contacts-contact-pane.c"
+               }
+       }
+#line 274 "../src/contacts-contact-pane.vala"
+       g_object_unref (_data_->_async_result);
+#line 274 "../src/contacts-contact-pane.vala"
+       return FALSE;
+#line 2460 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_show_message_dialog (ContactsContactPane* self,
+                                           const gchar* message)
+{
+       GtkMessageDialog* dialog = NULL;
+       ContactsWindow* _tmp0_;
+       GtkMessageDialog* _tmp1_;
+#line 329 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 329 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (message != NULL);
+#line 330 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->parent_window;
+#line 330 "../src/contacts-contact-pane.vala"
+       _tmp1_ = (GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) _tmp0_, 
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", message);
+#line 330 "../src/contacts-contact-pane.vala"
+       g_object_ref_sink (_tmp1_);
+#line 330 "../src/contacts-contact-pane.vala"
+       dialog = _tmp1_;
+#line 336 "../src/contacts-contact-pane.vala"
+       gtk_dialog_run ((GtkDialog*) dialog);
+#line 337 "../src/contacts-contact-pane.vala"
+       gtk_widget_destroy ((GtkWidget*) dialog);
+#line 329 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (dialog);
+#line 2488 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_show_message (ContactsContactPane* self,
+                                    const gchar* message)
+{
+       ContactsInAppNotification* notification = NULL;
+       ContactsInAppNotification* _tmp0_;
+       ContactsWindow* _tmp1_;
+#line 340 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 340 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (message != NULL);
+#line 341 "../src/contacts-contact-pane.vala"
+       _tmp0_ = contacts_in_app_notification_new (message, NULL);
+#line 341 "../src/contacts-contact-pane.vala"
+       g_object_ref_sink (_tmp0_);
+#line 341 "../src/contacts-contact-pane.vala"
+       notification = _tmp0_;
+#line 342 "../src/contacts-contact-pane.vala"
+       contacts_in_app_notification_show (notification);
+#line 343 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->priv->parent_window;
+#line 343 "../src/contacts-contact-pane.vala"
+       contacts_window_add_notification (_tmp1_, notification);
+#line 340 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (notification);
+#line 2516 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_remove_suggestion_grid (ContactsContactPane* self)
+{
+       ContactsLinkSuggestionGrid* _tmp0_;
+       ContactsLinkSuggestionGrid* _tmp1_;
+#line 346 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 347 "../src/contacts-contact-pane.vala"
+       _tmp0_ = self->priv->suggestion_grid;
+#line 347 "../src/contacts-contact-pane.vala"
+       if (_tmp0_ == NULL) {
+#line 348 "../src/contacts-contact-pane.vala"
+               return;
+#line 2532 "contacts-contact-pane.c"
+       }
+#line 350 "../src/contacts-contact-pane.vala"
+       _tmp1_ = self->priv->suggestion_grid;
+#line 350 "../src/contacts-contact-pane.vala"
+       gtk_widget_destroy ((GtkWidget*) _tmp1_);
+#line 351 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->suggestion_grid);
+#line 351 "../src/contacts-contact-pane.vala"
+       self->priv->suggestion_grid = NULL;
+#line 2542 "contacts-contact-pane.c"
+}
+
+static void
+g_cclosure_user_marshal_VOID__STRING_STRING_OBJECT (GClosure * closure,
+                                                    GValue * return_value,
+                                                    guint n_param_values,
+                                                    const GValue * param_values,
+                                                    gpointer invocation_hint,
+                                                    gpointer marshal_data)
+{
+       typedef void (*GMarshalFunc_VOID__STRING_STRING_OBJECT) (gpointer data1, const char* arg_1, const 
char* arg_2, gpointer arg_3, gpointer data2);
+       register GMarshalFunc_VOID__STRING_STRING_OBJECT callback;
+       register GCClosure * cc;
+       register gpointer data1;
+       register gpointer data2;
+       cc = (GCClosure *) closure;
+#line 30 "../src/contacts-contact-pane.vala"
+       g_return_if_fail (n_param_values == 4);
+#line 30 "../src/contacts-contact-pane.vala"
+       if (G_CCLOSURE_SWAP_DATA (closure)) {
+#line 30 "../src/contacts-contact-pane.vala"
+               data1 = closure->data;
+#line 30 "../src/contacts-contact-pane.vala"
+               data2 = param_values->data[0].v_pointer;
+#line 2567 "contacts-contact-pane.c"
+       } else {
+#line 30 "../src/contacts-contact-pane.vala"
+               data1 = param_values->data[0].v_pointer;
+#line 30 "../src/contacts-contact-pane.vala"
+               data2 = closure->data;
+#line 2573 "contacts-contact-pane.c"
+       }
+#line 30 "../src/contacts-contact-pane.vala"
+       callback = (GMarshalFunc_VOID__STRING_STRING_OBJECT) (marshal_data ? marshal_data : cc->callback);
+#line 30 "../src/contacts-contact-pane.vala"
+       callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), 
g_value_get_object (param_values + 3), data2);
+#line 2579 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_class_init (ContactsContactPaneClass * klass,
+                                  gpointer klass_data)
+{
+#line 30 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_parent_class = g_type_class_peek_parent (klass);
+#line 30 "../src/contacts-contact-pane.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsContactPane_private_offset);
+#line 30 "../src/contacts-contact-pane.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_contact_pane_finalize;
+#line 30 "../src/contacts-contact-pane.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-contact-pane.ui");
+#line 30 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_signals[CONTACTS_CONTACT_PANE_CONTACTS_LINKED_SIGNAL] = g_signal_new 
("contacts-linked", CONTACTS_TYPE_CONTACT_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_user_marshal_VOID__STRING_STRING_OBJECT, G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_STRING, 
CONTACTS_TYPE_LINK_OPERATION);
+#line 30 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_signals[CONTACTS_CONTACT_PANE_WILL_DELETE_SIGNAL] = g_signal_new 
("will-delete", CONTACTS_TYPE_CONTACT_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, FOLKS_TYPE_INDIVIDUAL);
+#line 2598 "contacts-contact-pane.c"
+       /**
+          * Passes the changed display name to all listeners after edit mode has been completed.
+          */
+#line 30 "../src/contacts-contact-pane.vala"
+       contacts_contact_pane_signals[CONTACTS_CONTACT_PANE_DISPLAY_NAME_CHANGED_SIGNAL] = g_signal_new 
("display-name-changed", CONTACTS_TYPE_CONTACT_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+#line 30 "../src/contacts-contact-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "none_selected_page", FALSE, 
ContactsContactPane_private_offset + G_STRUCT_OFFSET (ContactsContactPanePrivate, none_selected_page));
+#line 30 "../src/contacts-contact-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "contact_sheet_page", FALSE, 
ContactsContactPane_private_offset + G_STRUCT_OFFSET (ContactsContactPanePrivate, contact_sheet_page));
+#line 30 "../src/contacts-contact-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "contact_editor_page", FALSE, 
ContactsContactPane_private_offset + G_STRUCT_OFFSET (ContactsContactPanePrivate, contact_editor_page));
+#line 2610 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_instance_init (ContactsContactPane * self,
+                                     gpointer klass)
+{
+       GSimpleActionGroup* _tmp0_;
+#line 30 "../src/contacts-contact-pane.vala"
+       self->priv = contacts_contact_pane_get_instance_private (self);
+#line 36 "../src/contacts-contact-pane.vala"
+       self->individual = NULL;
+#line 43 "../src/contacts-contact-pane.vala"
+       self->priv->sheet = NULL;
+#line 47 "../src/contacts-contact-pane.vala"
+       self->priv->editor = NULL;
+#line 49 "../src/contacts-contact-pane.vala"
+       _tmp0_ = g_simple_action_group_new ();
+#line 49 "../src/contacts-contact-pane.vala"
+       self->priv->edit_contact_actions = _tmp0_;
+#line 64 "../src/contacts-contact-pane.vala"
+       self->on_edit_mode = FALSE;
+#line 65 "../src/contacts-contact-pane.vala"
+       self->priv->suggestion_grid = NULL;
+#line 30 "../src/contacts-contact-pane.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 2636 "contacts-contact-pane.c"
+}
+
+static void
+contacts_contact_pane_finalize (GObject * obj)
+{
+       ContactsContactPane * self;
+#line 30 "../src/contacts-contact-pane.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_CONTACT_PANE, ContactsContactPane);
+#line 32 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->parent_window);
+#line 34 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->store);
+#line 36 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->individual);
+#line 39 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->none_selected_page);
+#line 42 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->contact_sheet_page);
+#line 43 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->sheet);
+#line 46 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->contact_editor_page);
+#line 47 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->editor);
+#line 49 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->edit_contact_actions);
+#line 65 "../src/contacts-contact-pane.vala"
+       _g_object_unref0 (self->priv->suggestion_grid);
+#line 30 "../src/contacts-contact-pane.vala"
+       G_OBJECT_CLASS (contacts_contact_pane_parent_class)->finalize (obj);
+#line 2667 "contacts-contact-pane.c"
+}
+
+/**
+ * The ContactPage is the right pane. It consists of 3 possible pages:
+ * a page if nothing is selected, a ContactSheet to view contact information,
+ * and a ContactEditor to edit contact information.
+ */
+static GType
+contacts_contact_pane_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsContactPaneClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_contact_pane_class_init, (GClassFinalizeFunc) NULL, 
NULL, sizeof (ContactsContactPane), 0, (GInstanceInitFunc) contacts_contact_pane_instance_init, NULL };
+       GType contacts_contact_pane_type_id;
+       contacts_contact_pane_type_id = g_type_register_static (gtk_stack_get_type (), "ContactsContactPane", 
&g_define_type_info, 0);
+       ContactsContactPane_private_offset = g_type_add_instance_private (contacts_contact_pane_type_id, 
sizeof (ContactsContactPanePrivate));
+       return contacts_contact_pane_type_id;
+}
+
+GType
+contacts_contact_pane_get_type (void)
+{
+       static volatile gsize contacts_contact_pane_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_pane_type_id__volatile)) {
+               GType contacts_contact_pane_type_id;
+               contacts_contact_pane_type_id = contacts_contact_pane_get_type_once ();
+               g_once_init_leave (&contacts_contact_pane_type_id__volatile, contacts_contact_pane_type_id);
+       }
+       return contacts_contact_pane_type_id__volatile;
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
+static gint
+_vala_array_length (gpointer array)
+{
+       gint length;
+       length = 0;
+       if (array) {
+               while (((gpointer*) array)[length]) {
+                       length++;
+               }
+       }
+       return length;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c
new file mode 100644
index 0000000..cb17cd0
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-contact-sheet.c
@@ -0,0 +1,2140 @@
+/* contacts-contact-sheet.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-contact-sheet.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <folks/folks.h>
+#include "contacts.h"
+#include <glib.h>
+#include <gee.h>
+#include <stdlib.h>
+#include <string.h>
+#include <pango/pango.h>
+#include <glib/gi18n-lib.h>
+
+#define CONTACTS_TYPE_CONTACT_FORM (contacts_contact_form_get_type ())
+#define CONTACTS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactForm))
+#define CONTACTS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+#define CONTACTS_IS_CONTACT_FORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_IS_CONTACT_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_FORM))
+#define CONTACTS_CONTACT_FORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_FORM, 
ContactsContactFormClass))
+
+typedef struct _ContactsContactForm ContactsContactForm;
+typedef struct _ContactsContactFormClass ContactsContactFormClass;
+typedef struct _ContactsContactFormPrivate ContactsContactFormPrivate;
+
+#define CONTACTS_TYPE_CONTACT_SHEET (contacts_contact_sheet_get_type ())
+#define CONTACTS_CONTACT_SHEET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_SHEET, 
ContactsContactSheet))
+#define CONTACTS_CONTACT_SHEET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_SHEET, 
ContactsContactSheetClass))
+#define CONTACTS_IS_CONTACT_SHEET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_SHEET))
+#define CONTACTS_IS_CONTACT_SHEET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_CONTACT_SHEET))
+#define CONTACTS_CONTACT_SHEET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_CONTACT_SHEET, ContactsContactSheetClass))
+
+typedef struct _ContactsContactSheet ContactsContactSheet;
+typedef struct _ContactsContactSheetClass ContactsContactSheetClass;
+typedef struct _ContactsContactSheetPrivate ContactsContactSheetPrivate;
+enum  {
+       CONTACTS_CONTACT_SHEET_0_PROPERTY,
+       CONTACTS_CONTACT_SHEET_NUM_PROPERTIES
+};
+static GParamSpec* contacts_contact_sheet_properties[CONTACTS_CONTACT_SHEET_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_AVATAR (contacts_avatar_get_type ())
+#define CONTACTS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR, ContactsAvatar))
+#define CONTACTS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+#define CONTACTS_IS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_IS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_AVATAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+
+typedef struct _ContactsAvatar ContactsAvatar;
+typedef struct _ContactsAvatarClass ContactsAvatarClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+typedef struct _Block19Data Block19Data;
+typedef struct _Block20Data Block20Data;
+#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL)))
+
+struct _ContactsContactForm {
+       GtkGrid parent_instance;
+       ContactsContactFormPrivate * priv;
+       FolksIndividual* individual;
+       ContactsStore* store;
+       GtkGrid* container_grid;
+       gint last_row;
+};
+
+struct _ContactsContactFormClass {
+       GtkGridClass parent_class;
+};
+
+struct _ContactsContactSheet {
+       ContactsContactForm parent_instance;
+       ContactsContactSheetPrivate * priv;
+};
+
+struct _ContactsContactSheetClass {
+       ContactsContactFormClass parent_class;
+};
+
+struct _Block19Data {
+       int _ref_count_;
+       ContactsContactSheet* self;
+       GtkLabel* name_label;
+};
+
+struct _Block20Data {
+       int _ref_count_;
+       ContactsContactSheet* self;
+       FolksEmailFieldDetails* email;
+};
+
+static gpointer contacts_contact_sheet_parent_class = NULL;
+
+GType contacts_contact_form_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactForm, g_object_unref)
+GType contacts_contact_sheet_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactSheet, g_object_unref)
+ContactsContactSheet* contacts_contact_sheet_new (FolksIndividual* individual,
+                                                  ContactsStore* store);
+ContactsContactSheet* contacts_contact_sheet_construct (GType object_type,
+                                                        FolksIndividual* individual,
+                                                        ContactsStore* store);
+ContactsContactForm* contacts_contact_form_construct (GType object_type);
+static void contacts_contact_sheet_update (ContactsContactSheet* self);
+static void _contacts_contact_sheet_update_g_object_notify (GObject* _sender,
+                                                     GParamSpec* pspec,
+                                                     gpointer self);
+static void _contacts_contact_sheet_update_folks_individual_personas_changed (FolksIndividual* _sender,
+                                                                       GeeSet* added,
+                                                                       GeeSet* removed,
+                                                                       gpointer self);
+static void _contacts_contact_sheet_update_contacts_store_quiescent (ContactsStore* _sender,
+                                                              gpointer self);
+static GtkButton* contacts_contact_sheet_add_row_with_button (ContactsContactSheet* self,
+                                                       const gchar* label,
+                                                       const gchar* value,
+                                                       gboolean use_link_button);
+static void contacts_contact_sheet_add_row_with_label (ContactsContactSheet* self,
+                                                const gchar* label_value,
+                                                const gchar* value);
+static void __lambda11_ (ContactsContactSheet* self,
+                  GtkWidget* child);
+static void ___lambda11__gtk_callback (GtkWidget* widget,
+                                gpointer self);
+GType contacts_avatar_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatar, g_object_unref)
+#define PROFILE_SIZE 128
+ContactsAvatar* contacts_avatar_new (gint size,
+                                     FolksIndividual* individual);
+ContactsAvatar* contacts_avatar_construct (GType object_type,
+                                           gint size,
+                                           FolksIndividual* individual);
+static void contacts_contact_sheet_create_name_label (ContactsContactSheet* self);
+GtkLabel* contacts_contact_form_create_persona_store_label (ContactsContactForm* self,
+                                                            FolksPersona* p);
+static void contacts_contact_sheet_add_row_for_property (ContactsContactSheet* self,
+                                                  FolksPersona* persona,
+                                                  const gchar* property);
+static void contacts_contact_sheet_update_name_label (ContactsContactSheet* self,
+                                               GtkLabel* name_label);
+static Block19Data* block19_data_ref (Block19Data* _data19_);
+static void block19_data_unref (void * _userdata_);
+static void __lambda12_ (Block19Data* _data19_,
+                  GObject* obj,
+                  GParamSpec* spec);
+static void ___lambda12__g_object_notify (GObject* _sender,
+                                   GParamSpec* pspec,
+                                   gpointer self);
+static void contacts_contact_sheet_add_emails (ContactsContactSheet* self,
+                                        FolksPersona* persona);
+static void contacts_contact_sheet_add_phone_nrs (ContactsContactSheet* self,
+                                           FolksPersona* persona);
+static void contacts_contact_sheet_add_im_addresses (ContactsContactSheet* self,
+                                              FolksPersona* persona);
+static void contacts_contact_sheet_add_urls (ContactsContactSheet* self,
+                                      FolksPersona* persona);
+static void contacts_contact_sheet_add_nickname (ContactsContactSheet* self,
+                                          FolksPersona* persona);
+static void contacts_contact_sheet_add_birthday (ContactsContactSheet* self,
+                                          FolksPersona* persona);
+static void contacts_contact_sheet_add_notes (ContactsContactSheet* self,
+                                       FolksPersona* persona);
+static void contacts_contact_sheet_add_postal_addresses (ContactsContactSheet* self,
+                                                  FolksPersona* persona);
+static Block20Data* block20_data_ref (Block20Data* _data20_);
+static void block20_data_unref (void * _userdata_);
+static void _____lambda13_ (Block20Data* _data20_);
+static void ______lambda13__gtk_button_clicked (GtkButton* _sender,
+                                         gpointer self);
+static GType contacts_contact_sheet_get_type_once (void);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+extern const gchar* CONTACTS_CONTACT_FORM_SORTED_PROPERTIES[8];
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 29 "../src/contacts-contact-sheet.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 202 "contacts-contact-sheet.c"
+}
+
+static void
+_contacts_contact_sheet_update_g_object_notify (GObject* _sender,
+                                                GParamSpec* pspec,
+                                                gpointer self)
+{
+#line 32 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_update ((ContactsContactSheet*) self);
+#line 212 "contacts-contact-sheet.c"
+}
+
+static void
+_contacts_contact_sheet_update_folks_individual_personas_changed (FolksIndividual* _sender,
+                                                                  GeeSet* added,
+                                                                  GeeSet* removed,
+                                                                  gpointer self)
+{
+#line 33 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_update ((ContactsContactSheet*) self);
+#line 223 "contacts-contact-sheet.c"
+}
+
+static void
+_contacts_contact_sheet_update_contacts_store_quiescent (ContactsStore* _sender,
+                                                         gpointer self)
+{
+#line 34 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_update ((ContactsContactSheet*) self);
+#line 232 "contacts-contact-sheet.c"
+}
+
+ContactsContactSheet*
+contacts_contact_sheet_construct (GType object_type,
+                                  FolksIndividual* individual,
+                                  ContactsStore* store)
+{
+       ContactsContactSheet * self = NULL;
+       FolksIndividual* _tmp0_;
+       ContactsStore* _tmp1_;
+       FolksIndividual* _tmp2_;
+       FolksIndividual* _tmp3_;
+       ContactsStore* _tmp4_;
+#line 28 "../src/contacts-contact-sheet.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 28 "../src/contacts-contact-sheet.vala"
+       g_return_val_if_fail (store != NULL, NULL);
+#line 28 "../src/contacts-contact-sheet.vala"
+       self = (ContactsContactSheet*) contacts_contact_form_construct (object_type);
+#line 29 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (individual);
+#line 29 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (((ContactsContactForm*) self)->individual);
+#line 29 "../src/contacts-contact-sheet.vala"
+       ((ContactsContactForm*) self)->individual = _tmp0_;
+#line 30 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = _g_object_ref0 (store);
+#line 30 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (((ContactsContactForm*) self)->store);
+#line 30 "../src/contacts-contact-sheet.vala"
+       ((ContactsContactForm*) self)->store = _tmp1_;
+#line 32 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = ((ContactsContactForm*) self)->individual;
+#line 32 "../src/contacts-contact-sheet.vala"
+       g_signal_connect_object ((GObject*) _tmp2_, "notify", (GCallback) 
_contacts_contact_sheet_update_g_object_notify, self, 0);
+#line 33 "../src/contacts-contact-sheet.vala"
+       _tmp3_ = ((ContactsContactForm*) self)->individual;
+#line 33 "../src/contacts-contact-sheet.vala"
+       g_signal_connect_object (_tmp3_, "personas-changed", (GCallback) 
_contacts_contact_sheet_update_folks_individual_personas_changed, self, 0);
+#line 34 "../src/contacts-contact-sheet.vala"
+       _tmp4_ = ((ContactsContactForm*) self)->store;
+#line 34 "../src/contacts-contact-sheet.vala"
+       g_signal_connect_object (_tmp4_, "quiescent", (GCallback) 
_contacts_contact_sheet_update_contacts_store_quiescent, self, 0);
+#line 36 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_update (self);
+#line 28 "../src/contacts-contact-sheet.vala"
+       return self;
+#line 280 "contacts-contact-sheet.c"
+}
+
+ContactsContactSheet*
+contacts_contact_sheet_new (FolksIndividual* individual,
+                            ContactsStore* store)
+{
+#line 28 "../src/contacts-contact-sheet.vala"
+       return contacts_contact_sheet_construct (CONTACTS_TYPE_CONTACT_SHEET, individual, store);
+#line 289 "contacts-contact-sheet.c"
+}
+
+static GtkButton*
+contacts_contact_sheet_add_row_with_button (ContactsContactSheet* self,
+                                            const gchar* label,
+                                            const gchar* value,
+                                            gboolean use_link_button)
+{
+       GtkLabel* type_label = NULL;
+       GtkLabel* _tmp0_;
+       GtkLabel* _tmp1_;
+       GtkLabel* _tmp2_;
+       GtkLabel* _tmp3_;
+       GtkStyleContext* _tmp4_;
+       GtkGrid* _tmp5_;
+       GtkLabel* _tmp6_;
+       GtkButton* _tmp7_ = NULL;
+       GtkButton* value_button = NULL;
+       GtkButton* _tmp10_;
+       GtkGrid* _tmp11_;
+       gint _tmp12_;
+       GtkWidget* _tmp13_;
+       GtkWidget* _tmp14_;
+       GtkButton* result = NULL;
+#line 39 "../src/contacts-contact-sheet.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 39 "../src/contacts-contact-sheet.vala"
+       g_return_val_if_fail (label != NULL, NULL);
+#line 39 "../src/contacts-contact-sheet.vala"
+       g_return_val_if_fail (value != NULL, NULL);
+#line 40 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new (label);
+#line 40 "../src/contacts-contact-sheet.vala"
+       g_object_ref_sink (_tmp0_);
+#line 40 "../src/contacts-contact-sheet.vala"
+       type_label = _tmp0_;
+#line 41 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = type_label;
+#line 41 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_xalign (_tmp1_, 1.0f);
+#line 42 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = type_label;
+#line 42 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_END);
+#line 43 "../src/contacts-contact-sheet.vala"
+       _tmp3_ = type_label;
+#line 43 "../src/contacts-contact-sheet.vala"
+       _tmp4_ = gtk_widget_get_style_context ((GtkWidget*) _tmp3_);
+#line 43 "../src/contacts-contact-sheet.vala"
+       gtk_style_context_add_class (_tmp4_, "dim-label");
+#line 44 "../src/contacts-contact-sheet.vala"
+       _tmp5_ = ((ContactsContactForm*) self)->container_grid;
+#line 44 "../src/contacts-contact-sheet.vala"
+       _tmp6_ = type_label;
+#line 44 "../src/contacts-contact-sheet.vala"
+       gtk_grid_attach (_tmp5_, (GtkWidget*) _tmp6_, 0, ((ContactsContactForm*) self)->last_row, 1, 1);
+#line 46 "../src/contacts-contact-sheet.vala"
+       if (use_link_button) {
+#line 348 "contacts-contact-sheet.c"
+               GtkLinkButton* _tmp8_;
+#line 46 "../src/contacts-contact-sheet.vala"
+               _tmp8_ = (GtkLinkButton*) gtk_link_button_new (value);
+#line 46 "../src/contacts-contact-sheet.vala"
+               g_object_ref_sink (_tmp8_);
+#line 46 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (_tmp7_);
+#line 46 "../src/contacts-contact-sheet.vala"
+               _tmp7_ = (GtkButton*) _tmp8_;
+#line 358 "contacts-contact-sheet.c"
+       } else {
+               GtkButton* _tmp9_;
+#line 46 "../src/contacts-contact-sheet.vala"
+               _tmp9_ = (GtkButton*) gtk_button_new_with_label (value);
+#line 46 "../src/contacts-contact-sheet.vala"
+               g_object_ref_sink (_tmp9_);
+#line 46 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (_tmp7_);
+#line 46 "../src/contacts-contact-sheet.vala"
+               _tmp7_ = _tmp9_;
+#line 369 "contacts-contact-sheet.c"
+       }
+#line 46 "../src/contacts-contact-sheet.vala"
+       _tmp10_ = _g_object_ref0 (_tmp7_);
+#line 46 "../src/contacts-contact-sheet.vala"
+       value_button = _tmp10_;
+#line 47 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_focus_on_click ((GtkWidget*) value_button, FALSE);
+#line 48 "../src/contacts-contact-sheet.vala"
+       gtk_button_set_relief (value_button, GTK_RELIEF_NONE);
+#line 49 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_halign ((GtkWidget*) value_button, GTK_ALIGN_START);
+#line 50 "../src/contacts-contact-sheet.vala"
+       _tmp11_ = ((ContactsContactForm*) self)->container_grid;
+#line 50 "../src/contacts-contact-sheet.vala"
+       gtk_grid_attach (_tmp11_, (GtkWidget*) value_button, 1, ((ContactsContactForm*) self)->last_row, 1, 
1);
+#line 51 "../src/contacts-contact-sheet.vala"
+       _tmp12_ = ((ContactsContactForm*) self)->last_row;
+#line 51 "../src/contacts-contact-sheet.vala"
+       ((ContactsContactForm*) self)->last_row = _tmp12_ + 1;
+#line 53 "../src/contacts-contact-sheet.vala"
+       _tmp13_ = gtk_bin_get_child ((GtkBin*) value_button);
+#line 53 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_ellipsize (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, gtk_label_get_type ()) ? ((GtkLabel*) 
_tmp13_) : NULL, PANGO_ELLIPSIZE_END);
+#line 54 "../src/contacts-contact-sheet.vala"
+       _tmp14_ = gtk_bin_get_child ((GtkBin*) value_button);
+#line 54 "../src/contacts-contact-sheet.vala"
+       g_object_set (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp14_) : 
NULL, "wrap-mode", PANGO_WRAP_CHAR, NULL);
+#line 56 "../src/contacts-contact-sheet.vala"
+       result = value_button;
+#line 56 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (_tmp7_);
+#line 56 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (type_label);
+#line 56 "../src/contacts-contact-sheet.vala"
+       return result;
+#line 405 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_row_with_label (ContactsContactSheet* self,
+                                           const gchar* label_value,
+                                           const gchar* value)
+{
+       GtkLabel* type_label = NULL;
+       GtkLabel* _tmp0_;
+       GtkStyleContext* _tmp1_;
+       GtkGrid* _tmp2_;
+       GtkLabel* value_label = NULL;
+       GtkLabel* _tmp3_;
+       GtkGrid* _tmp4_;
+       gint _tmp5_;
+#line 59 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 59 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (label_value != NULL);
+#line 59 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (value != NULL);
+#line 60 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new (label_value);
+#line 60 "../src/contacts-contact-sheet.vala"
+       g_object_ref_sink (_tmp0_);
+#line 60 "../src/contacts-contact-sheet.vala"
+       type_label = _tmp0_;
+#line 61 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_xalign (type_label, 1.0f);
+#line 62 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_halign ((GtkWidget*) type_label, GTK_ALIGN_END);
+#line 63 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_valign ((GtkWidget*) type_label, GTK_ALIGN_START);
+#line 64 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = gtk_widget_get_style_context ((GtkWidget*) type_label);
+#line 64 "../src/contacts-contact-sheet.vala"
+       gtk_style_context_add_class (_tmp1_, "dim-label");
+#line 65 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = ((ContactsContactForm*) self)->container_grid;
+#line 65 "../src/contacts-contact-sheet.vala"
+       gtk_grid_attach (_tmp2_, (GtkWidget*) type_label, 0, ((ContactsContactForm*) self)->last_row, 1, 1);
+#line 67 "../src/contacts-contact-sheet.vala"
+       _tmp3_ = (GtkLabel*) gtk_label_new (value);
+#line 67 "../src/contacts-contact-sheet.vala"
+       g_object_ref_sink (_tmp3_);
+#line 67 "../src/contacts-contact-sheet.vala"
+       value_label = _tmp3_;
+#line 68 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_line_wrap (value_label, TRUE);
+#line 69 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_xalign (value_label, 0.0f);
+#line 70 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_halign ((GtkWidget*) value_label, GTK_ALIGN_START);
+#line 71 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_ellipsize (value_label, PANGO_ELLIPSIZE_END);
+#line 72 "../src/contacts-contact-sheet.vala"
+       g_object_set (value_label, "wrap-mode", PANGO_WRAP_CHAR, NULL);
+#line 73 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_selectable (value_label, TRUE);
+#line 76 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_margin_top ((GtkWidget*) type_label, 3);
+#line 77 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_margin_start ((GtkWidget*) value_label, 6);
+#line 78 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_margin_top ((GtkWidget*) value_label, 3);
+#line 79 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_margin_bottom ((GtkWidget*) value_label, 3);
+#line 81 "../src/contacts-contact-sheet.vala"
+       _tmp4_ = ((ContactsContactForm*) self)->container_grid;
+#line 81 "../src/contacts-contact-sheet.vala"
+       gtk_grid_attach (_tmp4_, (GtkWidget*) value_label, 1, ((ContactsContactForm*) self)->last_row, 1, 1);
+#line 82 "../src/contacts-contact-sheet.vala"
+       _tmp5_ = ((ContactsContactForm*) self)->last_row;
+#line 82 "../src/contacts-contact-sheet.vala"
+       ((ContactsContactForm*) self)->last_row = _tmp5_ + 1;
+#line 59 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (value_label);
+#line 59 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (type_label);
+#line 485 "contacts-contact-sheet.c"
+}
+
+static void
+__lambda11_ (ContactsContactSheet* self,
+             GtkWidget* child)
+{
+       GtkGrid* _tmp0_;
+#line 87 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (child != NULL);
+#line 87 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->container_grid;
+#line 87 "../src/contacts-contact-sheet.vala"
+       gtk_container_remove ((GtkContainer*) _tmp0_, child);
+#line 499 "contacts-contact-sheet.c"
+}
+
+static void
+___lambda11__gtk_callback (GtkWidget* widget,
+                           gpointer self)
+{
+#line 87 "../src/contacts-contact-sheet.vala"
+       __lambda11_ ((ContactsContactSheet*) self, widget);
+#line 508 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_update (ContactsContactSheet* self)
+{
+       GtkGrid* _tmp0_;
+       ContactsAvatar* image_frame = NULL;
+       FolksIndividual* _tmp1_;
+       ContactsAvatar* _tmp2_;
+       ContactsAvatar* _tmp3_;
+       ContactsAvatar* _tmp4_;
+       GtkGrid* _tmp5_;
+       ContactsAvatar* _tmp6_;
+       GeeList* personas = NULL;
+       FolksIndividual* _tmp7_;
+       GeeList* _tmp8_;
+#line 85 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 86 "../src/contacts-contact-sheet.vala"
+       ((ContactsContactForm*) self)->last_row = 0;
+#line 87 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->container_grid;
+#line 87 "../src/contacts-contact-sheet.vala"
+       gtk_container_foreach ((GtkContainer*) _tmp0_, ___lambda11__gtk_callback, self);
+#line 89 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = ((ContactsContactForm*) self)->individual;
+#line 89 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = contacts_avatar_new (PROFILE_SIZE, _tmp1_);
+#line 89 "../src/contacts-contact-sheet.vala"
+       g_object_ref_sink (_tmp2_);
+#line 89 "../src/contacts-contact-sheet.vala"
+       image_frame = _tmp2_;
+#line 90 "../src/contacts-contact-sheet.vala"
+       _tmp3_ = image_frame;
+#line 90 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_vexpand ((GtkWidget*) _tmp3_, FALSE);
+#line 91 "../src/contacts-contact-sheet.vala"
+       _tmp4_ = image_frame;
+#line 91 "../src/contacts-contact-sheet.vala"
+       gtk_widget_set_valign ((GtkWidget*) _tmp4_, GTK_ALIGN_START);
+#line 92 "../src/contacts-contact-sheet.vala"
+       _tmp5_ = ((ContactsContactForm*) self)->container_grid;
+#line 92 "../src/contacts-contact-sheet.vala"
+       _tmp6_ = image_frame;
+#line 92 "../src/contacts-contact-sheet.vala"
+       gtk_grid_attach (_tmp5_, (GtkWidget*) _tmp6_, 0, 0, 1, 3);
+#line 94 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_create_name_label (self);
+#line 96 "../src/contacts-contact-sheet.vala"
+       ((ContactsContactForm*) self)->last_row = ((ContactsContactForm*) self)->last_row + 3;
+#line 98 "../src/contacts-contact-sheet.vala"
+       _tmp7_ = ((ContactsContactForm*) self)->individual;
+#line 98 "../src/contacts-contact-sheet.vala"
+       _tmp8_ = contacts_utils_get_personas_for_display (_tmp7_);
+#line 98 "../src/contacts-contact-sheet.vala"
+       personas = _tmp8_;
+#line 565 "contacts-contact-sheet.c"
+       {
+               GeeList* _p_list = NULL;
+               GeeList* _tmp9_;
+               GeeList* _tmp10_;
+               gint _p_size = 0;
+               GeeList* _tmp11_;
+               gint _tmp12_;
+               gint _tmp13_;
+               gint _p_index = 0;
+#line 100 "../src/contacts-contact-sheet.vala"
+               _tmp9_ = personas;
+#line 100 "../src/contacts-contact-sheet.vala"
+               _tmp10_ = _g_object_ref0 (_tmp9_);
+#line 100 "../src/contacts-contact-sheet.vala"
+               _p_list = _tmp10_;
+#line 100 "../src/contacts-contact-sheet.vala"
+               _tmp11_ = _p_list;
+#line 100 "../src/contacts-contact-sheet.vala"
+               _tmp12_ = gee_collection_get_size ((GeeCollection*) _tmp11_);
+#line 100 "../src/contacts-contact-sheet.vala"
+               _tmp13_ = _tmp12_;
+#line 100 "../src/contacts-contact-sheet.vala"
+               _p_size = _tmp13_;
+#line 100 "../src/contacts-contact-sheet.vala"
+               _p_index = -1;
+#line 100 "../src/contacts-contact-sheet.vala"
+               while (TRUE) {
+#line 593 "contacts-contact-sheet.c"
+                       FolksPersona* p = NULL;
+                       GeeList* _tmp14_;
+                       gpointer _tmp15_;
+                       gboolean is_first_persona = FALSE;
+                       gint persona_store_pos = 0;
+                       gboolean is_empty_persona = FALSE;
+                       gboolean _tmp23_ = FALSE;
+#line 100 "../src/contacts-contact-sheet.vala"
+                       _p_index = _p_index + 1;
+#line 100 "../src/contacts-contact-sheet.vala"
+                       if (!(_p_index < _p_size)) {
+#line 100 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 607 "contacts-contact-sheet.c"
+                       }
+#line 100 "../src/contacts-contact-sheet.vala"
+                       _tmp14_ = _p_list;
+#line 100 "../src/contacts-contact-sheet.vala"
+                       _tmp15_ = gee_list_get (_tmp14_, _p_index);
+#line 100 "../src/contacts-contact-sheet.vala"
+                       p = (FolksPersona*) _tmp15_;
+#line 101 "../src/contacts-contact-sheet.vala"
+                       is_first_persona = ((ContactsContactForm*) self)->last_row == 3;
+#line 102 "../src/contacts-contact-sheet.vala"
+                       persona_store_pos = ((ContactsContactForm*) self)->last_row;
+#line 103 "../src/contacts-contact-sheet.vala"
+                       if (!is_first_persona) {
+#line 621 "contacts-contact-sheet.c"
+                               GtkGrid* _tmp16_;
+                               FolksPersona* _tmp17_;
+                               GtkLabel* _tmp18_;
+                               GtkLabel* _tmp19_;
+                               gint _tmp20_;
+#line 104 "../src/contacts-contact-sheet.vala"
+                               _tmp16_ = ((ContactsContactForm*) self)->container_grid;
+#line 104 "../src/contacts-contact-sheet.vala"
+                               _tmp17_ = p;
+#line 104 "../src/contacts-contact-sheet.vala"
+                               _tmp18_ = contacts_contact_form_create_persona_store_label 
((ContactsContactForm*) self, _tmp17_);
+#line 104 "../src/contacts-contact-sheet.vala"
+                               _tmp19_ = _tmp18_;
+#line 104 "../src/contacts-contact-sheet.vala"
+                               gtk_grid_attach (_tmp16_, (GtkWidget*) _tmp19_, 0, ((ContactsContactForm*) 
self)->last_row, 3, 1);
+#line 104 "../src/contacts-contact-sheet.vala"
+                               _g_object_unref0 (_tmp19_);
+#line 105 "../src/contacts-contact-sheet.vala"
+                               _tmp20_ = ((ContactsContactForm*) self)->last_row;
+#line 105 "../src/contacts-contact-sheet.vala"
+                               ((ContactsContactForm*) self)->last_row = _tmp20_ + 1;
+#line 643 "contacts-contact-sheet.c"
+                       }
+                       {
+                               const gchar** prop_collection = NULL;
+                               gint prop_collection_length1 = 0;
+                               gint _prop_collection_size_ = 0;
+                               gint prop_it = 0;
+#line 108 "../src/contacts-contact-sheet.vala"
+                               prop_collection = CONTACTS_CONTACT_FORM_SORTED_PROPERTIES;
+#line 108 "../src/contacts-contact-sheet.vala"
+                               prop_collection_length1 = G_N_ELEMENTS 
(CONTACTS_CONTACT_FORM_SORTED_PROPERTIES);
+#line 108 "../src/contacts-contact-sheet.vala"
+                               for (prop_it = 0; prop_it < prop_collection_length1; prop_it = prop_it + 1) {
+#line 656 "contacts-contact-sheet.c"
+                                       const gchar* prop = NULL;
+#line 108 "../src/contacts-contact-sheet.vala"
+                                       prop = prop_collection[prop_it];
+#line 660 "contacts-contact-sheet.c"
+                                       {
+                                               FolksPersona* _tmp21_;
+                                               const gchar* _tmp22_;
+#line 109 "../src/contacts-contact-sheet.vala"
+                                               _tmp21_ = p;
+#line 109 "../src/contacts-contact-sheet.vala"
+                                               _tmp22_ = prop;
+#line 109 "../src/contacts-contact-sheet.vala"
+                                               contacts_contact_sheet_add_row_for_property (self, _tmp21_, 
_tmp22_);
+#line 670 "contacts-contact-sheet.c"
+                                       }
+                               }
+                       }
+#line 112 "../src/contacts-contact-sheet.vala"
+                       is_empty_persona = ((ContactsContactForm*) self)->last_row == (persona_store_pos + 1);
+#line 113 "../src/contacts-contact-sheet.vala"
+                       if (!is_first_persona) {
+#line 113 "../src/contacts-contact-sheet.vala"
+                               _tmp23_ = is_empty_persona;
+#line 680 "contacts-contact-sheet.c"
+                       } else {
+#line 113 "../src/contacts-contact-sheet.vala"
+                               _tmp23_ = FALSE;
+#line 684 "contacts-contact-sheet.c"
+                       }
+#line 113 "../src/contacts-contact-sheet.vala"
+                       if (_tmp23_) {
+#line 688 "contacts-contact-sheet.c"
+                               GtkGrid* _tmp24_;
+                               gint _tmp25_;
+#line 114 "../src/contacts-contact-sheet.vala"
+                               _tmp24_ = ((ContactsContactForm*) self)->container_grid;
+#line 114 "../src/contacts-contact-sheet.vala"
+                               gtk_grid_remove_row (_tmp24_, persona_store_pos);
+#line 115 "../src/contacts-contact-sheet.vala"
+                               _tmp25_ = ((ContactsContactForm*) self)->last_row;
+#line 115 "../src/contacts-contact-sheet.vala"
+                               ((ContactsContactForm*) self)->last_row = _tmp25_ - 1;
+#line 699 "contacts-contact-sheet.c"
+                       }
+#line 100 "../src/contacts-contact-sheet.vala"
+                       _g_object_unref0 (p);
+#line 703 "contacts-contact-sheet.c"
+               }
+#line 100 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (_p_list);
+#line 707 "contacts-contact-sheet.c"
+       }
+#line 119 "../src/contacts-contact-sheet.vala"
+       gtk_widget_show_all ((GtkWidget*) self);
+#line 85 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (personas);
+#line 85 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (image_frame);
+#line 715 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_update_name_label (ContactsContactSheet* self,
+                                          GtkLabel* name_label)
+{
+       gchar* name = NULL;
+       FolksIndividual* _tmp0_;
+       const gchar* _tmp1_;
+       const gchar* _tmp2_;
+       gchar* _tmp3_;
+#line 122 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 122 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (name_label != NULL);
+#line 123 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->individual;
+#line 123 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = folks_individual_get_display_name (_tmp0_);
+#line 123 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = _tmp1_;
+#line 123 "../src/contacts-contact-sheet.vala"
+       _tmp3_ = g_markup_printf_escaped ("<span font='16'>%s</span>", _tmp2_);
+#line 123 "../src/contacts-contact-sheet.vala"
+       name = _tmp3_;
+#line 125 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_markup (name_label, name);
+#line 122 "../src/contacts-contact-sheet.vala"
+       _g_free0 (name);
+#line 745 "contacts-contact-sheet.c"
+}
+
+static Block19Data*
+block19_data_ref (Block19Data* _data19_)
+{
+#line 128 "../src/contacts-contact-sheet.vala"
+       g_atomic_int_inc (&_data19_->_ref_count_);
+#line 128 "../src/contacts-contact-sheet.vala"
+       return _data19_;
+#line 755 "contacts-contact-sheet.c"
+}
+
+static void
+block19_data_unref (void * _userdata_)
+{
+       Block19Data* _data19_;
+       _data19_ = (Block19Data*) _userdata_;
+#line 128 "../src/contacts-contact-sheet.vala"
+       if (g_atomic_int_dec_and_test (&_data19_->_ref_count_)) {
+#line 765 "contacts-contact-sheet.c"
+               ContactsContactSheet* self;
+#line 128 "../src/contacts-contact-sheet.vala"
+               self = _data19_->self;
+#line 128 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (_data19_->name_label);
+#line 128 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (self);
+#line 128 "../src/contacts-contact-sheet.vala"
+               g_slice_free (Block19Data, _data19_);
+#line 775 "contacts-contact-sheet.c"
+       }
+}
+
+static void
+__lambda12_ (Block19Data* _data19_,
+             GObject* obj,
+             GParamSpec* spec)
+{
+       ContactsContactSheet* self;
+#line 135 "../src/contacts-contact-sheet.vala"
+       self = _data19_->self;
+#line 135 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (obj != NULL);
+#line 135 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (spec != NULL);
+#line 136 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_update_name_label (self, _data19_->name_label);
+#line 793 "contacts-contact-sheet.c"
+}
+
+static void
+___lambda12__g_object_notify (GObject* _sender,
+                              GParamSpec* pspec,
+                              gpointer self)
+{
+#line 135 "../src/contacts-contact-sheet.vala"
+       __lambda12_ (self, _sender, pspec);
+#line 803 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_create_name_label (ContactsContactSheet* self)
+{
+       Block19Data* _data19_;
+       GtkLabel* _tmp0_;
+       GtkGrid* _tmp1_;
+       FolksIndividual* _tmp2_;
+#line 128 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 128 "../src/contacts-contact-sheet.vala"
+       _data19_ = g_slice_new0 (Block19Data);
+#line 128 "../src/contacts-contact-sheet.vala"
+       _data19_->_ref_count_ = 1;
+#line 128 "../src/contacts-contact-sheet.vala"
+       _data19_->self = g_object_ref (self);
+#line 129 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = (GtkLabel*) gtk_label_new ("");
+#line 129 "../src/contacts-contact-sheet.vala"
+       g_object_ref_sink (_tmp0_);
+#line 129 "../src/contacts-contact-sheet.vala"
+       _data19_->name_label = _tmp0_;
+#line 130 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_ellipsize (_data19_->name_label, PANGO_ELLIPSIZE_END);
+#line 131 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_xalign (_data19_->name_label, 0.f);
+#line 132 "../src/contacts-contact-sheet.vala"
+       gtk_label_set_selectable (_data19_->name_label, TRUE);
+#line 133 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = ((ContactsContactForm*) self)->container_grid;
+#line 133 "../src/contacts-contact-sheet.vala"
+       gtk_grid_attach (_tmp1_, (GtkWidget*) _data19_->name_label, 1, 0, 1, 3);
+#line 134 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_update_name_label (self, _data19_->name_label);
+#line 135 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = ((ContactsContactForm*) self)->individual;
+#line 135 "../src/contacts-contact-sheet.vala"
+       g_signal_connect_data ((GObject*) _tmp2_, "notify::display-name", (GCallback) 
___lambda12__g_object_notify, block19_data_ref (_data19_), (GClosureNotify) block19_data_unref, 0);
+#line 128 "../src/contacts-contact-sheet.vala"
+       block19_data_unref (_data19_);
+#line 128 "../src/contacts-contact-sheet.vala"
+       _data19_ = NULL;
+#line 847 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_row_for_property (ContactsContactSheet* self,
+                                             FolksPersona* persona,
+                                             const gchar* property)
+{
+       const gchar* _tmp0_;
+       GQuark _tmp2_ = 0U;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label0 = 0;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label1 = 0;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label2 = 0;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label3 = 0;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label4 = 0;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label5 = 0;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label6 = 0;
+#line 141 "../src/contacts-contact-sheet.vala"
+       static GQuark _tmp1_label7 = 0;
+#line 140 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 140 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 140 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (property != NULL);
+#line 141 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = property;
+#line 141 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = (NULL == _tmp0_) ? 0 : g_quark_from_string (_tmp0_);
+#line 141 "../src/contacts-contact-sheet.vala"
+       if (_tmp2_ == ((0 != _tmp1_label0) ? _tmp1_label0 : (_tmp1_label0 = g_quark_from_static_string 
("email-addresses")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 887 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 143 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_emails (self, persona);
+#line 144 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 894 "contacts-contact-sheet.c"
+                       }
+               }
+       } else if (_tmp2_ == ((0 != _tmp1_label1) ? _tmp1_label1 : (_tmp1_label1 = g_quark_from_static_string 
("phone-numbers")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 900 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 146 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_phone_nrs (self, persona);
+#line 147 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 907 "contacts-contact-sheet.c"
+                       }
+               }
+       } else if (_tmp2_ == ((0 != _tmp1_label2) ? _tmp1_label2 : (_tmp1_label2 = g_quark_from_static_string 
("im-addresses")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 913 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 149 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_im_addresses (self, persona);
+#line 150 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 920 "contacts-contact-sheet.c"
+                       }
+               }
+       } else if (_tmp2_ == ((0 != _tmp1_label3) ? _tmp1_label3 : (_tmp1_label3 = g_quark_from_static_string 
("urls")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 926 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 152 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_urls (self, persona);
+#line 153 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 933 "contacts-contact-sheet.c"
+                       }
+               }
+       } else if (_tmp2_ == ((0 != _tmp1_label4) ? _tmp1_label4 : (_tmp1_label4 = g_quark_from_static_string 
("nickname")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 939 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 155 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_nickname (self, persona);
+#line 156 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 946 "contacts-contact-sheet.c"
+                       }
+               }
+       } else if (_tmp2_ == ((0 != _tmp1_label5) ? _tmp1_label5 : (_tmp1_label5 = g_quark_from_static_string 
("birthday")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 952 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 158 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_birthday (self, persona);
+#line 159 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 959 "contacts-contact-sheet.c"
+                       }
+               }
+       } else if (_tmp2_ == ((0 != _tmp1_label6) ? _tmp1_label6 : (_tmp1_label6 = g_quark_from_static_string 
("notes")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 965 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 161 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_notes (self, persona);
+#line 162 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 972 "contacts-contact-sheet.c"
+                       }
+               }
+       } else if (_tmp2_ == ((0 != _tmp1_label7) ? _tmp1_label7 : (_tmp1_label7 = g_quark_from_static_string 
("postal-addresses")))) {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 978 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 164 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_postal_addresses (self, persona);
+#line 165 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 985 "contacts-contact-sheet.c"
+                       }
+               }
+       } else {
+#line 141 "../src/contacts-contact-sheet.vala"
+               switch (0) {
+#line 991 "contacts-contact-sheet.c"
+                       default:
+                       {
+#line 167 "../src/contacts-contact-sheet.vala"
+                               g_debug ("contacts-contact-sheet.vala:167: Unsupported property: %s", 
property);
+#line 168 "../src/contacts-contact-sheet.vala"
+                               break;
+#line 998 "contacts-contact-sheet.c"
+                       }
+               }
+       }
+}
+
+static Block20Data*
+block20_data_ref (Block20Data* _data20_)
+{
+#line 176 "../src/contacts-contact-sheet.vala"
+       g_atomic_int_inc (&_data20_->_ref_count_);
+#line 176 "../src/contacts-contact-sheet.vala"
+       return _data20_;
+#line 1011 "contacts-contact-sheet.c"
+}
+
+static void
+block20_data_unref (void * _userdata_)
+{
+       Block20Data* _data20_;
+       _data20_ = (Block20Data*) _userdata_;
+#line 176 "../src/contacts-contact-sheet.vala"
+       if (g_atomic_int_dec_and_test (&_data20_->_ref_count_)) {
+#line 1021 "contacts-contact-sheet.c"
+               ContactsContactSheet* self;
+#line 176 "../src/contacts-contact-sheet.vala"
+               self = _data20_->self;
+#line 176 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (_data20_->email);
+#line 176 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (self);
+#line 176 "../src/contacts-contact-sheet.vala"
+               g_slice_free (Block20Data, _data20_);
+#line 1031 "contacts-contact-sheet.c"
+       }
+}
+
+static void
+_____lambda13_ (Block20Data* _data20_)
+{
+       ContactsContactSheet* self;
+       FolksIndividual* _tmp0_;
+       const gchar* _tmp1_;
+       const gchar* _tmp2_;
+       FolksEmailFieldDetails* _tmp3_;
+       gconstpointer _tmp4_;
+       const gchar* _tmp5_;
+       gchar* _tmp6_;
+       gchar* _tmp7_;
+#line 178 "../src/contacts-contact-sheet.vala"
+       self = _data20_->self;
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = ((ContactsContactForm*) self)->individual;
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = folks_individual_get_display_name (_tmp0_);
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = _tmp1_;
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp3_ = _data20_->email;
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp4_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp3_);
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp5_ = _tmp4_;
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp6_ = g_strdup_printf ("%s <%s>", _tmp2_, (const gchar*) _tmp5_);
+#line 179 "../src/contacts-contact-sheet.vala"
+       _tmp7_ = _tmp6_;
+#line 179 "../src/contacts-contact-sheet.vala"
+       contacts_utils_compose_mail (_tmp7_);
+#line 179 "../src/contacts-contact-sheet.vala"
+       _g_free0 (_tmp7_);
+#line 1069 "contacts-contact-sheet.c"
+}
+
+static void
+______lambda13__gtk_button_clicked (GtkButton* _sender,
+                                    gpointer self)
+{
+#line 178 "../src/contacts-contact-sheet.vala"
+       _____lambda13_ (self);
+#line 1078 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_emails (ContactsContactSheet* self,
+                                   FolksPersona* persona)
+{
+       FolksEmailDetails* details = NULL;
+       FolksEmailDetails* _tmp0_;
+       FolksEmailDetails* _tmp1_;
+#line 172 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 172 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 173 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_EMAIL_DETAILS) ? 
((FolksEmailDetails*) persona) : NULL);
+#line 173 "../src/contacts-contact-sheet.vala"
+       details = _tmp0_;
+#line 174 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = details;
+#line 174 "../src/contacts-contact-sheet.vala"
+       if (_tmp1_ != NULL) {
+#line 1100 "contacts-contact-sheet.c"
+               GeeList* emails = NULL;
+               FolksEmailDetails* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeSet* _tmp4_;
+               GeeList* _tmp5_;
+#line 175 "../src/contacts-contact-sheet.vala"
+               _tmp2_ = details;
+#line 175 "../src/contacts-contact-sheet.vala"
+               _tmp3_ = folks_email_details_get_email_addresses (_tmp2_);
+#line 175 "../src/contacts-contact-sheet.vala"
+               _tmp4_ = _tmp3_;
+#line 175 "../src/contacts-contact-sheet.vala"
+               _tmp5_ = contacts_utils_sort_fields (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) 
g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _tmp4_);
+#line 175 "../src/contacts-contact-sheet.vala"
+               emails = _tmp5_;
+#line 1116 "contacts-contact-sheet.c"
+               {
+                       GeeList* _email_list = NULL;
+                       GeeList* _tmp6_;
+                       GeeList* _tmp7_;
+                       gint _email_size = 0;
+                       GeeList* _tmp8_;
+                       gint _tmp9_;
+                       gint _tmp10_;
+                       gint _email_index = 0;
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _tmp6_ = emails;
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _tmp7_ = _g_object_ref0 (_tmp6_);
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _email_list = _tmp7_;
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _tmp8_ = _email_list;
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _tmp9_ = gee_collection_get_size ((GeeCollection*) _tmp8_);
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _tmp10_ = _tmp9_;
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _email_size = _tmp10_;
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _email_index = -1;
+#line 176 "../src/contacts-contact-sheet.vala"
+                       while (TRUE) {
+#line 1144 "contacts-contact-sheet.c"
+                               Block20Data* _data20_;
+                               GeeList* _tmp11_;
+                               gpointer _tmp12_;
+                               GtkButton* button = NULL;
+                               ContactsTypeSet* _tmp13_;
+                               ContactsTypeSet* _tmp14_;
+                               FolksEmailFieldDetails* _tmp15_;
+                               gchar* _tmp16_;
+                               gchar* _tmp17_;
+                               FolksEmailFieldDetails* _tmp18_;
+                               gconstpointer _tmp19_;
+                               const gchar* _tmp20_;
+                               GtkButton* _tmp21_;
+                               GtkButton* _tmp22_;
+                               GtkButton* _tmp23_;
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _data20_ = g_slice_new0 (Block20Data);
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _data20_->_ref_count_ = 1;
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _data20_->self = g_object_ref (self);
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _email_index = _email_index + 1;
+#line 176 "../src/contacts-contact-sheet.vala"
+                               if (!(_email_index < _email_size)) {
+#line 176 "../src/contacts-contact-sheet.vala"
+                                       block20_data_unref (_data20_);
+#line 176 "../src/contacts-contact-sheet.vala"
+                                       _data20_ = NULL;
+#line 176 "../src/contacts-contact-sheet.vala"
+                                       break;
+#line 1176 "contacts-contact-sheet.c"
+                               }
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _tmp11_ = _email_list;
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _tmp12_ = gee_list_get (_tmp11_, _email_index);
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _data20_->email = (FolksEmailFieldDetails*) _tmp12_;
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp13_ = contacts_typeset_get_email ();
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp14_ = _tmp13_;
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp15_ = _data20_->email;
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp16_ = contacts_typeset_format_type (_tmp14_, (FolksAbstractFieldDetails*) 
_tmp15_);
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp17_ = _tmp16_;
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp18_ = _data20_->email;
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp19_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _tmp18_);
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp20_ = _tmp19_;
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp21_ = contacts_contact_sheet_add_row_with_button (self, _tmp17_, (const 
gchar*) _tmp20_, FALSE);
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _tmp22_ = _tmp21_;
+#line 177 "../src/contacts-contact-sheet.vala"
+                               _g_free0 (_tmp17_);
+#line 177 "../src/contacts-contact-sheet.vala"
+                               button = _tmp22_;
+#line 178 "../src/contacts-contact-sheet.vala"
+                               _tmp23_ = button;
+#line 178 "../src/contacts-contact-sheet.vala"
+                               g_signal_connect_data (_tmp23_, "clicked", (GCallback) 
______lambda13__gtk_button_clicked, block20_data_ref (_data20_), (GClosureNotify) block20_data_unref, 0);
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _g_object_unref0 (button);
+#line 176 "../src/contacts-contact-sheet.vala"
+                               block20_data_unref (_data20_);
+#line 176 "../src/contacts-contact-sheet.vala"
+                               _data20_ = NULL;
+#line 1218 "contacts-contact-sheet.c"
+                       }
+#line 176 "../src/contacts-contact-sheet.vala"
+                       _g_object_unref0 (_email_list);
+#line 1222 "contacts-contact-sheet.c"
+               }
+#line 174 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (emails);
+#line 1226 "contacts-contact-sheet.c"
+       }
+#line 172 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (details);
+#line 1230 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_phone_nrs (ContactsContactSheet* self,
+                                      FolksPersona* persona)
+{
+       FolksPhoneDetails* phone_details = NULL;
+       FolksPhoneDetails* _tmp0_;
+       FolksPhoneDetails* _tmp1_;
+#line 185 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 185 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 186 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_PHONE_DETAILS) ? 
((FolksPhoneDetails*) persona) : NULL);
+#line 186 "../src/contacts-contact-sheet.vala"
+       phone_details = _tmp0_;
+#line 187 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = phone_details;
+#line 187 "../src/contacts-contact-sheet.vala"
+       if (_tmp1_ != NULL) {
+#line 1252 "contacts-contact-sheet.c"
+               GeeList* phones = NULL;
+               FolksPhoneDetails* _tmp2_;
+               GeeSet* _tmp3_;
+               GeeSet* _tmp4_;
+               GeeList* _tmp5_;
+#line 188 "../src/contacts-contact-sheet.vala"
+               _tmp2_ = phone_details;
+#line 188 "../src/contacts-contact-sheet.vala"
+               _tmp3_ = folks_phone_details_get_phone_numbers (_tmp2_);
+#line 188 "../src/contacts-contact-sheet.vala"
+               _tmp4_ = _tmp3_;
+#line 188 "../src/contacts-contact-sheet.vala"
+               _tmp5_ = contacts_utils_sort_fields (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) 
g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _tmp4_);
+#line 188 "../src/contacts-contact-sheet.vala"
+               phones = _tmp5_;
+#line 1268 "contacts-contact-sheet.c"
+               {
+                       GeeList* _phone_list = NULL;
+                       GeeList* _tmp6_;
+                       GeeList* _tmp7_;
+                       gint _phone_size = 0;
+                       GeeList* _tmp8_;
+                       gint _tmp9_;
+                       gint _tmp10_;
+                       gint _phone_index = 0;
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _tmp6_ = phones;
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _tmp7_ = _g_object_ref0 (_tmp6_);
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _phone_list = _tmp7_;
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _tmp8_ = _phone_list;
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _tmp9_ = gee_collection_get_size ((GeeCollection*) _tmp8_);
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _tmp10_ = _tmp9_;
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _phone_size = _tmp10_;
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _phone_index = -1;
+#line 189 "../src/contacts-contact-sheet.vala"
+                       while (TRUE) {
+#line 1296 "contacts-contact-sheet.c"
+                               FolksPhoneFieldDetails* phone = NULL;
+                               GeeList* _tmp11_;
+                               gpointer _tmp12_;
+                               ContactsTypeSet* _tmp13_;
+                               ContactsTypeSet* _tmp14_;
+                               FolksPhoneFieldDetails* _tmp15_;
+                               gchar* _tmp16_;
+                               gchar* _tmp17_;
+                               FolksPhoneFieldDetails* _tmp18_;
+                               gconstpointer _tmp19_;
+                               const gchar* _tmp20_;
+#line 189 "../src/contacts-contact-sheet.vala"
+                               _phone_index = _phone_index + 1;
+#line 189 "../src/contacts-contact-sheet.vala"
+                               if (!(_phone_index < _phone_size)) {
+#line 189 "../src/contacts-contact-sheet.vala"
+                                       break;
+#line 1314 "contacts-contact-sheet.c"
+                               }
+#line 189 "../src/contacts-contact-sheet.vala"
+                               _tmp11_ = _phone_list;
+#line 189 "../src/contacts-contact-sheet.vala"
+                               _tmp12_ = gee_list_get (_tmp11_, _phone_index);
+#line 189 "../src/contacts-contact-sheet.vala"
+                               phone = (FolksPhoneFieldDetails*) _tmp12_;
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp13_ = contacts_typeset_get_phone ();
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp14_ = _tmp13_;
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp15_ = phone;
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp16_ = contacts_typeset_format_type (_tmp14_, (FolksAbstractFieldDetails*) 
_tmp15_);
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp17_ = _tmp16_;
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp18_ = phone;
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp19_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _tmp18_);
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _tmp20_ = _tmp19_;
+#line 200 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_row_with_label (self, _tmp17_, (const gchar*) 
_tmp20_);
+#line 200 "../src/contacts-contact-sheet.vala"
+                               _g_free0 (_tmp17_);
+#line 189 "../src/contacts-contact-sheet.vala"
+                               _g_object_unref0 (phone);
+#line 1344 "contacts-contact-sheet.c"
+                       }
+#line 189 "../src/contacts-contact-sheet.vala"
+                       _g_object_unref0 (_phone_list);
+#line 1348 "contacts-contact-sheet.c"
+               }
+#line 187 "../src/contacts-contact-sheet.vala"
+               _g_object_unref0 (phones);
+#line 1352 "contacts-contact-sheet.c"
+       }
+#line 185 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (phone_details);
+#line 1356 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_im_addresses (ContactsContactSheet* self,
+                                         FolksPersona* persona)
+{
+#line 206 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 206 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 1367 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_urls (ContactsContactSheet* self,
+                                 FolksPersona* persona)
+{
+       FolksUrlDetails* url_details = NULL;
+       FolksUrlDetails* _tmp0_;
+       FolksUrlDetails* _tmp1_;
+#line 230 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 230 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 231 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_URL_DETAILS) ? 
((FolksUrlDetails*) persona) : NULL);
+#line 231 "../src/contacts-contact-sheet.vala"
+       url_details = _tmp0_;
+#line 232 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = url_details;
+#line 232 "../src/contacts-contact-sheet.vala"
+       if (_tmp1_ != NULL) {
+#line 1389 "contacts-contact-sheet.c"
+               {
+                       GeeIterator* _url_it = NULL;
+                       FolksUrlDetails* _tmp2_;
+                       GeeSet* _tmp3_;
+                       GeeSet* _tmp4_;
+                       GeeIterator* _tmp5_;
+#line 233 "../src/contacts-contact-sheet.vala"
+                       _tmp2_ = url_details;
+#line 233 "../src/contacts-contact-sheet.vala"
+                       _tmp3_ = folks_url_details_get_urls (_tmp2_);
+#line 233 "../src/contacts-contact-sheet.vala"
+                       _tmp4_ = _tmp3_;
+#line 233 "../src/contacts-contact-sheet.vala"
+                       _tmp5_ = gee_iterable_iterator ((GeeIterable*) _tmp4_);
+#line 233 "../src/contacts-contact-sheet.vala"
+                       _url_it = _tmp5_;
+#line 233 "../src/contacts-contact-sheet.vala"
+                       while (TRUE) {
+#line 1408 "contacts-contact-sheet.c"
+                               GeeIterator* _tmp6_;
+                               FolksUrlFieldDetails* url = NULL;
+                               GeeIterator* _tmp7_;
+                               gpointer _tmp8_;
+                               FolksUrlFieldDetails* _tmp9_;
+                               gconstpointer _tmp10_;
+                               const gchar* _tmp11_;
+                               GtkButton* _tmp12_;
+                               GtkButton* _tmp13_;
+#line 233 "../src/contacts-contact-sheet.vala"
+                               _tmp6_ = _url_it;
+#line 233 "../src/contacts-contact-sheet.vala"
+                               if (!gee_iterator_next (_tmp6_)) {
+#line 233 "../src/contacts-contact-sheet.vala"
+                                       break;
+#line 1424 "contacts-contact-sheet.c"
+                               }
+#line 233 "../src/contacts-contact-sheet.vala"
+                               _tmp7_ = _url_it;
+#line 233 "../src/contacts-contact-sheet.vala"
+                               _tmp8_ = gee_iterator_get (_tmp7_);
+#line 233 "../src/contacts-contact-sheet.vala"
+                               url = (FolksUrlFieldDetails*) _tmp8_;
+#line 234 "../src/contacts-contact-sheet.vala"
+                               _tmp9_ = url;
+#line 234 "../src/contacts-contact-sheet.vala"
+                               _tmp10_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _tmp9_);
+#line 234 "../src/contacts-contact-sheet.vala"
+                               _tmp11_ = _tmp10_;
+#line 234 "../src/contacts-contact-sheet.vala"
+                               _tmp12_ = contacts_contact_sheet_add_row_with_button (self, _ ("Website"), 
(const gchar*) _tmp11_, TRUE);
+#line 234 "../src/contacts-contact-sheet.vala"
+                               _tmp13_ = _tmp12_;
+#line 234 "../src/contacts-contact-sheet.vala"
+                               _g_object_unref0 (_tmp13_);
+#line 233 "../src/contacts-contact-sheet.vala"
+                               _g_object_unref0 (url);
+#line 1446 "contacts-contact-sheet.c"
+                       }
+#line 233 "../src/contacts-contact-sheet.vala"
+                       _g_object_unref0 (_url_it);
+#line 1450 "contacts-contact-sheet.c"
+               }
+       }
+#line 230 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (url_details);
+#line 1455 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_nickname (ContactsContactSheet* self,
+                                     FolksPersona* persona)
+{
+       FolksNameDetails* name_details = NULL;
+       FolksNameDetails* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       FolksNameDetails* _tmp2_;
+#line 238 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 238 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 239 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_NAME_DETAILS) ? 
((FolksNameDetails*) persona) : NULL);
+#line 239 "../src/contacts-contact-sheet.vala"
+       name_details = _tmp0_;
+#line 240 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = name_details;
+#line 240 "../src/contacts-contact-sheet.vala"
+       if (_tmp2_ != NULL) {
+#line 1478 "contacts-contact-sheet.c"
+               FolksNameDetails* _tmp3_;
+               const gchar* _tmp4_;
+               const gchar* _tmp5_;
+#line 240 "../src/contacts-contact-sheet.vala"
+               _tmp3_ = name_details;
+#line 240 "../src/contacts-contact-sheet.vala"
+               _tmp4_ = folks_name_details_get_nickname (_tmp3_);
+#line 240 "../src/contacts-contact-sheet.vala"
+               _tmp5_ = _tmp4_;
+#line 240 "../src/contacts-contact-sheet.vala"
+               _tmp1_ = contacts_is_set (_tmp5_);
+#line 1490 "contacts-contact-sheet.c"
+       } else {
+#line 240 "../src/contacts-contact-sheet.vala"
+               _tmp1_ = FALSE;
+#line 1494 "contacts-contact-sheet.c"
+       }
+#line 240 "../src/contacts-contact-sheet.vala"
+       if (_tmp1_) {
+#line 1498 "contacts-contact-sheet.c"
+               FolksNameDetails* _tmp6_;
+               const gchar* _tmp7_;
+               const gchar* _tmp8_;
+#line 241 "../src/contacts-contact-sheet.vala"
+               _tmp6_ = name_details;
+#line 241 "../src/contacts-contact-sheet.vala"
+               _tmp7_ = folks_name_details_get_nickname (_tmp6_);
+#line 241 "../src/contacts-contact-sheet.vala"
+               _tmp8_ = _tmp7_;
+#line 241 "../src/contacts-contact-sheet.vala"
+               contacts_contact_sheet_add_row_with_label (self, _ ("Nickname"), _tmp8_);
+#line 1510 "contacts-contact-sheet.c"
+       }
+#line 238 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (name_details);
+#line 1514 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_birthday (ContactsContactSheet* self,
+                                     FolksPersona* persona)
+{
+       FolksBirthdayDetails* birthday_details = NULL;
+       FolksBirthdayDetails* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       FolksBirthdayDetails* _tmp2_;
+#line 244 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 244 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 245 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_BIRTHDAY_DETAILS) ? 
((FolksBirthdayDetails*) persona) : NULL);
+#line 245 "../src/contacts-contact-sheet.vala"
+       birthday_details = _tmp0_;
+#line 246 "../src/contacts-contact-sheet.vala"
+       _tmp2_ = birthday_details;
+#line 246 "../src/contacts-contact-sheet.vala"
+       if (_tmp2_ != NULL) {
+#line 1537 "contacts-contact-sheet.c"
+               FolksBirthdayDetails* _tmp3_;
+               GDateTime* _tmp4_;
+               GDateTime* _tmp5_;
+#line 246 "../src/contacts-contact-sheet.vala"
+               _tmp3_ = birthday_details;
+#line 246 "../src/contacts-contact-sheet.vala"
+               _tmp4_ = folks_birthday_details_get_birthday (_tmp3_);
+#line 246 "../src/contacts-contact-sheet.vala"
+               _tmp5_ = _tmp4_;
+#line 246 "../src/contacts-contact-sheet.vala"
+               _tmp1_ = _tmp5_ != NULL;
+#line 1549 "contacts-contact-sheet.c"
+       } else {
+#line 246 "../src/contacts-contact-sheet.vala"
+               _tmp1_ = FALSE;
+#line 1553 "contacts-contact-sheet.c"
+       }
+#line 246 "../src/contacts-contact-sheet.vala"
+       if (_tmp1_) {
+#line 1557 "contacts-contact-sheet.c"
+               FolksBirthdayDetails* _tmp6_;
+               GDateTime* _tmp7_;
+               GDateTime* _tmp8_;
+               GDateTime* _tmp9_;
+               GDateTime* _tmp10_;
+               gchar* _tmp11_;
+               gchar* _tmp12_;
+#line 247 "../src/contacts-contact-sheet.vala"
+               _tmp6_ = birthday_details;
+#line 247 "../src/contacts-contact-sheet.vala"
+               _tmp7_ = folks_birthday_details_get_birthday (_tmp6_);
+#line 247 "../src/contacts-contact-sheet.vala"
+               _tmp8_ = _tmp7_;
+#line 247 "../src/contacts-contact-sheet.vala"
+               _tmp9_ = g_date_time_to_local (_tmp8_);
+#line 247 "../src/contacts-contact-sheet.vala"
+               _tmp10_ = _tmp9_;
+#line 247 "../src/contacts-contact-sheet.vala"
+               _tmp11_ = g_date_time_format (_tmp10_, "%x");
+#line 247 "../src/contacts-contact-sheet.vala"
+               _tmp12_ = _tmp11_;
+#line 247 "../src/contacts-contact-sheet.vala"
+               contacts_contact_sheet_add_row_with_label (self, _ ("Birthday"), _tmp12_);
+#line 247 "../src/contacts-contact-sheet.vala"
+               _g_free0 (_tmp12_);
+#line 247 "../src/contacts-contact-sheet.vala"
+               _g_date_time_unref0 (_tmp10_);
+#line 1585 "contacts-contact-sheet.c"
+       }
+#line 244 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (birthday_details);
+#line 1589 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_add_notes (ContactsContactSheet* self,
+                                  FolksPersona* persona)
+{
+       FolksNoteDetails* note_details = NULL;
+       FolksNoteDetails* _tmp0_;
+       FolksNoteDetails* _tmp1_;
+#line 250 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 250 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 251 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_NOTE_DETAILS) ? 
((FolksNoteDetails*) persona) : NULL);
+#line 251 "../src/contacts-contact-sheet.vala"
+       note_details = _tmp0_;
+#line 252 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = note_details;
+#line 252 "../src/contacts-contact-sheet.vala"
+       if (_tmp1_ != NULL) {
+#line 1611 "contacts-contact-sheet.c"
+               {
+                       GeeIterator* _note_it = NULL;
+                       FolksNoteDetails* _tmp2_;
+                       GeeSet* _tmp3_;
+                       GeeSet* _tmp4_;
+                       GeeIterator* _tmp5_;
+#line 253 "../src/contacts-contact-sheet.vala"
+                       _tmp2_ = note_details;
+#line 253 "../src/contacts-contact-sheet.vala"
+                       _tmp3_ = folks_note_details_get_notes (_tmp2_);
+#line 253 "../src/contacts-contact-sheet.vala"
+                       _tmp4_ = _tmp3_;
+#line 253 "../src/contacts-contact-sheet.vala"
+                       _tmp5_ = gee_iterable_iterator ((GeeIterable*) _tmp4_);
+#line 253 "../src/contacts-contact-sheet.vala"
+                       _note_it = _tmp5_;
+#line 253 "../src/contacts-contact-sheet.vala"
+                       while (TRUE) {
+#line 1630 "contacts-contact-sheet.c"
+                               GeeIterator* _tmp6_;
+                               FolksNoteFieldDetails* note = NULL;
+                               GeeIterator* _tmp7_;
+                               gpointer _tmp8_;
+                               FolksNoteFieldDetails* _tmp9_;
+                               gconstpointer _tmp10_;
+                               const gchar* _tmp11_;
+#line 253 "../src/contacts-contact-sheet.vala"
+                               _tmp6_ = _note_it;
+#line 253 "../src/contacts-contact-sheet.vala"
+                               if (!gee_iterator_next (_tmp6_)) {
+#line 253 "../src/contacts-contact-sheet.vala"
+                                       break;
+#line 1644 "contacts-contact-sheet.c"
+                               }
+#line 253 "../src/contacts-contact-sheet.vala"
+                               _tmp7_ = _note_it;
+#line 253 "../src/contacts-contact-sheet.vala"
+                               _tmp8_ = gee_iterator_get (_tmp7_);
+#line 253 "../src/contacts-contact-sheet.vala"
+                               note = (FolksNoteFieldDetails*) _tmp8_;
+#line 254 "../src/contacts-contact-sheet.vala"
+                               _tmp9_ = note;
+#line 254 "../src/contacts-contact-sheet.vala"
+                               _tmp10_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _tmp9_);
+#line 254 "../src/contacts-contact-sheet.vala"
+                               _tmp11_ = _tmp10_;
+#line 254 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_row_with_label (self, _ ("Note"), (const gchar*) 
_tmp11_);
+#line 253 "../src/contacts-contact-sheet.vala"
+                               _g_object_unref0 (note);
+#line 1662 "contacts-contact-sheet.c"
+                       }
+#line 253 "../src/contacts-contact-sheet.vala"
+                       _g_object_unref0 (_note_it);
+#line 1666 "contacts-contact-sheet.c"
+               }
+       }
+#line 250 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (note_details);
+#line 1671 "contacts-contact-sheet.c"
+}
+
+static gchar*
+_vala_g_strjoinv (const gchar* separator,
+                  gchar** str_array,
+                  gint str_array_length1)
+{
+       gboolean _tmp0_ = FALSE;
+       gchar* result = NULL;
+#line 1200 "glib-2.0.vapi"
+       if (separator == NULL) {
+#line 1201 "glib-2.0.vapi"
+               separator = "";
+#line 1685 "contacts-contact-sheet.c"
+       }
+#line 1203 "glib-2.0.vapi"
+       if (str_array != NULL) {
+#line 1689 "contacts-contact-sheet.c"
+               gboolean _tmp1_ = FALSE;
+#line 1203 "glib-2.0.vapi"
+               if (str_array_length1 > 0) {
+#line 1203 "glib-2.0.vapi"
+                       _tmp1_ = TRUE;
+#line 1695 "contacts-contact-sheet.c"
+               } else {
+                       gboolean _tmp2_ = FALSE;
+#line 1203 "glib-2.0.vapi"
+                       if (str_array_length1 == -1) {
+#line 1700 "contacts-contact-sheet.c"
+                               const gchar* _tmp3_;
+#line 1203 "glib-2.0.vapi"
+                               _tmp3_ = str_array[0];
+#line 1203 "glib-2.0.vapi"
+                               _tmp2_ = _tmp3_ != NULL;
+#line 1706 "contacts-contact-sheet.c"
+                       } else {
+#line 1203 "glib-2.0.vapi"
+                               _tmp2_ = FALSE;
+#line 1710 "contacts-contact-sheet.c"
+                       }
+#line 1203 "glib-2.0.vapi"
+                       _tmp1_ = _tmp2_;
+#line 1714 "contacts-contact-sheet.c"
+               }
+#line 1203 "glib-2.0.vapi"
+               _tmp0_ = _tmp1_;
+#line 1718 "contacts-contact-sheet.c"
+       } else {
+#line 1203 "glib-2.0.vapi"
+               _tmp0_ = FALSE;
+#line 1722 "contacts-contact-sheet.c"
+       }
+#line 1203 "glib-2.0.vapi"
+       if (_tmp0_) {
+#line 1726 "contacts-contact-sheet.c"
+               gint i = 0;
+               gsize len = 0UL;
+               gint _tmp16_;
+               gint _tmp17_;
+               const gchar* res = NULL;
+               void* _tmp18_;
+               void* ptr = NULL;
+               const gchar* _tmp19_;
+               const gchar* _tmp20_;
+               void* _tmp21_;
+               const gchar* _tmp31_;
+#line 1205 "glib-2.0.vapi"
+               len = (gsize) 1;
+#line 1740 "contacts-contact-sheet.c"
+               {
+                       gboolean _tmp4_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                       i = 0;
+#line 1206 "glib-2.0.vapi"
+                       _tmp4_ = TRUE;
+#line 1206 "glib-2.0.vapi"
+                       while (TRUE) {
+#line 1749 "contacts-contact-sheet.c"
+                               gboolean _tmp6_ = FALSE;
+                               gboolean _tmp7_ = FALSE;
+                               gint _tmp10_ = 0;
+                               const gchar* _tmp11_;
+#line 1206 "glib-2.0.vapi"
+                               if (!_tmp4_) {
+#line 1756 "contacts-contact-sheet.c"
+                                       gint _tmp5_;
+#line 1206 "glib-2.0.vapi"
+                                       _tmp5_ = i;
+#line 1206 "glib-2.0.vapi"
+                                       i = _tmp5_ + 1;
+#line 1762 "contacts-contact-sheet.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               _tmp4_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                               if (str_array_length1 != -1) {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp7_ = i < str_array_length1;
+#line 1770 "contacts-contact-sheet.c"
+                               } else {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp7_ = FALSE;
+#line 1774 "contacts-contact-sheet.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               if (_tmp7_) {
+#line 1206 "glib-2.0.vapi"
+                                       _tmp6_ = TRUE;
+#line 1780 "contacts-contact-sheet.c"
+                               } else {
+                                       gboolean _tmp8_ = FALSE;
+#line 1206 "glib-2.0.vapi"
+                                       if (str_array_length1 == -1) {
+#line 1785 "contacts-contact-sheet.c"
+                                               const gchar* _tmp9_;
+#line 1206 "glib-2.0.vapi"
+                                               _tmp9_ = str_array[i];
+#line 1206 "glib-2.0.vapi"
+                                               _tmp8_ = _tmp9_ != NULL;
+#line 1791 "contacts-contact-sheet.c"
+                                       } else {
+#line 1206 "glib-2.0.vapi"
+                                               _tmp8_ = FALSE;
+#line 1795 "contacts-contact-sheet.c"
+                                       }
+#line 1206 "glib-2.0.vapi"
+                                       _tmp6_ = _tmp8_;
+#line 1799 "contacts-contact-sheet.c"
+                               }
+#line 1206 "glib-2.0.vapi"
+                               if (!_tmp6_) {
+#line 1206 "glib-2.0.vapi"
+                                       break;
+#line 1805 "contacts-contact-sheet.c"
+                               }
+#line 1207 "glib-2.0.vapi"
+                               _tmp11_ = str_array[i];
+#line 1207 "glib-2.0.vapi"
+                               if (_tmp11_ != NULL) {
+#line 1811 "contacts-contact-sheet.c"
+                                       const gchar* _tmp12_;
+                                       gint _tmp13_;
+                                       gint _tmp14_;
+#line 1207 "glib-2.0.vapi"
+                                       _tmp12_ = str_array[i];
+#line 1207 "glib-2.0.vapi"
+                                       _tmp13_ = strlen ((const gchar*) _tmp12_);
+#line 1207 "glib-2.0.vapi"
+                                       _tmp14_ = _tmp13_;
+#line 1207 "glib-2.0.vapi"
+                                       _tmp10_ = _tmp14_;
+#line 1823 "contacts-contact-sheet.c"
+                               } else {
+#line 1207 "glib-2.0.vapi"
+                                       _tmp10_ = 0;
+#line 1827 "contacts-contact-sheet.c"
+                               }
+#line 1207 "glib-2.0.vapi"
+                               len += (gsize) _tmp10_;
+#line 1831 "contacts-contact-sheet.c"
+                       }
+               }
+#line 1209 "glib-2.0.vapi"
+               if (i == 0) {
+#line 1836 "contacts-contact-sheet.c"
+                       gchar* _tmp15_;
+#line 1210 "glib-2.0.vapi"
+                       _tmp15_ = g_strdup ("");
+#line 1210 "glib-2.0.vapi"
+                       result = _tmp15_;
+#line 1210 "glib-2.0.vapi"
+                       return result;
+#line 1844 "contacts-contact-sheet.c"
+               }
+#line 1212 "glib-2.0.vapi"
+               str_array_length1 = i;
+#line 1213 "glib-2.0.vapi"
+               _tmp16_ = strlen ((const gchar*) separator);
+#line 1213 "glib-2.0.vapi"
+               _tmp17_ = _tmp16_;
+#line 1213 "glib-2.0.vapi"
+               len += (gsize) (_tmp17_ * (i - 1));
+#line 1215 "glib-2.0.vapi"
+               _tmp18_ = g_malloc (len);
+#line 1215 "glib-2.0.vapi"
+               res = _tmp18_;
+#line 1216 "glib-2.0.vapi"
+               _tmp19_ = res;
+#line 1216 "glib-2.0.vapi"
+               _tmp20_ = str_array[0];
+#line 1216 "glib-2.0.vapi"
+               _tmp21_ = g_stpcpy ((void*) _tmp19_, (const gchar*) _tmp20_);
+#line 1216 "glib-2.0.vapi"
+               ptr = _tmp21_;
+#line 1866 "contacts-contact-sheet.c"
+               {
+                       gboolean _tmp22_ = FALSE;
+#line 1217 "glib-2.0.vapi"
+                       i = 1;
+#line 1217 "glib-2.0.vapi"
+                       _tmp22_ = TRUE;
+#line 1217 "glib-2.0.vapi"
+                       while (TRUE) {
+#line 1875 "contacts-contact-sheet.c"
+                               void* _tmp24_;
+                               void* _tmp25_;
+                               const gchar* _tmp26_ = NULL;
+                               const gchar* _tmp27_;
+                               void* _tmp29_;
+                               void* _tmp30_;
+#line 1217 "glib-2.0.vapi"
+                               if (!_tmp22_) {
+#line 1884 "contacts-contact-sheet.c"
+                                       gint _tmp23_;
+#line 1217 "glib-2.0.vapi"
+                                       _tmp23_ = i;
+#line 1217 "glib-2.0.vapi"
+                                       i = _tmp23_ + 1;
+#line 1890 "contacts-contact-sheet.c"
+                               }
+#line 1217 "glib-2.0.vapi"
+                               _tmp22_ = FALSE;
+#line 1217 "glib-2.0.vapi"
+                               if (!(i < str_array_length1)) {
+#line 1217 "glib-2.0.vapi"
+                                       break;
+#line 1898 "contacts-contact-sheet.c"
+                               }
+#line 1218 "glib-2.0.vapi"
+                               _tmp24_ = ptr;
+#line 1218 "glib-2.0.vapi"
+                               _tmp25_ = g_stpcpy (_tmp24_, (const gchar*) separator);
+#line 1218 "glib-2.0.vapi"
+                               ptr = _tmp25_;
+#line 1219 "glib-2.0.vapi"
+                               _tmp27_ = str_array[i];
+#line 1219 "glib-2.0.vapi"
+                               if (_tmp27_ != NULL) {
+#line 1910 "contacts-contact-sheet.c"
+                                       const gchar* _tmp28_;
+#line 1219 "glib-2.0.vapi"
+                                       _tmp28_ = str_array[i];
+#line 1219 "glib-2.0.vapi"
+                                       _tmp26_ = (const gchar*) _tmp28_;
+#line 1916 "contacts-contact-sheet.c"
+                               } else {
+#line 1219 "glib-2.0.vapi"
+                                       _tmp26_ = "";
+#line 1920 "contacts-contact-sheet.c"
+                               }
+#line 1219 "glib-2.0.vapi"
+                               _tmp29_ = ptr;
+#line 1219 "glib-2.0.vapi"
+                               _tmp30_ = g_stpcpy (_tmp29_, _tmp26_);
+#line 1219 "glib-2.0.vapi"
+                               ptr = _tmp30_;
+#line 1928 "contacts-contact-sheet.c"
+                       }
+               }
+#line 1222 "glib-2.0.vapi"
+               _tmp31_ = res;
+#line 1222 "glib-2.0.vapi"
+               res = NULL;
+#line 1222 "glib-2.0.vapi"
+               result = (gchar*) _tmp31_;
+#line 1222 "glib-2.0.vapi"
+               return result;
+#line 1939 "contacts-contact-sheet.c"
+       } else {
+               gchar* _tmp32_;
+#line 1224 "glib-2.0.vapi"
+               _tmp32_ = g_strdup ("");
+#line 1224 "glib-2.0.vapi"
+               result = _tmp32_;
+#line 1224 "glib-2.0.vapi"
+               return result;
+#line 1948 "contacts-contact-sheet.c"
+       }
+}
+
+static void
+contacts_contact_sheet_add_postal_addresses (ContactsContactSheet* self,
+                                             FolksPersona* persona)
+{
+       FolksPostalAddressDetails* addr_details = NULL;
+       FolksPostalAddressDetails* _tmp0_;
+       FolksPostalAddressDetails* _tmp1_;
+#line 258 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (self != NULL);
+#line 258 "../src/contacts-contact-sheet.vala"
+       g_return_if_fail (persona != NULL);
+#line 259 "../src/contacts-contact-sheet.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_POSTAL_ADDRESS_DETAILS) ? 
((FolksPostalAddressDetails*) persona) : NULL);
+#line 259 "../src/contacts-contact-sheet.vala"
+       addr_details = _tmp0_;
+#line 260 "../src/contacts-contact-sheet.vala"
+       _tmp1_ = addr_details;
+#line 260 "../src/contacts-contact-sheet.vala"
+       if (_tmp1_ != NULL) {
+#line 1971 "contacts-contact-sheet.c"
+               {
+                       GeeIterator* _addr_it = NULL;
+                       FolksPostalAddressDetails* _tmp2_;
+                       GeeSet* _tmp3_;
+                       GeeSet* _tmp4_;
+                       GeeIterator* _tmp5_;
+#line 261 "../src/contacts-contact-sheet.vala"
+                       _tmp2_ = addr_details;
+#line 261 "../src/contacts-contact-sheet.vala"
+                       _tmp3_ = folks_postal_address_details_get_postal_addresses (_tmp2_);
+#line 261 "../src/contacts-contact-sheet.vala"
+                       _tmp4_ = _tmp3_;
+#line 261 "../src/contacts-contact-sheet.vala"
+                       _tmp5_ = gee_iterable_iterator ((GeeIterable*) _tmp4_);
+#line 261 "../src/contacts-contact-sheet.vala"
+                       _addr_it = _tmp5_;
+#line 261 "../src/contacts-contact-sheet.vala"
+                       while (TRUE) {
+#line 1990 "contacts-contact-sheet.c"
+                               GeeIterator* _tmp6_;
+                               FolksPostalAddressFieldDetails* addr = NULL;
+                               GeeIterator* _tmp7_;
+                               gpointer _tmp8_;
+                               gchar* all_strs = NULL;
+                               FolksPostalAddressFieldDetails* _tmp9_;
+                               gconstpointer _tmp10_;
+                               FolksPostalAddress* _tmp11_;
+                               gint _tmp12_ = 0;
+                               gchar** _tmp13_;
+                               gchar** _tmp14_;
+                               gint _tmp14__length1;
+                               gchar* _tmp15_;
+                               gchar* _tmp16_;
+                               ContactsTypeSet* _tmp17_;
+                               ContactsTypeSet* _tmp18_;
+                               FolksPostalAddressFieldDetails* _tmp19_;
+                               gchar* _tmp20_;
+                               gchar* _tmp21_;
+                               const gchar* _tmp22_;
+#line 261 "../src/contacts-contact-sheet.vala"
+                               _tmp6_ = _addr_it;
+#line 261 "../src/contacts-contact-sheet.vala"
+                               if (!gee_iterator_next (_tmp6_)) {
+#line 261 "../src/contacts-contact-sheet.vala"
+                                       break;
+#line 2017 "contacts-contact-sheet.c"
+                               }
+#line 261 "../src/contacts-contact-sheet.vala"
+                               _tmp7_ = _addr_it;
+#line 261 "../src/contacts-contact-sheet.vala"
+                               _tmp8_ = gee_iterator_get (_tmp7_);
+#line 261 "../src/contacts-contact-sheet.vala"
+                               addr = (FolksPostalAddressFieldDetails*) _tmp8_;
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp9_ = addr;
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp10_ = folks_abstract_field_details_get_value 
((FolksAbstractFieldDetails*) _tmp9_);
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp11_ = _tmp10_;
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp13_ = contacts_utils_format_address ((FolksPostalAddress*) _tmp11_, 
&_tmp12_);
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp14_ = _tmp13_;
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp14__length1 = _tmp12_;
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp15_ = _vala_g_strjoinv ("\n", _tmp14_, (gint) _tmp12_);
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp16_ = _tmp15_;
+#line 262 "../src/contacts-contact-sheet.vala"
+                               _tmp14_ = (_vala_array_free (_tmp14_, _tmp14__length1, (GDestroyNotify) 
g_free), NULL);
+#line 262 "../src/contacts-contact-sheet.vala"
+                               all_strs = _tmp16_;
+#line 263 "../src/contacts-contact-sheet.vala"
+                               _tmp17_ = contacts_typeset_get_general ();
+#line 263 "../src/contacts-contact-sheet.vala"
+                               _tmp18_ = _tmp17_;
+#line 263 "../src/contacts-contact-sheet.vala"
+                               _tmp19_ = addr;
+#line 263 "../src/contacts-contact-sheet.vala"
+                               _tmp20_ = contacts_typeset_format_type (_tmp18_, (FolksAbstractFieldDetails*) 
_tmp19_);
+#line 263 "../src/contacts-contact-sheet.vala"
+                               _tmp21_ = _tmp20_;
+#line 263 "../src/contacts-contact-sheet.vala"
+                               _tmp22_ = all_strs;
+#line 263 "../src/contacts-contact-sheet.vala"
+                               contacts_contact_sheet_add_row_with_label (self, _tmp21_, _tmp22_);
+#line 263 "../src/contacts-contact-sheet.vala"
+                               _g_free0 (_tmp21_);
+#line 261 "../src/contacts-contact-sheet.vala"
+                               _g_free0 (all_strs);
+#line 261 "../src/contacts-contact-sheet.vala"
+                               _g_object_unref0 (addr);
+#line 2065 "contacts-contact-sheet.c"
+                       }
+#line 261 "../src/contacts-contact-sheet.vala"
+                       _g_object_unref0 (_addr_it);
+#line 2069 "contacts-contact-sheet.c"
+               }
+       }
+#line 258 "../src/contacts-contact-sheet.vala"
+       _g_object_unref0 (addr_details);
+#line 2074 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_class_init (ContactsContactSheetClass * klass,
+                                   gpointer klass_data)
+{
+#line 27 "../src/contacts-contact-sheet.vala"
+       contacts_contact_sheet_parent_class = g_type_class_peek_parent (klass);
+#line 2083 "contacts-contact-sheet.c"
+}
+
+static void
+contacts_contact_sheet_instance_init (ContactsContactSheet * self,
+                                      gpointer klass)
+{
+}
+
+/**
+ * The contact sheet displays the actual information of a contact.
+ *
+ * (Note: to edit a contact, use the {@link ContactEditor} instead.
+ */
+static GType
+contacts_contact_sheet_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsContactSheetClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_contact_sheet_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsContactSheet), 0, (GInstanceInitFunc) contacts_contact_sheet_instance_init, NULL 
};
+       GType contacts_contact_sheet_type_id;
+       contacts_contact_sheet_type_id = g_type_register_static (CONTACTS_TYPE_CONTACT_FORM, 
"ContactsContactSheet", &g_define_type_info, 0);
+       return contacts_contact_sheet_type_id;
+}
+
+GType
+contacts_contact_sheet_get_type (void)
+{
+       static volatile gsize contacts_contact_sheet_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_contact_sheet_type_id__volatile)) {
+               GType contacts_contact_sheet_type_id;
+               contacts_contact_sheet_type_id = contacts_contact_sheet_get_type_once ();
+               g_once_init_leave (&contacts_contact_sheet_type_id__volatile, contacts_contact_sheet_type_id);
+       }
+       return contacts_contact_sheet_type_id__volatile;
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c
new file mode 100644
index 0000000..6dd62f5
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-crop-cheese-dialog.c
@@ -0,0 +1,570 @@
+/* contacts-crop-cheese-dialog.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-crop-cheese-dialog.vala, do not modify */
+
+/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */
+/*
+ * Copyright (C) 2018 Elias Entrup <elias-git flump de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <cc-crop-area.h>
+#include <cheese-flash.h>
+#include <cheese-widget.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <cheese/cheese-camera.h>
+#include "contacts.h"
+#include <glib/gi18n-lib.h>
+
+#define CONTACTS_TYPE_CROP_CHEESE_DIALOG (contacts_crop_cheese_dialog_get_type ())
+#define CONTACTS_CROP_CHEESE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG, ContactsCropCheeseDialog))
+#define CONTACTS_CROP_CHEESE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG, ContactsCropCheeseDialogClass))
+#define CONTACTS_IS_CROP_CHEESE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG))
+#define CONTACTS_IS_CROP_CHEESE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG))
+#define CONTACTS_CROP_CHEESE_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_CROP_CHEESE_DIALOG, ContactsCropCheeseDialogClass))
+
+typedef struct _ContactsCropCheeseDialog ContactsCropCheeseDialog;
+typedef struct _ContactsCropCheeseDialogClass ContactsCropCheeseDialogClass;
+typedef struct _ContactsCropCheeseDialogPrivate ContactsCropCheeseDialogPrivate;
+enum  {
+       CONTACTS_CROP_CHEESE_DIALOG_0_PROPERTY,
+       CONTACTS_CROP_CHEESE_DIALOG_NUM_PROPERTIES
+};
+static GParamSpec* contacts_crop_cheese_dialog_properties[CONTACTS_CROP_CHEESE_DIALOG_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+enum  {
+       CONTACTS_CROP_CHEESE_DIALOG_PICTURE_SELECTED_SIGNAL,
+       CONTACTS_CROP_CHEESE_DIALOG_NUM_SIGNALS
+};
+static guint contacts_crop_cheese_dialog_signals[CONTACTS_CROP_CHEESE_DIALOG_NUM_SIGNALS] = {0};
+
+struct _ContactsCropCheeseDialog {
+       GtkWindow parent_instance;
+       ContactsCropCheeseDialogPrivate * priv;
+};
+
+struct _ContactsCropCheeseDialogClass {
+       GtkWindowClass parent_class;
+};
+
+struct _ContactsCropCheeseDialogPrivate {
+       GtkStack* stack;
+       GtkButton* take_another_button;
+       CcCropArea* crop_area;
+       CheeseFlash* flash;
+       CheeseWidget* cheese;
+};
+
+static gint ContactsCropCheeseDialog_private_offset;
+static gpointer contacts_crop_cheese_dialog_parent_class = NULL;
+
+GType contacts_crop_cheese_dialog_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsCropCheeseDialog, g_object_unref)
+#define CONTACTS_CROP_CHEESE_DIALOG_STACK_NAME_CROP "crop"
+#define CONTACTS_CROP_CHEESE_DIALOG_STACK_NAME_CHEESE "cheese"
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_new_for_cheese (GtkWindow* parent);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_construct_for_cheese (GType object_type,
+                                                                            GtkWindow* parent);
+static void contacts_crop_cheese_dialog_setup_widget (ContactsCropCheeseDialog* self,
+                                               GtkWindow* parent);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_new_for_crop (GtkWindow* parent,
+                                                                    GdkPixbuf* pixbuf);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_construct_for_crop (GType object_type,
+                                                                          GtkWindow* parent,
+                                                                          GdkPixbuf* pixbuf);
+static void contacts_crop_cheese_dialog_on_cancel_clicked (ContactsCropCheeseDialog* self,
+                                                    GtkButton* button);
+static void _contacts_crop_cheese_dialog_on_cancel_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                        gpointer self);
+static void contacts_crop_cheese_dialog_on_take_another_clicked (ContactsCropCheeseDialog* self,
+                                                          GtkButton* button);
+static void _contacts_crop_cheese_dialog_on_take_another_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                              gpointer self);
+static void contacts_crop_cheese_dialog_on_take_pic_clicked (ContactsCropCheeseDialog* self,
+                                                      GtkButton* button);
+static void __lambda18_ (ContactsCropCheeseDialog* self,
+                  GdkPixbuf* pix);
+static void ___lambda18__cheese_camera_photo_taken (CheeseCamera* _sender,
+                                             GdkPixbuf* pixbuf,
+                                             gpointer self);
+static void _contacts_crop_cheese_dialog_on_take_pic_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                          gpointer self);
+static void contacts_crop_cheese_dialog_on_done_clicked (ContactsCropCheeseDialog* self,
+                                                  GtkButton* button);
+static void _contacts_crop_cheese_dialog_on_done_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                      gpointer self);
+static void contacts_crop_cheese_dialog_on_destroy (ContactsCropCheeseDialog* self);
+static void _contacts_crop_cheese_dialog_on_destroy_gtk_widget_destroy (GtkWidget* _sender,
+                                                                 gpointer self);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_new (void);
+ContactsCropCheeseDialog* contacts_crop_cheese_dialog_construct (GType object_type);
+static void contacts_crop_cheese_dialog_finalize (GObject * obj);
+static GType contacts_crop_cheese_dialog_get_type_once (void);
+
+static inline gpointer
+contacts_crop_cheese_dialog_get_instance_private (ContactsCropCheeseDialog* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsCropCheeseDialog_private_offset);
+}
+
+ContactsCropCheeseDialog*
+contacts_crop_cheese_dialog_construct_for_cheese (GType object_type,
+                                                  GtkWindow* parent)
+{
+       ContactsCropCheeseDialog * self = NULL;
+       CheeseFlash* _tmp0_;
+       CheeseWidget* _tmp1_;
+       CheeseWidget* _tmp2_;
+       GtkStack* _tmp3_;
+       CheeseWidget* _tmp4_;
+       GtkStack* _tmp5_;
+#line 39 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_val_if_fail (parent != NULL, NULL);
+#line 39 "../src/contacts-crop-cheese-dialog.vala"
+       self = (ContactsCropCheeseDialog*) g_object_new (object_type, NULL);
+#line 41 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_setup_widget (self, parent);
+#line 42 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp0_ = (CheeseFlash*) cheese_flash_new ((GtkWidget*) self);
+#line 42 "../src/contacts-crop-cheese-dialog.vala"
+       g_object_ref_sink (_tmp0_);
+#line 42 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->flash);
+#line 42 "../src/contacts-crop-cheese-dialog.vala"
+       self->priv->flash = _tmp0_;
+#line 43 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp1_ = (CheeseWidget*) cheese_widget_new ();
+#line 43 "../src/contacts-crop-cheese-dialog.vala"
+       g_object_ref_sink (_tmp1_);
+#line 43 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->cheese);
+#line 43 "../src/contacts-crop-cheese-dialog.vala"
+       self->priv->cheese = _tmp1_;
+#line 44 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp2_ = self->priv->cheese;
+#line 44 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_show ((GtkWidget*) _tmp2_);
+#line 45 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp3_ = self->priv->stack;
+#line 45 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp4_ = self->priv->cheese;
+#line 45 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_stack_add_named (_tmp3_, (GtkWidget*) _tmp4_, CONTACTS_CROP_CHEESE_DIALOG_STACK_NAME_CHEESE);
+#line 46 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp5_ = self->priv->stack;
+#line 46 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_stack_set_visible_child_name (_tmp5_, CONTACTS_CROP_CHEESE_DIALOG_STACK_NAME_CHEESE);
+#line 39 "../src/contacts-crop-cheese-dialog.vala"
+       return self;
+#line 176 "contacts-crop-cheese-dialog.c"
+}
+
+ContactsCropCheeseDialog*
+contacts_crop_cheese_dialog_new_for_cheese (GtkWindow* parent)
+{
+#line 39 "../src/contacts-crop-cheese-dialog.vala"
+       return contacts_crop_cheese_dialog_construct_for_cheese (CONTACTS_TYPE_CROP_CHEESE_DIALOG, parent);
+#line 184 "contacts-crop-cheese-dialog.c"
+}
+
+ContactsCropCheeseDialog*
+contacts_crop_cheese_dialog_construct_for_crop (GType object_type,
+                                                GtkWindow* parent,
+                                                GdkPixbuf* pixbuf)
+{
+       ContactsCropCheeseDialog * self = NULL;
+       GtkButton* _tmp0_;
+       CcCropArea* _tmp1_;
+#line 50 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_val_if_fail (parent != NULL, NULL);
+#line 50 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_val_if_fail (pixbuf != NULL, NULL);
+#line 50 "../src/contacts-crop-cheese-dialog.vala"
+       self = (ContactsCropCheeseDialog*) g_object_new (object_type, NULL);
+#line 51 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_setup_widget (self, parent);
+#line 52 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp0_ = self->priv->take_another_button;
+#line 52 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp0_, FALSE);
+#line 53 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp1_ = self->priv->crop_area;
+#line 53 "../src/contacts-crop-cheese-dialog.vala"
+       cc_crop_area_set_picture (_tmp1_, pixbuf);
+#line 50 "../src/contacts-crop-cheese-dialog.vala"
+       return self;
+#line 213 "contacts-crop-cheese-dialog.c"
+}
+
+ContactsCropCheeseDialog*
+contacts_crop_cheese_dialog_new_for_crop (GtkWindow* parent,
+                                          GdkPixbuf* pixbuf)
+{
+#line 50 "../src/contacts-crop-cheese-dialog.vala"
+       return contacts_crop_cheese_dialog_construct_for_crop (CONTACTS_TYPE_CROP_CHEESE_DIALOG, parent, 
pixbuf);
+#line 222 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_setup_widget (ContactsCropCheeseDialog* self,
+                                          GtkWindow* parent)
+{
+       CcCropArea* _tmp0_;
+       CcCropArea* _tmp1_;
+       CcCropArea* _tmp2_;
+       CcCropArea* _tmp3_;
+       CcCropArea* _tmp4_;
+       GtkStack* _tmp5_;
+       CcCropArea* _tmp6_;
+#line 57 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (self != NULL);
+#line 57 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (parent != NULL);
+#line 58 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_window_set_transient_for ((GtkWindow*) self, parent);
+#line 60 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp0_ = (CcCropArea*) cc_crop_area_new ();
+#line 60 "../src/contacts-crop-cheese-dialog.vala"
+       g_object_ref_sink (_tmp0_);
+#line 60 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->crop_area);
+#line 60 "../src/contacts-crop-cheese-dialog.vala"
+       self->priv->crop_area = _tmp0_;
+#line 61 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp1_ = self->priv->crop_area;
+#line 61 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_set_vexpand ((GtkWidget*) _tmp1_, TRUE);
+#line 62 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp2_ = self->priv->crop_area;
+#line 62 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp2_, TRUE);
+#line 63 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp3_ = self->priv->crop_area;
+#line 63 "../src/contacts-crop-cheese-dialog.vala"
+       cc_crop_area_set_min_size (_tmp3_, 48, 48);
+#line 64 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp4_ = self->priv->crop_area;
+#line 64 "../src/contacts-crop-cheese-dialog.vala"
+       cc_crop_area_set_constrain_aspect (_tmp4_, TRUE);
+#line 65 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp5_ = self->priv->stack;
+#line 65 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp6_ = self->priv->crop_area;
+#line 65 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_stack_add_named (_tmp5_, (GtkWidget*) _tmp6_, CONTACTS_CROP_CHEESE_DIALOG_STACK_NAME_CROP);
+#line 272 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_on_cancel_clicked (ContactsCropCheeseDialog* self,
+                                               GtkButton* button)
+{
+#line 69 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (self != NULL);
+#line 69 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (button != NULL);
+#line 70 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_destroy ((GtkWidget*) self);
+#line 285 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+_contacts_crop_cheese_dialog_on_cancel_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                   gpointer self)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_on_cancel_clicked ((ContactsCropCheeseDialog*) self, _sender);
+#line 294 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_on_take_another_clicked (ContactsCropCheeseDialog* self,
+                                                     GtkButton* button)
+{
+       GtkStack* _tmp0_;
+#line 74 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (self != NULL);
+#line 74 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (button != NULL);
+#line 76 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp0_ = self->priv->stack;
+#line 76 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_stack_set_visible_child_name (_tmp0_, CONTACTS_CROP_CHEESE_DIALOG_STACK_NAME_CHEESE);
+#line 310 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+_contacts_crop_cheese_dialog_on_take_another_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                         gpointer self)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_on_take_another_clicked ((ContactsCropCheeseDialog*) self, _sender);
+#line 319 "contacts-crop-cheese-dialog.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 83 "../src/contacts-crop-cheese-dialog.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 327 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+__lambda18_ (ContactsCropCheeseDialog* self,
+             GdkPixbuf* pix)
+{
+       GtkStack* _tmp0_;
+       CcCropArea* _tmp1_;
+#line 85 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (pix != NULL);
+#line 86 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp0_ = self->priv->stack;
+#line 86 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_stack_set_visible_child_name (_tmp0_, CONTACTS_CROP_CHEESE_DIALOG_STACK_NAME_CROP);
+#line 87 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp1_ = self->priv->crop_area;
+#line 87 "../src/contacts-crop-cheese-dialog.vala"
+       cc_crop_area_set_picture (_tmp1_, pix);
+#line 346 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+___lambda18__cheese_camera_photo_taken (CheeseCamera* _sender,
+                                        GdkPixbuf* pixbuf,
+                                        gpointer self)
+{
+#line 85 "../src/contacts-crop-cheese-dialog.vala"
+       __lambda18_ ((ContactsCropCheeseDialog*) self, pixbuf);
+#line 356 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_on_take_pic_clicked (ContactsCropCheeseDialog* self,
+                                                 GtkButton* button)
+{
+       CheeseCamera* camera = NULL;
+       CheeseWidget* _tmp0_;
+       GObject* _tmp1_;
+       CheeseCamera* _tmp2_;
+       CheeseFlash* _tmp3_;
+       CheeseCamera* _tmp4_;
+       CheeseCamera* _tmp5_;
+#line 81 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (self != NULL);
+#line 81 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (button != NULL);
+#line 83 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp0_ = self->priv->cheese;
+#line 83 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp1_ = cheese_widget_get_camera (_tmp0_);
+#line 83 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, CHEESE_TYPE_CAMERA) ? ((CheeseCamera*) 
_tmp1_) : NULL);
+#line 83 "../src/contacts-crop-cheese-dialog.vala"
+       camera = _tmp2_;
+#line 84 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp3_ = self->priv->flash;
+#line 84 "../src/contacts-crop-cheese-dialog.vala"
+       cheese_flash_fire (_tmp3_);
+#line 85 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp4_ = camera;
+#line 85 "../src/contacts-crop-cheese-dialog.vala"
+       g_signal_connect_object (_tmp4_, "photo-taken", (GCallback) ___lambda18__cheese_camera_photo_taken, 
self, 0);
+#line 90 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp5_ = camera;
+#line 90 "../src/contacts-crop-cheese-dialog.vala"
+       if (!cheese_camera_take_photo_pixbuf (_tmp5_)) {
+#line 91 "../src/contacts-crop-cheese-dialog.vala"
+               contacts_utils_show_error_dialog (_ ("Unable to take photo."), G_TYPE_CHECK_INSTANCE_TYPE 
(self, gtk_window_get_type ()) ? ((GtkWindow*) self) : NULL);
+#line 396 "contacts-crop-cheese-dialog.c"
+       }
+#line 81 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (camera);
+#line 400 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+_contacts_crop_cheese_dialog_on_take_pic_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                     gpointer self)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_on_take_pic_clicked ((ContactsCropCheeseDialog*) self, _sender);
+#line 409 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_on_done_clicked (ContactsCropCheeseDialog* self,
+                                             GtkButton* button)
+{
+       CcCropArea* _tmp0_;
+       GdkPixbuf* _tmp1_;
+       GdkPixbuf* _tmp2_;
+#line 98 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (self != NULL);
+#line 98 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (button != NULL);
+#line 99 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp0_ = self->priv->crop_area;
+#line 99 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp1_ = cc_crop_area_get_picture (_tmp0_);
+#line 99 "../src/contacts-crop-cheese-dialog.vala"
+       _tmp2_ = _tmp1_;
+#line 99 "../src/contacts-crop-cheese-dialog.vala"
+       g_signal_emit (self, 
contacts_crop_cheese_dialog_signals[CONTACTS_CROP_CHEESE_DIALOG_PICTURE_SELECTED_SIGNAL], 0, _tmp2_);
+#line 99 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (_tmp2_);
+#line 100 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_destroy ((GtkWidget*) self);
+#line 435 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+_contacts_crop_cheese_dialog_on_done_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                 gpointer self)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_on_done_clicked ((ContactsCropCheeseDialog*) self, _sender);
+#line 444 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_on_destroy (ContactsCropCheeseDialog* self)
+{
+#line 104 "../src/contacts-crop-cheese-dialog.vala"
+       g_return_if_fail (self != NULL);
+#line 110 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->cheese);
+#line 110 "../src/contacts-crop-cheese-dialog.vala"
+       self->priv->cheese = NULL;
+#line 456 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+_contacts_crop_cheese_dialog_on_destroy_gtk_widget_destroy (GtkWidget* _sender,
+                                                            gpointer self)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_on_destroy ((ContactsCropCheeseDialog*) self);
+#line 465 "contacts-crop-cheese-dialog.c"
+}
+
+ContactsCropCheeseDialog*
+contacts_crop_cheese_dialog_construct (GType object_type)
+{
+       ContactsCropCheeseDialog * self = NULL;
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       self = (ContactsCropCheeseDialog*) g_object_new (object_type, NULL);
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       return self;
+#line 476 "contacts-crop-cheese-dialog.c"
+}
+
+ContactsCropCheeseDialog*
+contacts_crop_cheese_dialog_new (void)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       return contacts_crop_cheese_dialog_construct (CONTACTS_TYPE_CROP_CHEESE_DIALOG);
+#line 484 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_class_init (ContactsCropCheeseDialogClass * klass,
+                                        gpointer klass_data)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsCropCheeseDialog_private_offset);
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_crop_cheese_dialog_finalize;
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-crop-cheese-dialog.ui");
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       contacts_crop_cheese_dialog_signals[CONTACTS_CROP_CHEESE_DIALOG_PICTURE_SELECTED_SIGNAL] = 
g_signal_new ("picture-selected", CONTACTS_TYPE_CROP_CHEESE_DIALOG, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, gdk_pixbuf_get_type ());
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "stack", FALSE, 
ContactsCropCheeseDialog_private_offset + G_STRUCT_OFFSET (ContactsCropCheeseDialogPrivate, stack));
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "take_another_button", FALSE, 
ContactsCropCheeseDialog_private_offset + G_STRUCT_OFFSET (ContactsCropCheeseDialogPrivate, 
take_another_button));
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_cancel_clicked", 
G_CALLBACK(_contacts_crop_cheese_dialog_on_cancel_clicked_gtk_button_clicked));
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_take_another_clicked", 
G_CALLBACK(_contacts_crop_cheese_dialog_on_take_another_clicked_gtk_button_clicked));
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_take_pic_clicked", 
G_CALLBACK(_contacts_crop_cheese_dialog_on_take_pic_clicked_gtk_button_clicked));
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_done_clicked", 
G_CALLBACK(_contacts_crop_cheese_dialog_on_done_clicked_gtk_button_clicked));
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_destroy", 
G_CALLBACK(_contacts_crop_cheese_dialog_on_destroy_gtk_widget_destroy));
+#line 515 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_instance_init (ContactsCropCheeseDialog * self,
+                                           gpointer klass)
+{
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       self->priv = contacts_crop_cheese_dialog_get_instance_private (self);
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 526 "contacts-crop-cheese-dialog.c"
+}
+
+static void
+contacts_crop_cheese_dialog_finalize (GObject * obj)
+{
+       ContactsCropCheeseDialog * self;
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_CROP_CHEESE_DIALOG, ContactsCropCheeseDialog);
+#line 24 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->stack);
+#line 26 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->take_another_button);
+#line 28 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->crop_area);
+#line 33 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->flash);
+#line 34 "../src/contacts-crop-cheese-dialog.vala"
+       _g_object_unref0 (self->priv->cheese);
+#line 22 "../src/contacts-crop-cheese-dialog.vala"
+       G_OBJECT_CLASS (contacts_crop_cheese_dialog_parent_class)->finalize (obj);
+#line 547 "contacts-crop-cheese-dialog.c"
+}
+
+static GType
+contacts_crop_cheese_dialog_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsCropCheeseDialogClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_crop_cheese_dialog_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsCropCheeseDialog), 0, (GInstanceInitFunc) 
contacts_crop_cheese_dialog_instance_init, NULL };
+       GType contacts_crop_cheese_dialog_type_id;
+       contacts_crop_cheese_dialog_type_id = g_type_register_static (gtk_window_get_type (), 
"ContactsCropCheeseDialog", &g_define_type_info, 0);
+       ContactsCropCheeseDialog_private_offset = g_type_add_instance_private 
(contacts_crop_cheese_dialog_type_id, sizeof (ContactsCropCheeseDialogPrivate));
+       return contacts_crop_cheese_dialog_type_id;
+}
+
+GType
+contacts_crop_cheese_dialog_get_type (void)
+{
+       static volatile gsize contacts_crop_cheese_dialog_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_crop_cheese_dialog_type_id__volatile)) {
+               GType contacts_crop_cheese_dialog_type_id;
+               contacts_crop_cheese_dialog_type_id = contacts_crop_cheese_dialog_get_type_once ();
+               g_once_init_leave (&contacts_crop_cheese_dialog_type_id__volatile, 
contacts_crop_cheese_dialog_type_id);
+       }
+       return contacts_crop_cheese_dialog_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c
new file mode 100644
index 0000000..c88ad21
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-in-app-notification.c
@@ -0,0 +1,377 @@
+/* contacts-in-app-notification.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-in-app-notification.vala, do not modify */
+
+/*
+ * Copyright (C) 2017 Niels De Graef <nielsdegraef gmail com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define CONTACTS_TYPE_IN_APP_NOTIFICATION (contacts_in_app_notification_get_type ())
+#define CONTACTS_IN_APP_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotification))
+#define CONTACTS_IN_APP_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotificationClass))
+#define CONTACTS_IS_IN_APP_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION))
+#define CONTACTS_IS_IN_APP_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_IN_APP_NOTIFICATION))
+#define CONTACTS_IN_APP_NOTIFICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotificationClass))
+
+typedef struct _ContactsInAppNotification ContactsInAppNotification;
+typedef struct _ContactsInAppNotificationClass ContactsInAppNotificationClass;
+typedef struct _ContactsInAppNotificationPrivate ContactsInAppNotificationPrivate;
+enum  {
+       CONTACTS_IN_APP_NOTIFICATION_0_PROPERTY,
+       CONTACTS_IN_APP_NOTIFICATION_MESSAGE_LABEL_PROPERTY,
+       CONTACTS_IN_APP_NOTIFICATION_NUM_PROPERTIES
+};
+static GParamSpec* contacts_in_app_notification_properties[CONTACTS_IN_APP_NOTIFICATION_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+enum  {
+       CONTACTS_IN_APP_NOTIFICATION_DISMISSED_SIGNAL,
+       CONTACTS_IN_APP_NOTIFICATION_NUM_SIGNALS
+};
+static guint contacts_in_app_notification_signals[CONTACTS_IN_APP_NOTIFICATION_NUM_SIGNALS] = {0};
+
+struct _ContactsInAppNotification {
+       GtkRevealer parent_instance;
+       ContactsInAppNotificationPrivate * priv;
+};
+
+struct _ContactsInAppNotificationClass {
+       GtkRevealerClass parent_class;
+};
+
+struct _ContactsInAppNotificationPrivate {
+       GtkGrid* grid;
+       GtkLabel* label;
+};
+
+static gint ContactsInAppNotification_private_offset;
+static gpointer contacts_in_app_notification_parent_class = NULL;
+
+GType contacts_in_app_notification_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsInAppNotification, g_object_unref)
+#define CONTACTS_IN_APP_NOTIFICATION_DEFAULT_KEEPALIVE ((guint) 5)
+ContactsInAppNotification* contacts_in_app_notification_new (const gchar* message,
+                                                             GtkButton* button);
+ContactsInAppNotification* contacts_in_app_notification_construct (GType object_type,
+                                                                   const gchar* message,
+                                                                   GtkButton* button);
+static void contacts_in_app_notification_on_child_revealed_changed (ContactsInAppNotification* self,
+                                                             GObject* o,
+                                                             GParamSpec* p);
+static void _contacts_in_app_notification_on_child_revealed_changed_g_object_notify (GObject* _sender,
+                                                                              GParamSpec* pspec,
+                                                                              gpointer self);
+void contacts_in_app_notification_show (ContactsInAppNotification* self);
+static gboolean __lambda48_ (ContactsInAppNotification* self);
+void contacts_in_app_notification_dismiss (ContactsInAppNotification* self);
+static gboolean ___lambda48__gsource_func (gpointer self);
+static void contacts_in_app_notification_on_close_button_clicked (ContactsInAppNotification* self,
+                                                           GtkButton* close_button);
+static void _contacts_in_app_notification_on_close_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                               gpointer self);
+GtkLabel* contacts_in_app_notification_get_message_label (ContactsInAppNotification* self);
+static void contacts_in_app_notification_finalize (GObject * obj);
+static GType contacts_in_app_notification_get_type_once (void);
+static void _vala_contacts_in_app_notification_get_property (GObject * object,
+                                                      guint property_id,
+                                                      GValue * value,
+                                                      GParamSpec * pspec);
+
+static inline gpointer
+contacts_in_app_notification_get_instance_private (ContactsInAppNotification* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsInAppNotification_private_offset);
+}
+
+/**
+   * Creates an in-app notification with the given message, and an accompanying button if not null.
+   */
+static void
+_contacts_in_app_notification_on_child_revealed_changed_g_object_notify (GObject* _sender,
+                                                                         GParamSpec* pspec,
+                                                                         gpointer self)
+{
+#line 51 "../src/contacts-in-app-notification.vala"
+       contacts_in_app_notification_on_child_revealed_changed ((ContactsInAppNotification*) self, _sender, 
pspec);
+#line 114 "contacts-in-app-notification.c"
+}
+
+ContactsInAppNotification*
+contacts_in_app_notification_construct (GType object_type,
+                                        const gchar* message,
+                                        GtkButton* button)
+{
+       ContactsInAppNotification * self = NULL;
+       GtkLabel* _tmp0_;
+#line 42 "../src/contacts-in-app-notification.vala"
+       g_return_val_if_fail (message != NULL, NULL);
+#line 42 "../src/contacts-in-app-notification.vala"
+       self = (ContactsInAppNotification*) g_object_new (object_type, NULL);
+#line 43 "../src/contacts-in-app-notification.vala"
+       _tmp0_ = self->priv->label;
+#line 43 "../src/contacts-in-app-notification.vala"
+       gtk_label_set_label (_tmp0_, message);
+#line 45 "../src/contacts-in-app-notification.vala"
+       if (button != NULL) {
+#line 134 "contacts-in-app-notification.c"
+               GtkGrid* _tmp1_;
+#line 46 "../src/contacts-in-app-notification.vala"
+               gtk_widget_set_valign ((GtkWidget*) button, GTK_ALIGN_CENTER);
+#line 47 "../src/contacts-in-app-notification.vala"
+               _tmp1_ = self->priv->grid;
+#line 47 "../src/contacts-in-app-notification.vala"
+               gtk_grid_attach (_tmp1_, (GtkWidget*) button, 1, 0, 1, 1);
+#line 48 "../src/contacts-in-app-notification.vala"
+               gtk_widget_show ((GtkWidget*) button);
+#line 144 "contacts-in-app-notification.c"
+       }
+#line 51 "../src/contacts-in-app-notification.vala"
+       g_signal_connect_object ((GObject*) self, "notify::child-revealed", (GCallback) 
_contacts_in_app_notification_on_child_revealed_changed_g_object_notify, self, 0);
+#line 42 "../src/contacts-in-app-notification.vala"
+       return self;
+#line 150 "contacts-in-app-notification.c"
+}
+
+ContactsInAppNotification*
+contacts_in_app_notification_new (const gchar* message,
+                                  GtkButton* button)
+{
+#line 42 "../src/contacts-in-app-notification.vala"
+       return contacts_in_app_notification_construct (CONTACTS_TYPE_IN_APP_NOTIFICATION, message, button);
+#line 159 "contacts-in-app-notification.c"
+}
+
+static gboolean
+__lambda48_ (ContactsInAppNotification* self)
+{
+       gboolean result = FALSE;
+#line 59 "../src/contacts-in-app-notification.vala"
+       contacts_in_app_notification_dismiss (self);
+#line 60 "../src/contacts-in-app-notification.vala"
+       result = FALSE;
+#line 60 "../src/contacts-in-app-notification.vala"
+       return result;
+#line 172 "contacts-in-app-notification.c"
+}
+
+static gboolean
+___lambda48__gsource_func (gpointer self)
+{
+       gboolean result;
+       result = __lambda48_ ((ContactsInAppNotification*) self);
+#line 58 "../src/contacts-in-app-notification.vala"
+       return result;
+#line 182 "contacts-in-app-notification.c"
+}
+
+void
+contacts_in_app_notification_show (ContactsInAppNotification* self)
+{
+#line 54 "../src/contacts-in-app-notification.vala"
+       g_return_if_fail (self != NULL);
+#line 55 "../src/contacts-in-app-notification.vala"
+       GTK_WIDGET_CLASS (contacts_in_app_notification_parent_class)->show ((GtkWidget*) 
G_TYPE_CHECK_INSTANCE_CAST (self, gtk_revealer_get_type (), GtkRevealer));
+#line 56 "../src/contacts-in-app-notification.vala"
+       gtk_revealer_set_reveal_child ((GtkRevealer*) self, TRUE);
+#line 58 "../src/contacts-in-app-notification.vala"
+       g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, CONTACTS_IN_APP_NOTIFICATION_DEFAULT_KEEPALIVE, 
___lambda48__gsource_func, g_object_ref (self), g_object_unref);
+#line 196 "contacts-in-app-notification.c"
+}
+
+void
+contacts_in_app_notification_dismiss (ContactsInAppNotification* self)
+{
+#line 64 "../src/contacts-in-app-notification.vala"
+       g_return_if_fail (self != NULL);
+#line 65 "../src/contacts-in-app-notification.vala"
+       gtk_revealer_set_reveal_child ((GtkRevealer*) self, FALSE);
+#line 206 "contacts-in-app-notification.c"
+}
+
+static void
+contacts_in_app_notification_on_child_revealed_changed (ContactsInAppNotification* self,
+                                                        GObject* o,
+                                                        GParamSpec* p)
+{
+       gboolean _tmp0_;
+       gboolean _tmp1_;
+#line 68 "../src/contacts-in-app-notification.vala"
+       g_return_if_fail (self != NULL);
+#line 68 "../src/contacts-in-app-notification.vala"
+       g_return_if_fail (o != NULL);
+#line 68 "../src/contacts-in-app-notification.vala"
+       g_return_if_fail (p != NULL);
+#line 69 "../src/contacts-in-app-notification.vala"
+       _tmp0_ = gtk_revealer_get_child_revealed ((GtkRevealer*) self);
+#line 69 "../src/contacts-in-app-notification.vala"
+       _tmp1_ = _tmp0_;
+#line 69 "../src/contacts-in-app-notification.vala"
+       if (!_tmp1_) {
+#line 70 "../src/contacts-in-app-notification.vala"
+               g_signal_emit (self, 
contacts_in_app_notification_signals[CONTACTS_IN_APP_NOTIFICATION_DISMISSED_SIGNAL], 0);
+#line 71 "../src/contacts-in-app-notification.vala"
+               gtk_widget_destroy ((GtkWidget*) self);
+#line 232 "contacts-in-app-notification.c"
+       }
+}
+
+static void
+contacts_in_app_notification_on_close_button_clicked (ContactsInAppNotification* self,
+                                                      GtkButton* close_button)
+{
+#line 76 "../src/contacts-in-app-notification.vala"
+       g_return_if_fail (self != NULL);
+#line 76 "../src/contacts-in-app-notification.vala"
+       g_return_if_fail (close_button != NULL);
+#line 77 "../src/contacts-in-app-notification.vala"
+       contacts_in_app_notification_dismiss (self);
+#line 246 "contacts-in-app-notification.c"
+}
+
+static void
+_contacts_in_app_notification_on_close_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                          gpointer self)
+{
+#line 21 "../src/contacts-in-app-notification.vala"
+       contacts_in_app_notification_on_close_button_clicked ((ContactsInAppNotification*) self, _sender);
+#line 255 "contacts-in-app-notification.c"
+}
+
+GtkLabel*
+contacts_in_app_notification_get_message_label (ContactsInAppNotification* self)
+{
+       GtkLabel* result;
+       GtkLabel* _tmp0_;
+#line 31 "../src/contacts-in-app-notification.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 31 "../src/contacts-in-app-notification.vala"
+       _tmp0_ = self->priv->label;
+#line 31 "../src/contacts-in-app-notification.vala"
+       result = _tmp0_;
+#line 31 "../src/contacts-in-app-notification.vala"
+       return result;
+#line 271 "contacts-in-app-notification.c"
+}
+
+static void
+contacts_in_app_notification_class_init (ContactsInAppNotificationClass * klass,
+                                         gpointer klass_data)
+{
+#line 21 "../src/contacts-in-app-notification.vala"
+       contacts_in_app_notification_parent_class = g_type_class_peek_parent (klass);
+#line 21 "../src/contacts-in-app-notification.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsInAppNotification_private_offset);
+#line 21 "../src/contacts-in-app-notification.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_in_app_notification_get_property;
+#line 21 "../src/contacts-in-app-notification.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_in_app_notification_finalize;
+#line 21 "../src/contacts-in-app-notification.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_IN_APP_NOTIFICATION_MESSAGE_LABEL_PROPERTY, 
contacts_in_app_notification_properties[CONTACTS_IN_APP_NOTIFICATION_MESSAGE_LABEL_PROPERTY] = 
g_param_spec_object ("message-label", "message-label", "message-label", gtk_label_get_type (), 
G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
+#line 21 "../src/contacts-in-app-notification.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-in-app-notification.ui");
+#line 290 "contacts-in-app-notification.c"
+       /**
+          * Fired when the notification is completely dismissed (i.e. gone).
+          */
+#line 21 "../src/contacts-in-app-notification.vala"
+       contacts_in_app_notification_signals[CONTACTS_IN_APP_NOTIFICATION_DISMISSED_SIGNAL] = g_signal_new 
("dismissed", CONTACTS_TYPE_IN_APP_NOTIFICATION, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+#line 21 "../src/contacts-in-app-notification.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "grid", FALSE, 
ContactsInAppNotification_private_offset + G_STRUCT_OFFSET (ContactsInAppNotificationPrivate, grid));
+#line 21 "../src/contacts-in-app-notification.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "label", FALSE, 
ContactsInAppNotification_private_offset + G_STRUCT_OFFSET (ContactsInAppNotificationPrivate, label));
+#line 21 "../src/contacts-in-app-notification.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_close_button_clicked", 
G_CALLBACK(_contacts_in_app_notification_on_close_button_clicked_gtk_button_clicked));
+#line 302 "contacts-in-app-notification.c"
+}
+
+static void
+contacts_in_app_notification_instance_init (ContactsInAppNotification * self,
+                                            gpointer klass)
+{
+#line 21 "../src/contacts-in-app-notification.vala"
+       self->priv = contacts_in_app_notification_get_instance_private (self);
+#line 21 "../src/contacts-in-app-notification.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 313 "contacts-in-app-notification.c"
+}
+
+static void
+contacts_in_app_notification_finalize (GObject * obj)
+{
+       ContactsInAppNotification * self;
+#line 21 "../src/contacts-in-app-notification.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotification);
+#line 26 "../src/contacts-in-app-notification.vala"
+       _g_object_unref0 (self->priv->grid);
+#line 29 "../src/contacts-in-app-notification.vala"
+       _g_object_unref0 (self->priv->label);
+#line 21 "../src/contacts-in-app-notification.vala"
+       G_OBJECT_CLASS (contacts_in_app_notification_parent_class)->finalize (obj);
+#line 328 "contacts-in-app-notification.c"
+}
+
+static GType
+contacts_in_app_notification_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsInAppNotificationClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_in_app_notification_class_init, 
(GClassFinalizeFunc) NULL, NULL, sizeof (ContactsInAppNotification), 0, (GInstanceInitFunc) 
contacts_in_app_notification_instance_init, NULL };
+       GType contacts_in_app_notification_type_id;
+       contacts_in_app_notification_type_id = g_type_register_static (gtk_revealer_get_type (), 
"ContactsInAppNotification", &g_define_type_info, 0);
+       ContactsInAppNotification_private_offset = g_type_add_instance_private 
(contacts_in_app_notification_type_id, sizeof (ContactsInAppNotificationPrivate));
+       return contacts_in_app_notification_type_id;
+}
+
+GType
+contacts_in_app_notification_get_type (void)
+{
+       static volatile gsize contacts_in_app_notification_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_in_app_notification_type_id__volatile)) {
+               GType contacts_in_app_notification_type_id;
+               contacts_in_app_notification_type_id = contacts_in_app_notification_get_type_once ();
+               g_once_init_leave (&contacts_in_app_notification_type_id__volatile, 
contacts_in_app_notification_type_id);
+       }
+       return contacts_in_app_notification_type_id__volatile;
+}
+
+static void
+_vala_contacts_in_app_notification_get_property (GObject * object,
+                                                 guint property_id,
+                                                 GValue * value,
+                                                 GParamSpec * pspec)
+{
+       ContactsInAppNotification * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_IN_APP_NOTIFICATION, 
ContactsInAppNotification);
+#line 21 "../src/contacts-in-app-notification.vala"
+       switch (property_id) {
+#line 21 "../src/contacts-in-app-notification.vala"
+               case CONTACTS_IN_APP_NOTIFICATION_MESSAGE_LABEL_PROPERTY:
+#line 21 "../src/contacts-in-app-notification.vala"
+               g_value_set_object (value, contacts_in_app_notification_get_message_label (self));
+#line 21 "../src/contacts-in-app-notification.vala"
+               break;
+#line 369 "contacts-in-app-notification.c"
+               default:
+#line 21 "../src/contacts-in-app-notification.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 21 "../src/contacts-in-app-notification.vala"
+               break;
+#line 375 "contacts-in-app-notification.c"
+       }
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c
new file mode 100644
index 0000000..ce5a1c5
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-link-suggestion-grid.c
@@ -0,0 +1,647 @@
+/* contacts-link-suggestion-grid.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-link-suggestion-grid.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <glib.h>
+#include <folks/folks.h>
+#include <float.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include "contacts.h"
+#include <glib/gi18n-lib.h>
+#include <gee.h>
+
+#define CONTACTS_TYPE_LINK_SUGGESTION_GRID (contacts_link_suggestion_grid_get_type ())
+#define CONTACTS_LINK_SUGGESTION_GRID(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID, ContactsLinkSuggestionGrid))
+#define CONTACTS_LINK_SUGGESTION_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID, ContactsLinkSuggestionGridClass))
+#define CONTACTS_IS_LINK_SUGGESTION_GRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID))
+#define CONTACTS_IS_LINK_SUGGESTION_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID))
+#define CONTACTS_LINK_SUGGESTION_GRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_SUGGESTION_GRID, ContactsLinkSuggestionGridClass))
+
+typedef struct _ContactsLinkSuggestionGrid ContactsLinkSuggestionGrid;
+typedef struct _ContactsLinkSuggestionGridClass ContactsLinkSuggestionGridClass;
+typedef struct _ContactsLinkSuggestionGridPrivate ContactsLinkSuggestionGridPrivate;
+enum  {
+       CONTACTS_LINK_SUGGESTION_GRID_0_PROPERTY,
+       CONTACTS_LINK_SUGGESTION_GRID_NUM_PROPERTIES
+};
+static GParamSpec* contacts_link_suggestion_grid_properties[CONTACTS_LINK_SUGGESTION_GRID_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_AVATAR (contacts_avatar_get_type ())
+#define CONTACTS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR, ContactsAvatar))
+#define CONTACTS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+#define CONTACTS_IS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_IS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_AVATAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+
+typedef struct _ContactsAvatar ContactsAvatar;
+typedef struct _ContactsAvatarClass ContactsAvatarClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+enum  {
+       CONTACTS_LINK_SUGGESTION_GRID_SUGGESTION_ACCEPTED_SIGNAL,
+       CONTACTS_LINK_SUGGESTION_GRID_SUGGESTION_REJECTED_SIGNAL,
+       CONTACTS_LINK_SUGGESTION_GRID_NUM_SIGNALS
+};
+static guint contacts_link_suggestion_grid_signals[CONTACTS_LINK_SUGGESTION_GRID_NUM_SIGNALS] = {0};
+
+struct _ContactsLinkSuggestionGrid {
+       GtkGrid parent_instance;
+       ContactsLinkSuggestionGridPrivate * priv;
+};
+
+struct _ContactsLinkSuggestionGridClass {
+       GtkGridClass parent_class;
+};
+
+struct _ContactsLinkSuggestionGridPrivate {
+       GtkLabel* description_label;
+       GtkLabel* extra_info_label;
+       GtkButton* accept_button;
+       GtkButton* reject_button;
+};
+
+static gint ContactsLinkSuggestionGrid_private_offset;
+static gpointer contacts_link_suggestion_grid_parent_class = NULL;
+
+GType contacts_link_suggestion_grid_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkSuggestionGrid, g_object_unref)
+#define CONTACTS_LINK_SUGGESTION_GRID_AVATAR_SIZE 54
+ContactsLinkSuggestionGrid* contacts_link_suggestion_grid_new (FolksIndividual* individual);
+ContactsLinkSuggestionGrid* contacts_link_suggestion_grid_construct (GType object_type,
+                                                                     FolksIndividual* individual);
+GType contacts_avatar_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatar, g_object_unref)
+ContactsAvatar* contacts_avatar_new (gint size,
+                                     FolksIndividual* individual);
+ContactsAvatar* contacts_avatar_construct (GType object_type,
+                                           gint size,
+                                           FolksIndividual* individual);
+static gchar* contacts_link_suggestion_grid_find_extra_description (ContactsLinkSuggestionGrid* self,
+                                                             FolksIndividual* individual);
+static void __lambda41_ (ContactsLinkSuggestionGrid* self);
+static void ___lambda41__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void __lambda42_ (ContactsLinkSuggestionGrid* self);
+static void ___lambda42__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void contacts_link_suggestion_grid_finalize (GObject * obj);
+static GType contacts_link_suggestion_grid_get_type_once (void);
+
+static inline gpointer
+contacts_link_suggestion_grid_get_instance_private (ContactsLinkSuggestionGrid* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsLinkSuggestionGrid_private_offset);
+}
+
+static void
+__lambda41_ (ContactsLinkSuggestionGrid* self)
+{
+#line 65 "../src/contacts-link-suggestion-grid.vala"
+       g_signal_emit (self, 
contacts_link_suggestion_grid_signals[CONTACTS_LINK_SUGGESTION_GRID_SUGGESTION_REJECTED_SIGNAL], 0);
+#line 122 "contacts-link-suggestion-grid.c"
+}
+
+static void
+___lambda41__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 65 "../src/contacts-link-suggestion-grid.vala"
+       __lambda41_ ((ContactsLinkSuggestionGrid*) self);
+#line 131 "contacts-link-suggestion-grid.c"
+}
+
+static void
+__lambda42_ (ContactsLinkSuggestionGrid* self)
+{
+#line 66 "../src/contacts-link-suggestion-grid.vala"
+       g_signal_emit (self, 
contacts_link_suggestion_grid_signals[CONTACTS_LINK_SUGGESTION_GRID_SUGGESTION_ACCEPTED_SIGNAL], 0);
+#line 139 "contacts-link-suggestion-grid.c"
+}
+
+static void
+___lambda42__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 66 "../src/contacts-link-suggestion-grid.vala"
+       __lambda42_ ((ContactsLinkSuggestionGrid*) self);
+#line 148 "contacts-link-suggestion-grid.c"
+}
+
+ContactsLinkSuggestionGrid*
+contacts_link_suggestion_grid_construct (GType object_type,
+                                         FolksIndividual* individual)
+{
+       ContactsLinkSuggestionGrid * self = NULL;
+       GtkStyleContext* _tmp0_;
+       ContactsAvatar* image_frame = NULL;
+       ContactsAvatar* _tmp1_;
+       ContactsAvatar* _tmp2_;
+       ContactsAvatar* _tmp3_;
+       ContactsAvatar* _tmp4_;
+       ContactsAvatar* _tmp5_;
+       GtkLabel* _tmp6_;
+       gchar* _tmp7_ = NULL;
+       GtkLabel* _tmp16_;
+       gchar* extra_info = NULL;
+       gchar* _tmp17_;
+       const gchar* _tmp18_;
+       GtkButton* _tmp22_;
+       GtkButton* _tmp23_;
+#line 43 "../src/contacts-link-suggestion-grid.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 43 "../src/contacts-link-suggestion-grid.vala"
+       self = (ContactsLinkSuggestionGrid*) g_object_new (object_type, NULL);
+#line 44 "../src/contacts-link-suggestion-grid.vala"
+       _tmp0_ = gtk_widget_get_style_context ((GtkWidget*) self);
+#line 44 "../src/contacts-link-suggestion-grid.vala"
+       gtk_style_context_add_class (_tmp0_, "contacts-suggestion");
+#line 46 "../src/contacts-link-suggestion-grid.vala"
+       _tmp1_ = contacts_avatar_new (CONTACTS_LINK_SUGGESTION_GRID_AVATAR_SIZE, individual);
+#line 46 "../src/contacts-link-suggestion-grid.vala"
+       g_object_ref_sink (_tmp1_);
+#line 46 "../src/contacts-link-suggestion-grid.vala"
+       image_frame = _tmp1_;
+#line 47 "../src/contacts-link-suggestion-grid.vala"
+       _tmp2_ = image_frame;
+#line 47 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp2_, FALSE);
+#line 48 "../src/contacts-link-suggestion-grid.vala"
+       _tmp3_ = image_frame;
+#line 48 "../src/contacts-link-suggestion-grid.vala"
+       g_object_set ((GtkWidget*) _tmp3_, "margin", 12, NULL);
+#line 49 "../src/contacts-link-suggestion-grid.vala"
+       _tmp4_ = image_frame;
+#line 49 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_show ((GtkWidget*) _tmp4_);
+#line 50 "../src/contacts-link-suggestion-grid.vala"
+       _tmp5_ = image_frame;
+#line 50 "../src/contacts-link-suggestion-grid.vala"
+       gtk_grid_attach ((GtkGrid*) self, (GtkWidget*) _tmp5_, 0, 0, 1, 2);
+#line 52 "../src/contacts-link-suggestion-grid.vala"
+       _tmp6_ = self->priv->description_label;
+#line 52 "../src/contacts-link-suggestion-grid.vala"
+       gtk_label_set_xalign (_tmp6_, (gfloat) 0);
+#line 53 "../src/contacts-link-suggestion-grid.vala"
+       if (contacts_utils_has_main_persona (individual)) {
+#line 207 "contacts-link-suggestion-grid.c"
+               const gchar* _tmp8_;
+               const gchar* _tmp9_;
+               gchar* _tmp10_;
+               gchar* _tmp11_;
+               gchar* _tmp12_;
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _tmp8_ = folks_individual_get_display_name (individual);
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _tmp9_ = _tmp8_;
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _tmp10_ = contacts_utils_format_persona_stores (individual);
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _tmp11_ = _tmp10_;
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _tmp12_ = g_strdup_printf (_ ("Is this the same person as %s from %s?"), _tmp9_, _tmp11_);
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _g_free0 (_tmp7_);
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _tmp7_ = _tmp12_;
+#line 54 "../src/contacts-link-suggestion-grid.vala"
+               _g_free0 (_tmp11_);
+#line 229 "contacts-link-suggestion-grid.c"
+       } else {
+               const gchar* _tmp13_;
+               const gchar* _tmp14_;
+               gchar* _tmp15_;
+#line 57 "../src/contacts-link-suggestion-grid.vala"
+               _tmp13_ = folks_individual_get_display_name (individual);
+#line 57 "../src/contacts-link-suggestion-grid.vala"
+               _tmp14_ = _tmp13_;
+#line 57 "../src/contacts-link-suggestion-grid.vala"
+               _tmp15_ = g_strdup_printf (_ ("Is this the same person as %s?"), _tmp14_);
+#line 57 "../src/contacts-link-suggestion-grid.vala"
+               _g_free0 (_tmp7_);
+#line 57 "../src/contacts-link-suggestion-grid.vala"
+               _tmp7_ = _tmp15_;
+#line 244 "contacts-link-suggestion-grid.c"
+       }
+#line 53 "../src/contacts-link-suggestion-grid.vala"
+       _tmp16_ = self->priv->description_label;
+#line 53 "../src/contacts-link-suggestion-grid.vala"
+       gtk_label_set_label (_tmp16_, _tmp7_);
+#line 59 "../src/contacts-link-suggestion-grid.vala"
+       _tmp17_ = contacts_link_suggestion_grid_find_extra_description (self, individual);
+#line 59 "../src/contacts-link-suggestion-grid.vala"
+       extra_info = _tmp17_;
+#line 60 "../src/contacts-link-suggestion-grid.vala"
+       _tmp18_ = extra_info;
+#line 60 "../src/contacts-link-suggestion-grid.vala"
+       if (_tmp18_ != NULL) {
+#line 258 "contacts-link-suggestion-grid.c"
+               GtkLabel* _tmp19_;
+               GtkLabel* _tmp20_;
+               const gchar* _tmp21_;
+#line 61 "../src/contacts-link-suggestion-grid.vala"
+               _tmp19_ = self->priv->extra_info_label;
+#line 61 "../src/contacts-link-suggestion-grid.vala"
+               gtk_widget_show ((GtkWidget*) _tmp19_);
+#line 62 "../src/contacts-link-suggestion-grid.vala"
+               _tmp20_ = self->priv->extra_info_label;
+#line 62 "../src/contacts-link-suggestion-grid.vala"
+               _tmp21_ = extra_info;
+#line 62 "../src/contacts-link-suggestion-grid.vala"
+               gtk_label_set_label (_tmp20_, _tmp21_);
+#line 272 "contacts-link-suggestion-grid.c"
+       }
+#line 65 "../src/contacts-link-suggestion-grid.vala"
+       _tmp22_ = self->priv->reject_button;
+#line 65 "../src/contacts-link-suggestion-grid.vala"
+       g_signal_connect_object (_tmp22_, "clicked", (GCallback) ___lambda41__gtk_button_clicked, self, 0);
+#line 66 "../src/contacts-link-suggestion-grid.vala"
+       _tmp23_ = self->priv->accept_button;
+#line 66 "../src/contacts-link-suggestion-grid.vala"
+       g_signal_connect_object (_tmp23_, "clicked", (GCallback) ___lambda42__gtk_button_clicked, self, 0);
+#line 43 "../src/contacts-link-suggestion-grid.vala"
+       _g_free0 (extra_info);
+#line 43 "../src/contacts-link-suggestion-grid.vala"
+       _g_free0 (_tmp7_);
+#line 43 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (image_frame);
+#line 43 "../src/contacts-link-suggestion-grid.vala"
+       return self;
+#line 290 "contacts-link-suggestion-grid.c"
+}
+
+ContactsLinkSuggestionGrid*
+contacts_link_suggestion_grid_new (FolksIndividual* individual)
+{
+#line 43 "../src/contacts-link-suggestion-grid.vala"
+       return contacts_link_suggestion_grid_construct (CONTACTS_TYPE_LINK_SUGGESTION_GRID, individual);
+#line 298 "contacts-link-suggestion-grid.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 71 "../src/contacts-link-suggestion-grid.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 306 "contacts-link-suggestion-grid.c"
+}
+
+static gchar*
+contacts_link_suggestion_grid_find_extra_description (ContactsLinkSuggestionGrid* self,
+                                                      FolksIndividual* individual)
+{
+       GeeSet* emails = NULL;
+       GeeSet* _tmp0_;
+       GeeSet* _tmp1_;
+       GeeSet* _tmp2_;
+       GeeSet* _tmp3_;
+       gboolean _tmp4_;
+       gboolean _tmp5_;
+       GeeSet* urls = NULL;
+       GeeSet* _tmp13_;
+       GeeSet* _tmp14_;
+       GeeSet* _tmp15_;
+       GeeSet* _tmp16_;
+       gboolean _tmp17_;
+       gboolean _tmp18_;
+       GeeSet* phones = NULL;
+       GeeSet* _tmp26_;
+       GeeSet* _tmp27_;
+       GeeSet* _tmp28_;
+       GeeSet* _tmp29_;
+       gboolean _tmp30_;
+       gboolean _tmp31_;
+       GeeSet* addresses = NULL;
+       GeeSet* _tmp39_;
+       GeeSet* _tmp40_;
+       GeeSet* _tmp41_;
+       GeeSet* _tmp42_;
+       gboolean _tmp43_;
+       gboolean _tmp44_;
+       gchar* result = NULL;
+#line 69 "../src/contacts-link-suggestion-grid.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 69 "../src/contacts-link-suggestion-grid.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 71 "../src/contacts-link-suggestion-grid.vala"
+       _tmp0_ = folks_email_details_get_email_addresses ((FolksEmailDetails*) individual);
+#line 71 "../src/contacts-link-suggestion-grid.vala"
+       _tmp1_ = _tmp0_;
+#line 71 "../src/contacts-link-suggestion-grid.vala"
+       _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 71 "../src/contacts-link-suggestion-grid.vala"
+       emails = _tmp2_;
+#line 72 "../src/contacts-link-suggestion-grid.vala"
+       _tmp3_ = emails;
+#line 72 "../src/contacts-link-suggestion-grid.vala"
+       _tmp4_ = gee_collection_get_is_empty ((GeeCollection*) _tmp3_);
+#line 72 "../src/contacts-link-suggestion-grid.vala"
+       _tmp5_ = _tmp4_;
+#line 72 "../src/contacts-link-suggestion-grid.vala"
+       if (!_tmp5_) {
+#line 362 "contacts-link-suggestion-grid.c"
+               GeeSet* _tmp6_;
+               gpointer _tmp7_;
+               FolksEmailFieldDetails* _tmp8_;
+               gconstpointer _tmp9_;
+               const gchar* _tmp10_;
+               gchar* _tmp11_;
+               gchar* _tmp12_;
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _tmp6_ = emails;
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _tmp7_ = contacts_utils_get_first (FOLKS_TYPE_EMAIL_FIELD_DETAILS, (GBoxedCopyFunc) 
g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _tmp6_);
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _tmp8_ = (FolksEmailFieldDetails*) _tmp7_;
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _tmp9_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp8_);
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _tmp10_ = _tmp9_;
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _tmp11_ = g_strdup ((const gchar*) _tmp10_);
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _tmp12_ = _tmp11_;
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (_tmp8_);
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               result = _tmp12_;
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (emails);
+#line 73 "../src/contacts-link-suggestion-grid.vala"
+               return result;
+#line 392 "contacts-link-suggestion-grid.c"
+       }
+#line 76 "../src/contacts-link-suggestion-grid.vala"
+       _tmp13_ = folks_url_details_get_urls ((FolksUrlDetails*) individual);
+#line 76 "../src/contacts-link-suggestion-grid.vala"
+       _tmp14_ = _tmp13_;
+#line 76 "../src/contacts-link-suggestion-grid.vala"
+       _tmp15_ = _g_object_ref0 (_tmp14_);
+#line 76 "../src/contacts-link-suggestion-grid.vala"
+       urls = _tmp15_;
+#line 77 "../src/contacts-link-suggestion-grid.vala"
+       _tmp16_ = urls;
+#line 77 "../src/contacts-link-suggestion-grid.vala"
+       _tmp17_ = gee_collection_get_is_empty ((GeeCollection*) _tmp16_);
+#line 77 "../src/contacts-link-suggestion-grid.vala"
+       _tmp18_ = _tmp17_;
+#line 77 "../src/contacts-link-suggestion-grid.vala"
+       if (!_tmp18_) {
+#line 410 "contacts-link-suggestion-grid.c"
+               GeeSet* _tmp19_;
+               gpointer _tmp20_;
+               FolksUrlFieldDetails* _tmp21_;
+               gconstpointer _tmp22_;
+               const gchar* _tmp23_;
+               gchar* _tmp24_;
+               gchar* _tmp25_;
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _tmp19_ = urls;
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _tmp20_ = contacts_utils_get_first (FOLKS_TYPE_URL_FIELD_DETAILS, (GBoxedCopyFunc) 
g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _tmp19_);
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _tmp21_ = (FolksUrlFieldDetails*) _tmp20_;
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _tmp22_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp21_);
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _tmp23_ = _tmp22_;
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _tmp24_ = g_strdup ((const gchar*) _tmp23_);
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _tmp25_ = _tmp24_;
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (_tmp21_);
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               result = _tmp25_;
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (urls);
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (emails);
+#line 78 "../src/contacts-link-suggestion-grid.vala"
+               return result;
+#line 442 "contacts-link-suggestion-grid.c"
+       }
+#line 81 "../src/contacts-link-suggestion-grid.vala"
+       _tmp26_ = folks_phone_details_get_phone_numbers ((FolksPhoneDetails*) individual);
+#line 81 "../src/contacts-link-suggestion-grid.vala"
+       _tmp27_ = _tmp26_;
+#line 81 "../src/contacts-link-suggestion-grid.vala"
+       _tmp28_ = _g_object_ref0 (_tmp27_);
+#line 81 "../src/contacts-link-suggestion-grid.vala"
+       phones = _tmp28_;
+#line 82 "../src/contacts-link-suggestion-grid.vala"
+       _tmp29_ = phones;
+#line 82 "../src/contacts-link-suggestion-grid.vala"
+       _tmp30_ = gee_collection_get_is_empty ((GeeCollection*) _tmp29_);
+#line 82 "../src/contacts-link-suggestion-grid.vala"
+       _tmp31_ = _tmp30_;
+#line 82 "../src/contacts-link-suggestion-grid.vala"
+       if (!_tmp31_) {
+#line 460 "contacts-link-suggestion-grid.c"
+               GeeSet* _tmp32_;
+               gpointer _tmp33_;
+               FolksPhoneFieldDetails* _tmp34_;
+               gconstpointer _tmp35_;
+               const gchar* _tmp36_;
+               gchar* _tmp37_;
+               gchar* _tmp38_;
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _tmp32_ = phones;
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _tmp33_ = contacts_utils_get_first (FOLKS_TYPE_PHONE_FIELD_DETAILS, (GBoxedCopyFunc) 
g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _tmp32_);
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _tmp34_ = (FolksPhoneFieldDetails*) _tmp33_;
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _tmp35_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp34_);
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _tmp36_ = _tmp35_;
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _tmp37_ = g_strdup ((const gchar*) _tmp36_);
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _tmp38_ = _tmp37_;
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (_tmp34_);
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               result = _tmp38_;
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (phones);
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (urls);
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (emails);
+#line 83 "../src/contacts-link-suggestion-grid.vala"
+               return result;
+#line 494 "contacts-link-suggestion-grid.c"
+       }
+#line 86 "../src/contacts-link-suggestion-grid.vala"
+       _tmp39_ = folks_postal_address_details_get_postal_addresses ((FolksPostalAddressDetails*) individual);
+#line 86 "../src/contacts-link-suggestion-grid.vala"
+       _tmp40_ = _tmp39_;
+#line 86 "../src/contacts-link-suggestion-grid.vala"
+       _tmp41_ = _g_object_ref0 (_tmp40_);
+#line 86 "../src/contacts-link-suggestion-grid.vala"
+       addresses = _tmp41_;
+#line 87 "../src/contacts-link-suggestion-grid.vala"
+       _tmp42_ = addresses;
+#line 87 "../src/contacts-link-suggestion-grid.vala"
+       _tmp43_ = gee_collection_get_is_empty ((GeeCollection*) _tmp42_);
+#line 87 "../src/contacts-link-suggestion-grid.vala"
+       _tmp44_ = _tmp43_;
+#line 87 "../src/contacts-link-suggestion-grid.vala"
+       if (!_tmp44_) {
+#line 512 "contacts-link-suggestion-grid.c"
+               GeeSet* _tmp45_;
+               gpointer _tmp46_;
+               FolksPostalAddressFieldDetails* _tmp47_;
+               gconstpointer _tmp48_;
+               FolksPostalAddress* _tmp49_;
+               gchar* _tmp50_;
+               gchar* _tmp51_;
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _tmp45_ = addresses;
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _tmp46_ = contacts_utils_get_first (FOLKS_TYPE_POSTAL_ADDRESS_FIELD_DETAILS, (GBoxedCopyFunc) 
g_object_ref, (GDestroyNotify) g_object_unref, (GeeCollection*) _tmp45_);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _tmp47_ = (FolksPostalAddressFieldDetails*) _tmp46_;
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _tmp48_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp47_);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _tmp49_ = _tmp48_;
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _tmp50_ = folks_postal_address_to_string ((FolksPostalAddress*) _tmp49_);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _tmp51_ = _tmp50_;
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (_tmp47_);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               result = _tmp51_;
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (addresses);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (phones);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (urls);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               _g_object_unref0 (emails);
+#line 88 "../src/contacts-link-suggestion-grid.vala"
+               return result;
+#line 548 "contacts-link-suggestion-grid.c"
+       }
+#line 91 "../src/contacts-link-suggestion-grid.vala"
+       result = NULL;
+#line 91 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (addresses);
+#line 91 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (phones);
+#line 91 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (urls);
+#line 91 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (emails);
+#line 91 "../src/contacts-link-suggestion-grid.vala"
+       return result;
+#line 562 "contacts-link-suggestion-grid.c"
+}
+
+static void
+contacts_link_suggestion_grid_class_init (ContactsLinkSuggestionGridClass * klass,
+                                          gpointer klass_data)
+{
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       contacts_link_suggestion_grid_parent_class = g_type_class_peek_parent (klass);
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsLinkSuggestionGrid_private_offset);
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_link_suggestion_grid_finalize;
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-link-suggestion-grid.ui");
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       contacts_link_suggestion_grid_signals[CONTACTS_LINK_SUGGESTION_GRID_SUGGESTION_ACCEPTED_SIGNAL] = 
g_signal_new ("suggestion-accepted", CONTACTS_TYPE_LINK_SUGGESTION_GRID, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       contacts_link_suggestion_grid_signals[CONTACTS_LINK_SUGGESTION_GRID_SUGGESTION_REJECTED_SIGNAL] = 
g_signal_new ("suggestion-rejected", CONTACTS_TYPE_LINK_SUGGESTION_GRID, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "description_label", FALSE, 
ContactsLinkSuggestionGrid_private_offset + G_STRUCT_OFFSET (ContactsLinkSuggestionGridPrivate, 
description_label));
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "extra_info_label", FALSE, 
ContactsLinkSuggestionGrid_private_offset + G_STRUCT_OFFSET (ContactsLinkSuggestionGridPrivate, 
extra_info_label));
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "accept_button", FALSE, 
ContactsLinkSuggestionGrid_private_offset + G_STRUCT_OFFSET (ContactsLinkSuggestionGridPrivate, 
accept_button));
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "reject_button", FALSE, 
ContactsLinkSuggestionGrid_private_offset + G_STRUCT_OFFSET (ContactsLinkSuggestionGridPrivate, 
reject_button));
+#line 589 "contacts-link-suggestion-grid.c"
+}
+
+static void
+contacts_link_suggestion_grid_instance_init (ContactsLinkSuggestionGrid * self,
+                                             gpointer klass)
+{
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       self->priv = contacts_link_suggestion_grid_get_instance_private (self);
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 600 "contacts-link-suggestion-grid.c"
+}
+
+static void
+contacts_link_suggestion_grid_finalize (GObject * obj)
+{
+       ContactsLinkSuggestionGrid * self;
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_LINK_SUGGESTION_GRID, 
ContactsLinkSuggestionGrid);
+#line 32 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (self->priv->description_label);
+#line 34 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (self->priv->extra_info_label);
+#line 36 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (self->priv->accept_button);
+#line 38 "../src/contacts-link-suggestion-grid.vala"
+       _g_object_unref0 (self->priv->reject_button);
+#line 28 "../src/contacts-link-suggestion-grid.vala"
+       G_OBJECT_CLASS (contacts_link_suggestion_grid_parent_class)->finalize (obj);
+#line 619 "contacts-link-suggestion-grid.c"
+}
+
+/**
+ * The LinkSuggestionGrid is show at the bottom of the ContactPane.
+ * It offers the user the sugugestion of linking the currently shown contact
+ * and another (hopefully) similar contact.
+ */
+static GType
+contacts_link_suggestion_grid_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsLinkSuggestionGridClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_link_suggestion_grid_class_init, 
(GClassFinalizeFunc) NULL, NULL, sizeof (ContactsLinkSuggestionGrid), 0, (GInstanceInitFunc) 
contacts_link_suggestion_grid_instance_init, NULL };
+       GType contacts_link_suggestion_grid_type_id;
+       contacts_link_suggestion_grid_type_id = g_type_register_static (gtk_grid_get_type (), 
"ContactsLinkSuggestionGrid", &g_define_type_info, 0);
+       ContactsLinkSuggestionGrid_private_offset = g_type_add_instance_private 
(contacts_link_suggestion_grid_type_id, sizeof (ContactsLinkSuggestionGridPrivate));
+       return contacts_link_suggestion_grid_type_id;
+}
+
+GType
+contacts_link_suggestion_grid_get_type (void)
+{
+       static volatile gsize contacts_link_suggestion_grid_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_link_suggestion_grid_type_id__volatile)) {
+               GType contacts_link_suggestion_grid_type_id;
+               contacts_link_suggestion_grid_type_id = contacts_link_suggestion_grid_get_type_once ();
+               g_once_init_leave (&contacts_link_suggestion_grid_type_id__volatile, 
contacts_link_suggestion_grid_type_id);
+       }
+       return contacts_link_suggestion_grid_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c
new file mode 100644
index 0000000..1d3b2ae
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-linked-personas-dialog.c
@@ -0,0 +1,751 @@
+/* contacts-linked-personas-dialog.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-linked-personas-dialog.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <glib.h>
+#include <folks/folks.h>
+#include "contacts.h"
+#include <gee.h>
+#include <glib/gi18n-lib.h>
+#include <gio/gio.h>
+
+#define CONTACTS_TYPE_LINKED_PERSONAS_DIALOG (contacts_linked_personas_dialog_get_type ())
+#define CONTACTS_LINKED_PERSONAS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, ContactsLinkedPersonasDialog))
+#define CONTACTS_LINKED_PERSONAS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, ContactsLinkedPersonasDialogClass))
+#define CONTACTS_IS_LINKED_PERSONAS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG))
+#define CONTACTS_IS_LINKED_PERSONAS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG))
+#define CONTACTS_LINKED_PERSONAS_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, ContactsLinkedPersonasDialogClass))
+
+typedef struct _ContactsLinkedPersonasDialog ContactsLinkedPersonasDialog;
+typedef struct _ContactsLinkedPersonasDialogClass ContactsLinkedPersonasDialogClass;
+typedef struct _ContactsLinkedPersonasDialogPrivate ContactsLinkedPersonasDialogPrivate;
+enum  {
+       CONTACTS_LINKED_PERSONAS_DIALOG_0_PROPERTY,
+       CONTACTS_LINKED_PERSONAS_DIALOG_NUM_PROPERTIES
+};
+static GParamSpec* 
contacts_linked_personas_dialog_properties[CONTACTS_LINKED_PERSONAS_DIALOG_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_WINDOW (contacts_window_get_type ())
+#define CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_WINDOW, ContactsWindow))
+#define CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+#define CONTACTS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+
+typedef struct _ContactsWindow ContactsWindow;
+typedef struct _ContactsWindowClass ContactsWindowClass;
+typedef struct _Block21Data Block21Data;
+typedef struct _Block22Data Block22Data;
+
+#define CONTACTS_TYPE_AVATAR (contacts_avatar_get_type ())
+#define CONTACTS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_AVATAR, ContactsAvatar))
+#define CONTACTS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+#define CONTACTS_IS_AVATAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_IS_AVATAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_AVATAR))
+#define CONTACTS_AVATAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_AVATAR, 
ContactsAvatarClass))
+
+typedef struct _ContactsAvatar ContactsAvatar;
+typedef struct _ContactsAvatarClass ContactsAvatarClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define CONTACTS_TYPE_LINK_OPERATION (contacts_link_operation_get_type ())
+#define CONTACTS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LINK_OPERATION, 
ContactsLinkOperation))
+#define CONTACTS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+#define CONTACTS_IS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_IS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_LINK_OPERATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+
+typedef struct _ContactsLinkOperation ContactsLinkOperation;
+typedef struct _ContactsLinkOperationClass ContactsLinkOperationClass;
+
+struct _ContactsLinkedPersonasDialog {
+       GtkDialog parent_instance;
+       ContactsLinkedPersonasDialogPrivate * priv;
+       gboolean any_unlinked;
+};
+
+struct _ContactsLinkedPersonasDialogClass {
+       GtkDialogClass parent_class;
+};
+
+struct _ContactsLinkedPersonasDialogPrivate {
+       GtkListBox* linked_accounts_view;
+       FolksIndividual* individual;
+};
+
+struct _Block21Data {
+       int _ref_count_;
+       ContactsLinkedPersonasDialog* self;
+       ContactsStore* store;
+       FolksIndividual* individual;
+};
+
+struct _Block22Data {
+       int _ref_count_;
+       Block21Data * _data21_;
+       FolksPersona* p;
+       GtkGrid* row_grid;
+};
+
+static gint ContactsLinkedPersonasDialog_private_offset;
+static gpointer contacts_linked_personas_dialog_parent_class = NULL;
+
+GType contacts_linked_personas_dialog_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkedPersonasDialog, g_object_unref)
+#define CONTACTS_LINKED_PERSONAS_DIALOG_AVATAR_SIZE 54
+GType contacts_window_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsWindow, g_object_unref)
+ContactsLinkedPersonasDialog* contacts_linked_personas_dialog_new (ContactsWindow* main_win,
+                                                                   ContactsStore* store,
+                                                                   FolksIndividual* individual);
+ContactsLinkedPersonasDialog* contacts_linked_personas_dialog_construct (GType object_type,
+                                                                         ContactsWindow* main_win,
+                                                                         ContactsStore* store,
+                                                                         FolksIndividual* individual);
+static Block21Data* block21_data_ref (Block21Data* _data21_);
+static void block21_data_unref (void * _userdata_);
+static void _contacts_add_separator_gtk_list_box_update_header_func (GtkListBoxRow* row,
+                                                              GtkListBoxRow* before,
+                                                              gpointer self);
+static Block22Data* block22_data_ref (Block22Data* _data22_);
+static void block22_data_unref (void * _userdata_);
+GType contacts_avatar_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAvatar, g_object_unref)
+ContactsAvatar* contacts_avatar_new (gint size,
+                                     FolksIndividual* individual);
+ContactsAvatar* contacts_avatar_construct (GType object_type,
+                                           gint size,
+                                           FolksIndividual* individual);
+static void ____lambda46_ (Block22Data* _data22_);
+void contacts_unlink_persona (ContactsStore* store,
+                              FolksIndividual* individual,
+                              FolksPersona* persona_to_unlink,
+                              GAsyncReadyCallback _callback_,
+                              gpointer _user_data_);
+GType contacts_link_operation_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkOperation, g_object_unref)
+ContactsLinkOperation* contacts_unlink_persona_finish (GAsyncResult* _res_);
+static void __lambda47_ (Block22Data* _data22_,
+                  GObject* obj,
+                  GAsyncResult* _result_);
+static void ___lambda47__gasync_ready_callback (GObject* source_object,
+                                         GAsyncResult* res,
+                                         gpointer self);
+static void _____lambda46__gtk_button_clicked (GtkButton* _sender,
+                                        gpointer self);
+static void contacts_linked_personas_dialog_finalize (GObject * obj);
+static GType contacts_linked_personas_dialog_get_type_once (void);
+
+static inline gpointer
+contacts_linked_personas_dialog_get_instance_private (ContactsLinkedPersonasDialog* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsLinkedPersonasDialog_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 170 "contacts-linked-personas-dialog.c"
+}
+
+static Block21Data*
+block21_data_ref (Block21Data* _data21_)
+{
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       g_atomic_int_inc (&_data21_->_ref_count_);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       return _data21_;
+#line 180 "contacts-linked-personas-dialog.c"
+}
+
+static void
+block21_data_unref (void * _userdata_)
+{
+       Block21Data* _data21_;
+       _data21_ = (Block21Data*) _userdata_;
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       if (g_atomic_int_dec_and_test (&_data21_->_ref_count_)) {
+#line 190 "contacts-linked-personas-dialog.c"
+               ContactsLinkedPersonasDialog* self;
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+               self = _data21_->self;
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+               _g_object_unref0 (_data21_->store);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+               _g_object_unref0 (_data21_->individual);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+               _g_object_unref0 (self);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+               g_slice_free (Block21Data, _data21_);
+#line 202 "contacts-linked-personas-dialog.c"
+       }
+}
+
+static void
+_contacts_add_separator_gtk_list_box_update_header_func (GtkListBoxRow* row,
+                                                         GtkListBoxRow* before,
+                                                         gpointer self)
+{
+#line 40 "../src/contacts-linked-personas-dialog.vala"
+       contacts_add_separator (row, before);
+#line 213 "contacts-linked-personas-dialog.c"
+}
+
+static Block22Data*
+block22_data_ref (Block22Data* _data22_)
+{
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+       g_atomic_int_inc (&_data22_->_ref_count_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+       return _data22_;
+#line 223 "contacts-linked-personas-dialog.c"
+}
+
+static void
+block22_data_unref (void * _userdata_)
+{
+       Block22Data* _data22_;
+       _data22_ = (Block22Data*) _userdata_;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+       if (g_atomic_int_dec_and_test (&_data22_->_ref_count_)) {
+#line 233 "contacts-linked-personas-dialog.c"
+               ContactsLinkedPersonasDialog* self;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               self = _data22_->_data21_->self;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _g_object_unref0 (_data22_->row_grid);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _g_object_unref0 (_data22_->p);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               block21_data_unref (_data22_->_data21_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _data22_->_data21_ = NULL;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               g_slice_free (Block22Data, _data22_);
+#line 247 "contacts-linked-personas-dialog.c"
+       }
+}
+
+static void
+__lambda47_ (Block22Data* _data22_,
+             GObject* obj,
+             GAsyncResult* _result_)
+{
+       Block21Data* _data21_;
+       ContactsLinkedPersonasDialog* self;
+       ContactsLinkOperation* _tmp0_;
+       ContactsLinkOperation* _tmp1_;
+       GtkGrid* _tmp2_;
+#line 82 "../src/contacts-linked-personas-dialog.vala"
+       _data21_ = _data22_->_data21_;
+#line 82 "../src/contacts-linked-personas-dialog.vala"
+       self = _data21_->self;
+#line 82 "../src/contacts-linked-personas-dialog.vala"
+       g_return_if_fail (_result_ != NULL);
+#line 83 "../src/contacts-linked-personas-dialog.vala"
+       _tmp0_ = contacts_unlink_persona_finish (_result_);
+#line 83 "../src/contacts-linked-personas-dialog.vala"
+       _tmp1_ = _tmp0_;
+#line 83 "../src/contacts-linked-personas-dialog.vala"
+       _g_object_unref0 (_tmp1_);
+#line 85 "../src/contacts-linked-personas-dialog.vala"
+       _tmp2_ = _data22_->row_grid;
+#line 85 "../src/contacts-linked-personas-dialog.vala"
+       gtk_widget_destroy ((GtkWidget*) _tmp2_);
+#line 87 "../src/contacts-linked-personas-dialog.vala"
+       self->any_unlinked = TRUE;
+#line 279 "contacts-linked-personas-dialog.c"
+}
+
+static void
+___lambda47__gasync_ready_callback (GObject* source_object,
+                                    GAsyncResult* res,
+                                    gpointer self)
+{
+#line 82 "../src/contacts-linked-personas-dialog.vala"
+       __lambda47_ (self, source_object, res);
+#line 82 "../src/contacts-linked-personas-dialog.vala"
+       block22_data_unref (self);
+#line 291 "contacts-linked-personas-dialog.c"
+}
+
+static void
+____lambda46_ (Block22Data* _data22_)
+{
+       Block21Data* _data21_;
+       ContactsLinkedPersonasDialog* self;
+       FolksPersona* _tmp0_;
+#line 81 "../src/contacts-linked-personas-dialog.vala"
+       _data21_ = _data22_->_data21_;
+#line 81 "../src/contacts-linked-personas-dialog.vala"
+       self = _data21_->self;
+#line 82 "../src/contacts-linked-personas-dialog.vala"
+       _tmp0_ = _data22_->p;
+#line 82 "../src/contacts-linked-personas-dialog.vala"
+       contacts_unlink_persona (_data21_->store, _data21_->individual, _tmp0_, 
___lambda47__gasync_ready_callback, block22_data_ref (_data22_));
+#line 308 "contacts-linked-personas-dialog.c"
+}
+
+static void
+_____lambda46__gtk_button_clicked (GtkButton* _sender,
+                                   gpointer self)
+{
+#line 81 "../src/contacts-linked-personas-dialog.vala"
+       ____lambda46_ (self);
+#line 317 "contacts-linked-personas-dialog.c"
+}
+
+ContactsLinkedPersonasDialog*
+contacts_linked_personas_dialog_construct (GType object_type,
+                                           ContactsWindow* main_win,
+                                           ContactsStore* store,
+                                           FolksIndividual* individual)
+{
+       ContactsLinkedPersonasDialog * self = NULL;
+       Block21Data* _data21_;
+       ContactsStore* _tmp0_;
+       FolksIndividual* _tmp1_;
+       const gchar* _tmp2_;
+       const gchar* _tmp3_;
+       FolksIndividual* _tmp4_;
+       GtkListBox* _tmp5_;
+       GeeList* personas = NULL;
+       GeeList* _tmp6_;
+       gboolean is_first = FALSE;
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       g_return_val_if_fail (main_win != NULL, NULL);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       g_return_val_if_fail (store != NULL, NULL);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _data21_ = g_slice_new0 (Block21Data);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _data21_->_ref_count_ = 1;
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _tmp0_ = _g_object_ref0 (store);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _g_object_unref0 (_data21_->store);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _data21_->store = _tmp0_;
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _tmp1_ = _g_object_ref0 (individual);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _g_object_unref0 (_data21_->individual);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _data21_->individual = _tmp1_;
+#line 33 "../src/contacts-linked-personas-dialog.vala"
+       _tmp2_ = folks_individual_get_display_name (_data21_->individual);
+#line 33 "../src/contacts-linked-personas-dialog.vala"
+       _tmp3_ = _tmp2_;
+#line 33 "../src/contacts-linked-personas-dialog.vala"
+       self = (ContactsLinkedPersonasDialog*) g_object_new (object_type, "use-header-bar", 1, 
"transient-for", main_win, "title", _tmp3_, NULL);
+#line 33 "../src/contacts-linked-personas-dialog.vala"
+       _data21_->self = g_object_ref (self);
+#line 39 "../src/contacts-linked-personas-dialog.vala"
+       _tmp4_ = _g_object_ref0 (_data21_->individual);
+#line 39 "../src/contacts-linked-personas-dialog.vala"
+       _g_object_unref0 (self->priv->individual);
+#line 39 "../src/contacts-linked-personas-dialog.vala"
+       self->priv->individual = _tmp4_;
+#line 40 "../src/contacts-linked-personas-dialog.vala"
+       _tmp5_ = self->priv->linked_accounts_view;
+#line 40 "../src/contacts-linked-personas-dialog.vala"
+       gtk_list_box_set_header_func (_tmp5_, _contacts_add_separator_gtk_list_box_update_header_func, NULL, 
NULL);
+#line 43 "../src/contacts-linked-personas-dialog.vala"
+       _tmp6_ = contacts_utils_get_personas_for_display (_data21_->individual);
+#line 43 "../src/contacts-linked-personas-dialog.vala"
+       personas = _tmp6_;
+#line 44 "../src/contacts-linked-personas-dialog.vala"
+       is_first = TRUE;
+#line 383 "contacts-linked-personas-dialog.c"
+       {
+               GeeList* _p_list = NULL;
+               GeeList* _tmp7_;
+               GeeList* _tmp8_;
+               gint _p_size = 0;
+               GeeList* _tmp9_;
+               gint _tmp10_;
+               gint _tmp11_;
+               gint _p_index = 0;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _tmp7_ = personas;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _tmp8_ = _g_object_ref0 (_tmp7_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _p_list = _tmp8_;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _tmp9_ = _p_list;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _tmp10_ = gee_collection_get_size ((GeeCollection*) _tmp9_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _tmp11_ = _tmp10_;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _p_size = _tmp11_;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _p_index = -1;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               while (TRUE) {
+#line 411 "contacts-linked-personas-dialog.c"
+                       Block22Data* _data22_;
+                       GeeList* _tmp12_;
+                       gpointer _tmp13_;
+                       GtkGrid* _tmp14_;
+                       ContactsAvatar* image_frame = NULL;
+                       ContactsAvatar* _tmp15_;
+                       ContactsAvatar* _tmp16_;
+                       ContactsAvatar* _tmp17_;
+                       ContactsAvatar* _tmp18_;
+                       GtkGrid* _tmp19_;
+                       ContactsAvatar* _tmp20_;
+                       GtkLabel* display_name = NULL;
+                       GtkLabel* _tmp21_;
+                       GtkLabel* _tmp22_;
+                       GtkLabel* _tmp23_;
+                       GtkLabel* _tmp24_;
+                       GtkLabel* _tmp25_;
+                       FolksPersona* _tmp26_;
+                       const gchar* _tmp27_;
+                       const gchar* _tmp28_;
+                       gchar* _tmp29_;
+                       gchar* _tmp30_;
+                       GtkGrid* _tmp31_;
+                       GtkLabel* _tmp32_;
+                       GtkLabel* store_name = NULL;
+                       FolksPersona* _tmp33_;
+                       gchar* _tmp34_;
+                       gchar* _tmp35_;
+                       GtkLabel* _tmp36_;
+                       GtkLabel* _tmp37_;
+                       GtkLabel* _tmp38_;
+                       GtkLabel* _tmp39_;
+                       GtkLabel* _tmp40_;
+                       GtkLabel* _tmp41_;
+                       GtkStyleContext* _tmp42_;
+                       GtkGrid* _tmp43_;
+                       GtkLabel* _tmp44_;
+                       GtkButton* button = NULL;
+                       GtkButton* _tmp45_;
+                       GtkButton* _tmp46_;
+                       GtkButton* _tmp47_;
+                       GtkButton* _tmp48_;
+                       GtkWidget* _tmp49_;
+                       GtkGrid* _tmp50_;
+                       GtkButton* _tmp51_;
+                       GtkButton* _tmp52_;
+                       GtkGrid* _tmp53_;
+                       GtkListBox* _tmp54_;
+                       GtkGrid* _tmp55_;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _data22_ = g_slice_new0 (Block22Data);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _data22_->_ref_count_ = 1;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _data22_->_data21_ = block21_data_ref (_data21_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _p_index = _p_index + 1;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       if (!(_p_index < _p_size)) {
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                               block22_data_unref (_data22_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                               _data22_ = NULL;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                               break;
+#line 477 "contacts-linked-personas-dialog.c"
+                       }
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp12_ = _p_list;
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp13_ = gee_list_get (_tmp12_, _p_index);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _data22_->p = (FolksPersona*) _tmp13_;
+#line 46 "../src/contacts-linked-personas-dialog.vala"
+                       if (is_first) {
+#line 47 "../src/contacts-linked-personas-dialog.vala"
+                               is_first = FALSE;
+#line 48 "../src/contacts-linked-personas-dialog.vala"
+                               block22_data_unref (_data22_);
+#line 48 "../src/contacts-linked-personas-dialog.vala"
+                               _data22_ = NULL;
+#line 48 "../src/contacts-linked-personas-dialog.vala"
+                               continue;
+#line 495 "contacts-linked-personas-dialog.c"
+                       }
+#line 51 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp14_ = (GtkGrid*) gtk_grid_new ();
+#line 51 "../src/contacts-linked-personas-dialog.vala"
+                       g_object_ref_sink (_tmp14_);
+#line 51 "../src/contacts-linked-personas-dialog.vala"
+                       _data22_->row_grid = _tmp14_;
+#line 53 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp15_ = contacts_avatar_new (CONTACTS_LINKED_PERSONAS_DIALOG_AVATAR_SIZE, 
_data21_->individual);
+#line 53 "../src/contacts-linked-personas-dialog.vala"
+                       g_object_ref_sink (_tmp15_);
+#line 53 "../src/contacts-linked-personas-dialog.vala"
+                       image_frame = _tmp15_;
+#line 54 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp16_ = image_frame;
+#line 54 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_hexpand ((GtkWidget*) _tmp16_, FALSE);
+#line 55 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp17_ = image_frame;
+#line 55 "../src/contacts-linked-personas-dialog.vala"
+                       g_object_set ((GtkWidget*) _tmp17_, "margin", 6, NULL);
+#line 56 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp18_ = image_frame;
+#line 56 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_margin_end ((GtkWidget*) _tmp18_, 12);
+#line 57 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp19_ = _data22_->row_grid;
+#line 57 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp20_ = image_frame;
+#line 57 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_grid_attach (_tmp19_, (GtkWidget*) _tmp20_, 0, 0, 1, 2);
+#line 59 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp21_ = (GtkLabel*) gtk_label_new ("");
+#line 59 "../src/contacts-linked-personas-dialog.vala"
+                       g_object_ref_sink (_tmp21_);
+#line 59 "../src/contacts-linked-personas-dialog.vala"
+                       display_name = _tmp21_;
+#line 60 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp22_ = display_name;
+#line 60 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_halign ((GtkWidget*) _tmp22_, GTK_ALIGN_START);
+#line 61 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp23_ = display_name;
+#line 61 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_valign ((GtkWidget*) _tmp23_, GTK_ALIGN_END);
+#line 62 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp24_ = display_name;
+#line 62 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_hexpand ((GtkWidget*) _tmp24_, TRUE);
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp25_ = display_name;
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp26_ = _data22_->p;
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp27_ = folks_persona_get_display_id (_tmp26_);
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp28_ = _tmp27_;
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp29_ = g_markup_printf_escaped ("<span font='bold'>%s</span>", _tmp28_);
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp30_ = _tmp29_;
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_label_set_markup (_tmp25_, _tmp30_);
+#line 63 "../src/contacts-linked-personas-dialog.vala"
+                       _g_free0 (_tmp30_);
+#line 65 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp31_ = _data22_->row_grid;
+#line 65 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp32_ = display_name;
+#line 65 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_grid_attach (_tmp31_, (GtkWidget*) _tmp32_, 1, 0, 1, 1);
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp33_ = _data22_->p;
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp34_ = contacts_utils_format_persona_store_name_for_contact (_tmp33_);
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp35_ = _tmp34_;
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp36_ = (GtkLabel*) gtk_label_new (_tmp35_);
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       g_object_ref_sink (_tmp36_);
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp37_ = _tmp36_;
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       _g_free0 (_tmp35_);
+#line 67 "../src/contacts-linked-personas-dialog.vala"
+                       store_name = _tmp37_;
+#line 68 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp38_ = store_name;
+#line 68 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_halign ((GtkWidget*) _tmp38_, GTK_ALIGN_START);
+#line 69 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp39_ = store_name;
+#line 69 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_valign ((GtkWidget*) _tmp39_, GTK_ALIGN_START);
+#line 70 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp40_ = store_name;
+#line 70 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_hexpand ((GtkWidget*) _tmp40_, TRUE);
+#line 71 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp41_ = store_name;
+#line 71 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp42_ = gtk_widget_get_style_context ((GtkWidget*) _tmp41_);
+#line 71 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_style_context_add_class (_tmp42_, "dim-label");
+#line 72 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp43_ = _data22_->row_grid;
+#line 72 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp44_ = store_name;
+#line 72 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_grid_attach (_tmp43_, (GtkWidget*) _tmp44_, 1, 1, 1, 1);
+#line 74 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp45_ = (GtkButton*) gtk_button_new_with_label (_ ("Unlink"));
+#line 74 "../src/contacts-linked-personas-dialog.vala"
+                       g_object_ref_sink (_tmp45_);
+#line 74 "../src/contacts-linked-personas-dialog.vala"
+                       button = _tmp45_;
+#line 75 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp46_ = button;
+#line 75 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_margin_end ((GtkWidget*) _tmp46_, 6);
+#line 76 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp47_ = button;
+#line 76 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_set_valign ((GtkWidget*) _tmp47_, GTK_ALIGN_CENTER);
+#line 77 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp48_ = button;
+#line 77 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp49_ = gtk_bin_get_child ((GtkBin*) _tmp48_);
+#line 77 "../src/contacts-linked-personas-dialog.vala"
+                       g_object_set (_tmp49_, "margin", 1, NULL);
+#line 78 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp50_ = _data22_->row_grid;
+#line 78 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp51_ = button;
+#line 78 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_grid_attach (_tmp50_, (GtkWidget*) _tmp51_, 2, 0, 1, 2);
+#line 81 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp52_ = button;
+#line 81 "../src/contacts-linked-personas-dialog.vala"
+                       g_signal_connect_data (_tmp52_, "clicked", (GCallback) 
_____lambda46__gtk_button_clicked, block22_data_ref (_data22_), (GClosureNotify) block22_data_unref, 0);
+#line 93 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp53_ = _data22_->row_grid;
+#line 93 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_widget_show_all ((GtkWidget*) _tmp53_);
+#line 94 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp54_ = self->priv->linked_accounts_view;
+#line 94 "../src/contacts-linked-personas-dialog.vala"
+                       _tmp55_ = _data22_->row_grid;
+#line 94 "../src/contacts-linked-personas-dialog.vala"
+                       gtk_container_add ((GtkContainer*) _tmp54_, (GtkWidget*) _tmp55_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _g_object_unref0 (button);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _g_object_unref0 (store_name);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _g_object_unref0 (display_name);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _g_object_unref0 (image_frame);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       block22_data_unref (_data22_);
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+                       _data22_ = NULL;
+#line 659 "contacts-linked-personas-dialog.c"
+               }
+#line 45 "../src/contacts-linked-personas-dialog.vala"
+               _g_object_unref0 (_p_list);
+#line 663 "contacts-linked-personas-dialog.c"
+       }
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _g_object_unref0 (personas);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       block21_data_unref (_data21_);
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       _data21_ = NULL;
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       return self;
+#line 673 "contacts-linked-personas-dialog.c"
+}
+
+ContactsLinkedPersonasDialog*
+contacts_linked_personas_dialog_new (ContactsWindow* main_win,
+                                     ContactsStore* store,
+                                     FolksIndividual* individual)
+{
+#line 32 "../src/contacts-linked-personas-dialog.vala"
+       return contacts_linked_personas_dialog_construct (CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, main_win, 
store, individual);
+#line 683 "contacts-linked-personas-dialog.c"
+}
+
+static void
+contacts_linked_personas_dialog_class_init (ContactsLinkedPersonasDialogClass * klass,
+                                            gpointer klass_data)
+{
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       contacts_linked_personas_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsLinkedPersonasDialog_private_offset);
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_linked_personas_dialog_finalize;
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-linked-personas-dialog.ui");
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "linked_accounts_view", FALSE, 
ContactsLinkedPersonasDialog_private_offset + G_STRUCT_OFFSET (ContactsLinkedPersonasDialogPrivate, 
linked_accounts_view));
+#line 700 "contacts-linked-personas-dialog.c"
+}
+
+static void
+contacts_linked_personas_dialog_instance_init (ContactsLinkedPersonasDialog * self,
+                                               gpointer klass)
+{
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       self->priv = contacts_linked_personas_dialog_get_instance_private (self);
+#line 30 "../src/contacts-linked-personas-dialog.vala"
+       self->any_unlinked = FALSE;
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 713 "contacts-linked-personas-dialog.c"
+}
+
+static void
+contacts_linked_personas_dialog_finalize (GObject * obj)
+{
+       ContactsLinkedPersonasDialog * self;
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_LINKED_PERSONAS_DIALOG, 
ContactsLinkedPersonasDialog);
+#line 26 "../src/contacts-linked-personas-dialog.vala"
+       _g_object_unref0 (self->priv->linked_accounts_view);
+#line 28 "../src/contacts-linked-personas-dialog.vala"
+       _g_object_unref0 (self->priv->individual);
+#line 22 "../src/contacts-linked-personas-dialog.vala"
+       G_OBJECT_CLASS (contacts_linked_personas_dialog_parent_class)->finalize (obj);
+#line 728 "contacts-linked-personas-dialog.c"
+}
+
+static GType
+contacts_linked_personas_dialog_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsLinkedPersonasDialogClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_linked_personas_dialog_class_init, 
(GClassFinalizeFunc) NULL, NULL, sizeof (ContactsLinkedPersonasDialog), 0, (GInstanceInitFunc) 
contacts_linked_personas_dialog_instance_init, NULL };
+       GType contacts_linked_personas_dialog_type_id;
+       contacts_linked_personas_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), 
"ContactsLinkedPersonasDialog", &g_define_type_info, 0);
+       ContactsLinkedPersonasDialog_private_offset = g_type_add_instance_private 
(contacts_linked_personas_dialog_type_id, sizeof (ContactsLinkedPersonasDialogPrivate));
+       return contacts_linked_personas_dialog_type_id;
+}
+
+GType
+contacts_linked_personas_dialog_get_type (void)
+{
+       static volatile gsize contacts_linked_personas_dialog_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_linked_personas_dialog_type_id__volatile)) {
+               GType contacts_linked_personas_dialog_type_id;
+               contacts_linked_personas_dialog_type_id = contacts_linked_personas_dialog_get_type_once ();
+               g_once_init_leave (&contacts_linked_personas_dialog_type_id__volatile, 
contacts_linked_personas_dialog_type_id);
+       }
+       return contacts_linked_personas_dialog_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-linking.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-linking.c
new file mode 100644
index 0000000..6bd419a
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-linking.c
@@ -0,0 +1,9021 @@
+/* contacts-linking.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-linking.vala, do not modify */
+
+/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <folks/folks.h>
+#include <gee.h>
+#include <gio/gio.h>
+#include <glib.h>
+#include <gobject/gvaluecollector.h>
+#include <stdlib.h>
+#include <string.h>
+#include "contacts.h"
+
+#define CONTACTS_TYPE_LINK_OPERATION (contacts_link_operation_get_type ())
+#define CONTACTS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LINK_OPERATION, 
ContactsLinkOperation))
+#define CONTACTS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+#define CONTACTS_IS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_IS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_LINK_OPERATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+
+typedef struct _ContactsLinkOperation ContactsLinkOperation;
+typedef struct _ContactsLinkOperationClass ContactsLinkOperationClass;
+typedef struct _ContactsLinkOperationPrivate ContactsLinkOperationPrivate;
+
+#define CONTACTS_LINK_OPERATION_TYPE_CHANGE (contacts_link_operation_change_get_type ())
+#define CONTACTS_LINK_OPERATION_CHANGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_LINK_OPERATION_TYPE_CHANGE, ContactsLinkOperationChange))
+#define CONTACTS_LINK_OPERATION_CHANGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_LINK_OPERATION_TYPE_CHANGE, ContactsLinkOperationChangeClass))
+#define CONTACTS_LINK_OPERATION_IS_CHANGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_LINK_OPERATION_TYPE_CHANGE))
+#define CONTACTS_LINK_OPERATION_IS_CHANGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_LINK_OPERATION_TYPE_CHANGE))
+#define CONTACTS_LINK_OPERATION_CHANGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_LINK_OPERATION_TYPE_CHANGE, ContactsLinkOperationChangeClass))
+
+typedef struct _ContactsLinkOperationChange ContactsLinkOperationChange;
+typedef struct _ContactsLinkOperationChangeClass ContactsLinkOperationChangeClass;
+enum  {
+       CONTACTS_LINK_OPERATION_0_PROPERTY,
+       CONTACTS_LINK_OPERATION_NUM_PROPERTIES
+};
+static GParamSpec* contacts_link_operation_properties[CONTACTS_LINK_OPERATION_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_PERSONA_ATTRIBUTE (contacts_persona_attribute_get_type ())
+#define CONTACTS_PERSONA_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_PERSONA_ATTRIBUTE, 
ContactsPersonaAttribute))
+#define CONTACTS_PERSONA_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttributeClass))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE))
+#define CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttributeClass))
+
+typedef struct _ContactsPersonaAttribute ContactsPersonaAttribute;
+typedef struct _ContactsPersonaAttributeClass ContactsPersonaAttributeClass;
+typedef struct _ContactsLinkOperationChangePrivate ContactsLinkOperationChangePrivate;
+#define _contacts_link_operation_change_unref0(var) ((var == NULL) ? NULL : (var = 
(contacts_link_operation_change_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _ContactsLinkOperationUndoData ContactsLinkOperationUndoData;
+typedef struct _ContactsLinkOperationParamSpecChange ContactsLinkOperationParamSpecChange;
+typedef struct _ContactsPersonaAttributePrivate ContactsPersonaAttributePrivate;
+enum  {
+       CONTACTS_PERSONA_ATTRIBUTE_0_PROPERTY,
+       CONTACTS_PERSONA_ATTRIBUTE_NUM_PROPERTIES
+};
+static GParamSpec* contacts_persona_attribute_properties[CONTACTS_PERSONA_ATTRIBUTE_NUM_PROPERTIES];
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID (contacts_persona_attribute_local_id_get_type ())
+#define CONTACTS_PERSONA_ATTRIBUTE_LOCAL_ID(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID, ContactsPersonaAttributeLocalId))
+#define CONTACTS_PERSONA_ATTRIBUTE_LOCAL_ID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID, ContactsPersonaAttributeLocalIdClass))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE_LOCAL_ID(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE_LOCAL_ID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID))
+#define CONTACTS_PERSONA_ATTRIBUTE_LOCAL_ID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID, ContactsPersonaAttributeLocalIdClass))
+
+typedef struct _ContactsPersonaAttributeLocalId ContactsPersonaAttributeLocalId;
+typedef struct _ContactsPersonaAttributeLocalIdClass ContactsPersonaAttributeLocalIdClass;
+typedef struct _ContactsPersonaAttributeLocalIdPrivate ContactsPersonaAttributeLocalIdPrivate;
+enum  {
+       CONTACTS_PERSONA_ATTRIBUTE_LOCAL_ID_0_PROPERTY,
+       CONTACTS_PERSONA_ATTRIBUTE_LOCAL_ID_NUM_PROPERTIES
+};
+static GParamSpec* 
contacts_persona_attribute_local_id_properties[CONTACTS_PERSONA_ATTRIBUTE_LOCAL_ID_NUM_PROPERTIES];
+typedef struct _ContactsPersonaAttributeLocalIdPersonaApplyAttributesData 
ContactsPersonaAttributeLocalIdPersonaApplyAttributesData;
+typedef struct _ContactsPersonaAttributeLocalIdSetValueData ContactsPersonaAttributeLocalIdSetValueData;
+
+#define CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS (contacts_persona_attribute_im_address_get_type ())
+#define CONTACTS_PERSONA_ATTRIBUTE_IM_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, ContactsPersonaAttributeImAddress))
+#define CONTACTS_PERSONA_ATTRIBUTE_IM_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, ContactsPersonaAttributeImAddressClass))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE_IM_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE_IM_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS))
+#define CONTACTS_PERSONA_ATTRIBUTE_IM_ADDRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, ContactsPersonaAttributeImAddressClass))
+
+typedef struct _ContactsPersonaAttributeImAddress ContactsPersonaAttributeImAddress;
+typedef struct _ContactsPersonaAttributeImAddressClass ContactsPersonaAttributeImAddressClass;
+typedef struct _ContactsPersonaAttributeImAddressPrivate ContactsPersonaAttributeImAddressPrivate;
+enum  {
+       CONTACTS_PERSONA_ATTRIBUTE_IM_ADDRESS_0_PROPERTY,
+       CONTACTS_PERSONA_ATTRIBUTE_IM_ADDRESS_NUM_PROPERTIES
+};
+static GParamSpec* 
contacts_persona_attribute_im_address_properties[CONTACTS_PERSONA_ATTRIBUTE_IM_ADDRESS_NUM_PROPERTIES];
+typedef struct _ContactsPersonaAttributeImAddressPersonaApplyAttributesData 
ContactsPersonaAttributeImAddressPersonaApplyAttributesData;
+typedef struct _ContactsPersonaAttributeImAddressSetValueData ContactsPersonaAttributeImAddressSetValueData;
+
+#define CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE (contacts_persona_attribute_web_service_get_type ())
+#define CONTACTS_PERSONA_ATTRIBUTE_WEB_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, ContactsPersonaAttributeWebService))
+#define CONTACTS_PERSONA_ATTRIBUTE_WEB_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, ContactsPersonaAttributeWebServiceClass))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE_WEB_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE))
+#define CONTACTS_IS_PERSONA_ATTRIBUTE_WEB_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE))
+#define CONTACTS_PERSONA_ATTRIBUTE_WEB_SERVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, ContactsPersonaAttributeWebServiceClass))
+
+typedef struct _ContactsPersonaAttributeWebService ContactsPersonaAttributeWebService;
+typedef struct _ContactsPersonaAttributeWebServiceClass ContactsPersonaAttributeWebServiceClass;
+typedef struct _ContactsPersonaAttributeWebServicePrivate ContactsPersonaAttributeWebServicePrivate;
+enum  {
+       CONTACTS_PERSONA_ATTRIBUTE_WEB_SERVICE_0_PROPERTY,
+       CONTACTS_PERSONA_ATTRIBUTE_WEB_SERVICE_NUM_PROPERTIES
+};
+static GParamSpec* 
contacts_persona_attribute_web_service_properties[CONTACTS_PERSONA_ATTRIBUTE_WEB_SERVICE_NUM_PROPERTIES];
+typedef struct _ContactsPersonaAttributeWebServicePersonaApplyAttributesData 
ContactsPersonaAttributeWebServicePersonaApplyAttributesData;
+typedef struct _ContactsPersonaAttributeWebServiceSetValueData 
ContactsPersonaAttributeWebServiceSetValueData;
+typedef struct _ContactsPersonaApplyAttributesData ContactsPersonaApplyAttributesData;
+#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
+typedef struct _ContactsLinkContactsData ContactsLinkContactsData;
+typedef struct _ContactsUnlinkPersonaData ContactsUnlinkPersonaData;
+
+#define CONTACTS_TYPE_LINK_OPERATION2 (contacts_link_operation2_get_type ())
+#define CONTACTS_LINK_OPERATION2(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LINK_OPERATION2, 
ContactsLinkOperation2))
+#define CONTACTS_LINK_OPERATION2_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_OPERATION2, ContactsLinkOperation2Class))
+#define CONTACTS_IS_LINK_OPERATION2(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LINK_OPERATION2))
+#define CONTACTS_IS_LINK_OPERATION2_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_OPERATION2))
+#define CONTACTS_LINK_OPERATION2_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_OPERATION2, ContactsLinkOperation2Class))
+
+typedef struct _ContactsLinkOperation2 ContactsLinkOperation2;
+typedef struct _ContactsLinkOperation2Class ContactsLinkOperation2Class;
+typedef struct _ContactsLinkOperation2Private ContactsLinkOperation2Private;
+enum  {
+       CONTACTS_LINK_OPERATION2_0_PROPERTY,
+       CONTACTS_LINK_OPERATION2_NUM_PROPERTIES
+};
+static GParamSpec* contacts_link_operation2_properties[CONTACTS_LINK_OPERATION2_NUM_PROPERTIES];
+typedef struct _ContactsLinkOperation2UndoData ContactsLinkOperation2UndoData;
+typedef struct _ContactsLinkContactsListData ContactsLinkContactsListData;
+
+struct _ContactsLinkOperation {
+       GObject parent_instance;
+       ContactsLinkOperationPrivate * priv;
+};
+
+struct _ContactsLinkOperationClass {
+       GObjectClass parent_class;
+};
+
+struct _ContactsLinkOperationPrivate {
+       FolksPersona* _added_persona;
+       FolksIndividual* main_contact;
+       GeeArrayList* split_out_personas;
+       GeeArrayList* changes;
+};
+
+struct _ContactsLinkOperationChange {
+       GTypeInstance parent_instance;
+       volatile int ref_count;
+       ContactsLinkOperationChangePrivate * priv;
+       ContactsPersonaAttribute* attribute;
+       FolksPersona* persona;
+       GObject* old_value;
+};
+
+struct _ContactsLinkOperationChangeClass {
+       GTypeClass parent_class;
+       void (*finalize) (ContactsLinkOperationChange *self);
+};
+
+struct _ContactsLinkOperationUndoData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsLinkOperation* self;
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       GeeArrayList* _tmp2_;
+       GeeArrayList* _p_list;
+       GeeArrayList* _tmp3_;
+       GeeArrayList* _tmp4_;
+       gint _p_size;
+       GeeArrayList* _tmp5_;
+       gint _tmp6_;
+       gint _tmp7_;
+       gint _p_index;
+       FolksPersona* p;
+       GeeArrayList* _tmp8_;
+       gpointer _tmp9_;
+       FolksPersona* _tmp10_;
+       FolksPersona* _tmp11_;
+       FolksPersona* _tmp12_;
+       FolksPersonaStore* _tmp13_;
+       FolksPersonaStore* _tmp14_;
+       FolksPersona* _tmp15_;
+       GeeArrayList* _c_list;
+       GeeArrayList* _tmp16_;
+       GeeArrayList* _tmp17_;
+       gint _c_size;
+       GeeArrayList* _tmp18_;
+       gint _tmp19_;
+       gint _tmp20_;
+       gint _c_index;
+       ContactsLinkOperationChange* c;
+       GeeArrayList* _tmp21_;
+       gpointer _tmp22_;
+       ContactsLinkOperationChange* _tmp23_;
+       FolksPersona* _tmp24_;
+       FolksPersona* _tmp25_;
+       ContactsLinkOperationChange* _tmp26_;
+       ContactsPersonaAttribute* _tmp27_;
+       ContactsLinkOperationChange* _tmp28_;
+       FolksPersona* _tmp29_;
+       ContactsLinkOperationChange* _tmp30_;
+       GObject* _tmp31_;
+       GError* e;
+       GError* _tmp32_;
+       const gchar* _tmp33_;
+       FolksIndividual* _tmp34_;
+       FolksIndividual* _tmp35_;
+       GeeArrayList* _tmp36_;
+       GeeArrayList* _vala1__p_list;
+       GeeArrayList* _tmp37_;
+       GeeArrayList* _tmp38_;
+       gint _vala1__p_size;
+       GeeArrayList* _tmp39_;
+       gint _tmp40_;
+       gint _tmp41_;
+       gint _vala1__p_index;
+       FolksPersona* _vala1_p;
+       GeeArrayList* _tmp42_;
+       gpointer _tmp43_;
+       FolksPersona* _tmp44_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsLinkOperationParamSpecChange {
+       GParamSpec parent_instance;
+};
+
+struct _ContactsPersonaAttribute {
+       GObject parent_instance;
+       ContactsPersonaAttributePrivate * priv;
+       gchar* property_name;
+};
+
+struct _ContactsPersonaAttributeClass {
+       GObjectClass parent_class;
+       gboolean (*is_removable) (ContactsPersonaAttribute* self, FolksPersona* from_persona);
+       gboolean (*is_referenced_by_persona) (ContactsPersonaAttribute* self, FolksPersona* persona);
+       gchar* (*to_string) (ContactsPersonaAttribute* self);
+       gboolean (*equal) (ContactsPersonaAttribute* self, ContactsPersonaAttribute* that);
+       guint (*hash) (ContactsPersonaAttribute* self);
+       void (*persona_apply_attributes) (ContactsPersonaAttribute* self, FolksPersona* persona, GeeSet* 
added_attributes, GeeSet* removed_attributes, ContactsLinkOperation* operation, GAsyncReadyCallback 
_callback_, gpointer _user_data_);
+       void (*persona_apply_attributes_finish) (ContactsPersonaAttribute* self, GAsyncResult* _res_);
+       void (*set_value) (ContactsPersonaAttribute* self, FolksPersona* persona, GObject* value, 
GAsyncReadyCallback _callback_, gpointer _user_data_);
+       void (*set_value_finish) (ContactsPersonaAttribute* self, GAsyncResult* _res_);
+};
+
+struct _ContactsPersonaAttributeLocalId {
+       ContactsPersonaAttribute parent_instance;
+       ContactsPersonaAttributeLocalIdPrivate * priv;
+};
+
+struct _ContactsPersonaAttributeLocalIdClass {
+       ContactsPersonaAttributeClass parent_class;
+};
+
+struct _ContactsPersonaAttributeLocalIdPrivate {
+       gchar* value;
+};
+
+struct _ContactsPersonaAttributeLocalIdPersonaApplyAttributesData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsPersonaAttributeLocalId* self;
+       FolksPersona* persona;
+       GeeSet* added_attributes;
+       GeeSet* removed_attributes;
+       ContactsLinkOperation* operation;
+       FolksLocalIdDetails* details;
+       FolksLocalIdDetails* _tmp0_;
+       FolksLocalIdDetails* _tmp1_;
+       GeeHashSet* added_values;
+       GeeHashSet* _tmp2_;
+       GeeIterator* _added_it;
+       GeeIterator* _tmp3_;
+       GeeIterator* _tmp4_;
+       ContactsPersonaAttribute* added;
+       GeeIterator* _tmp5_;
+       gpointer _tmp6_;
+       GeeHashSet* _tmp7_;
+       ContactsPersonaAttribute* _tmp8_;
+       const gchar* _tmp9_;
+       GeeHashSet* removed_values;
+       GeeHashSet* _tmp10_;
+       GeeIterator* _removed_it;
+       GeeIterator* _tmp11_;
+       GeeIterator* _tmp12_;
+       ContactsPersonaAttribute* removed;
+       GeeIterator* _tmp13_;
+       gpointer _tmp14_;
+       GeeHashSet* _tmp15_;
+       ContactsPersonaAttribute* _tmp16_;
+       const gchar* _tmp17_;
+       GeeHashSet* new_values;
+       GeeHashSet* _tmp18_;
+       gboolean changed;
+       GeeIterator* _v_it;
+       FolksLocalIdDetails* _tmp19_;
+       GeeSet* _tmp20_;
+       GeeSet* _tmp21_;
+       GeeIterator* _tmp22_;
+       GeeIterator* _tmp23_;
+       gchar* v;
+       GeeIterator* _tmp24_;
+       gpointer _tmp25_;
+       GeeHashSet* _tmp26_;
+       const gchar* _tmp27_;
+       GeeHashSet* _tmp28_;
+       const gchar* _tmp29_;
+       GeeHashSet* _tmp30_;
+       const gchar* _tmp31_;
+       GeeHashSet* _tmp32_;
+       const gchar* _tmp33_;
+       GeeIterator* _v2_it;
+       GeeHashSet* _tmp34_;
+       GeeIterator* _tmp35_;
+       GeeIterator* _tmp36_;
+       gchar* v2;
+       GeeIterator* _tmp37_;
+       gpointer _tmp38_;
+       GeeHashSet* _tmp39_;
+       const gchar* _tmp40_;
+       GeeHashSet* old_value;
+       GeeHashSet* _tmp41_;
+       GeeHashSet* _tmp42_;
+       FolksLocalIdDetails* _tmp43_;
+       GeeSet* _tmp44_;
+       GeeSet* _tmp45_;
+       FolksLocalIdDetails* _tmp46_;
+       GeeHashSet* _tmp47_;
+       GeeHashSet* _tmp48_;
+       GError* e;
+       GError* _tmp49_;
+       const gchar* _tmp50_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsPersonaAttributeLocalIdSetValueData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsPersonaAttributeLocalId* self;
+       FolksPersona* persona;
+       GObject* value;
+       FolksLocalIdDetails* details;
+       FolksLocalIdDetails* _tmp0_;
+       FolksLocalIdDetails* _tmp1_;
+       GeeHashSet* v;
+       GeeHashSet* _tmp2_;
+       FolksLocalIdDetails* _tmp3_;
+       GeeHashSet* _tmp4_;
+       GError* e;
+       GError* _tmp5_;
+       const gchar* _tmp6_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsPersonaAttributeImAddress {
+       ContactsPersonaAttribute parent_instance;
+       ContactsPersonaAttributeImAddressPrivate * priv;
+};
+
+struct _ContactsPersonaAttributeImAddressClass {
+       ContactsPersonaAttributeClass parent_class;
+};
+
+struct _ContactsPersonaAttributeImAddressPrivate {
+       gchar* protocol;
+       FolksImFieldDetails* detail;
+};
+
+struct _ContactsPersonaAttributeImAddressPersonaApplyAttributesData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsPersonaAttributeImAddress* self;
+       FolksPersona* persona;
+       GeeSet* added_attributes;
+       GeeSet* removed_attributes;
+       ContactsLinkOperation* operation;
+       FolksImDetails* details;
+       FolksImDetails* _tmp0_;
+       FolksImDetails* _tmp1_;
+       GeeHashMultiMap* added_values;
+       GeeHashMultiMap* _tmp2_;
+       GeeIterator* _added_it;
+       GeeIterator* _tmp3_;
+       GeeIterator* _tmp4_;
+       ContactsPersonaAttribute* added;
+       GeeIterator* _tmp5_;
+       gpointer _tmp6_;
+       GeeHashMultiMap* _tmp7_;
+       ContactsPersonaAttribute* _tmp8_;
+       const gchar* _tmp9_;
+       ContactsPersonaAttribute* _tmp10_;
+       FolksImFieldDetails* _tmp11_;
+       GeeHashMultiMap* removed_values;
+       GeeHashMultiMap* _tmp12_;
+       GeeIterator* _removed_it;
+       GeeIterator* _tmp13_;
+       GeeIterator* _tmp14_;
+       ContactsPersonaAttribute* removed;
+       GeeIterator* _tmp15_;
+       gpointer _tmp16_;
+       GeeHashMultiMap* _tmp17_;
+       ContactsPersonaAttribute* _tmp18_;
+       const gchar* _tmp19_;
+       ContactsPersonaAttribute* _tmp20_;
+       FolksImFieldDetails* _tmp21_;
+       GeeHashMultiMap* new_values;
+       GeeHashMultiMap* _tmp22_;
+       gboolean changed;
+       GeeIterator* _proto1_it;
+       FolksImDetails* _tmp23_;
+       GeeMultiMap* _tmp24_;
+       GeeMultiMap* _tmp25_;
+       GeeSet* _tmp26_;
+       GeeSet* _tmp27_;
+       GeeIterator* _tmp28_;
+       GeeIterator* _tmp29_;
+       GeeIterator* _tmp30_;
+       gchar* proto1;
+       GeeIterator* _tmp31_;
+       gpointer _tmp32_;
+       GeeIterator* _detail1_it;
+       FolksImDetails* _tmp33_;
+       GeeMultiMap* _tmp34_;
+       GeeMultiMap* _tmp35_;
+       const gchar* _tmp36_;
+       GeeCollection* _tmp37_;
+       GeeCollection* _tmp38_;
+       GeeIterator* _tmp39_;
+       GeeIterator* _tmp40_;
+       GeeIterator* _tmp41_;
+       FolksImFieldDetails* detail1;
+       GeeIterator* _tmp42_;
+       gpointer _tmp43_;
+       GeeHashMultiMap* _tmp44_;
+       const gchar* _tmp45_;
+       GeeCollection* _tmp46_;
+       GeeCollection* _tmp47_;
+       FolksImFieldDetails* _tmp48_;
+       gboolean _tmp49_;
+       GeeHashMultiMap* _tmp50_;
+       const gchar* _tmp51_;
+       FolksImFieldDetails* _tmp52_;
+       GeeHashMultiMap* _tmp53_;
+       const gchar* _tmp54_;
+       GeeCollection* _tmp55_;
+       GeeCollection* _tmp56_;
+       FolksImFieldDetails* _tmp57_;
+       gboolean _tmp58_;
+       GeeHashMultiMap* _tmp59_;
+       const gchar* _tmp60_;
+       FolksImFieldDetails* _tmp61_;
+       GeeIterator* _proto2_it;
+       GeeHashMultiMap* _tmp62_;
+       GeeSet* _tmp63_;
+       GeeSet* _tmp64_;
+       GeeIterator* _tmp65_;
+       GeeIterator* _tmp66_;
+       GeeIterator* _tmp67_;
+       gchar* proto2;
+       GeeIterator* _tmp68_;
+       gpointer _tmp69_;
+       GeeIterator* _detail2_it;
+       GeeHashMultiMap* _tmp70_;
+       const gchar* _tmp71_;
+       GeeCollection* _tmp72_;
+       GeeCollection* _tmp73_;
+       GeeIterator* _tmp74_;
+       GeeIterator* _tmp75_;
+       GeeIterator* _tmp76_;
+       FolksImFieldDetails* detail2;
+       GeeIterator* _tmp77_;
+       gpointer _tmp78_;
+       GeeHashMultiMap* _tmp79_;
+       const gchar* _tmp80_;
+       FolksImFieldDetails* _tmp81_;
+       GeeMultiMap* old_value;
+       FolksImDetails* _tmp82_;
+       GeeMultiMap* _tmp83_;
+       GeeMultiMap* _tmp84_;
+       GeeMultiMap* _tmp85_;
+       FolksImDetails* _tmp86_;
+       GeeHashMultiMap* _tmp87_;
+       GeeMultiMap* _tmp88_;
+       GError* e;
+       GError* _tmp89_;
+       const gchar* _tmp90_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsPersonaAttributeImAddressSetValueData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsPersonaAttributeImAddress* self;
+       FolksPersona* persona;
+       GObject* value;
+       FolksImDetails* details;
+       FolksImDetails* _tmp0_;
+       FolksImDetails* _tmp1_;
+       GeeHashMultiMap* v;
+       GeeHashMultiMap* _tmp2_;
+       FolksImDetails* _tmp3_;
+       GeeHashMultiMap* _tmp4_;
+       GError* e;
+       GError* _tmp5_;
+       const gchar* _tmp6_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsPersonaAttributeWebService {
+       ContactsPersonaAttribute parent_instance;
+       ContactsPersonaAttributeWebServicePrivate * priv;
+};
+
+struct _ContactsPersonaAttributeWebServiceClass {
+       ContactsPersonaAttributeClass parent_class;
+};
+
+struct _ContactsPersonaAttributeWebServicePrivate {
+       gchar* service;
+       FolksWebServiceFieldDetails* detail;
+};
+
+struct _ContactsPersonaAttributeWebServicePersonaApplyAttributesData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsPersonaAttributeWebService* self;
+       FolksPersona* persona;
+       GeeSet* added_attributes;
+       GeeSet* removed_attributes;
+       ContactsLinkOperation* operation;
+       FolksWebServiceDetails* details;
+       FolksWebServiceDetails* _tmp0_;
+       FolksWebServiceDetails* _tmp1_;
+       GeeHashMultiMap* added_values;
+       GeeHashMultiMap* _tmp2_;
+       GeeIterator* _added_it;
+       GeeIterator* _tmp3_;
+       GeeIterator* _tmp4_;
+       ContactsPersonaAttribute* added;
+       GeeIterator* _tmp5_;
+       gpointer _tmp6_;
+       GeeHashMultiMap* _tmp7_;
+       ContactsPersonaAttribute* _tmp8_;
+       const gchar* _tmp9_;
+       ContactsPersonaAttribute* _tmp10_;
+       FolksWebServiceFieldDetails* _tmp11_;
+       GeeHashMultiMap* removed_values;
+       GeeHashMultiMap* _tmp12_;
+       GeeIterator* _removed_it;
+       GeeIterator* _tmp13_;
+       GeeIterator* _tmp14_;
+       ContactsPersonaAttribute* removed;
+       GeeIterator* _tmp15_;
+       gpointer _tmp16_;
+       GeeHashMultiMap* _tmp17_;
+       ContactsPersonaAttribute* _tmp18_;
+       const gchar* _tmp19_;
+       ContactsPersonaAttribute* _tmp20_;
+       FolksWebServiceFieldDetails* _tmp21_;
+       GeeHashMultiMap* new_values;
+       GeeHashMultiMap* _tmp22_;
+       gboolean changed;
+       GeeIterator* _srv1_it;
+       FolksWebServiceDetails* _tmp23_;
+       GeeMultiMap* _tmp24_;
+       GeeMultiMap* _tmp25_;
+       GeeSet* _tmp26_;
+       GeeSet* _tmp27_;
+       GeeIterator* _tmp28_;
+       GeeIterator* _tmp29_;
+       GeeIterator* _tmp30_;
+       gchar* srv1;
+       GeeIterator* _tmp31_;
+       gpointer _tmp32_;
+       GeeIterator* _detail1_it;
+       FolksWebServiceDetails* _tmp33_;
+       GeeMultiMap* _tmp34_;
+       GeeMultiMap* _tmp35_;
+       const gchar* _tmp36_;
+       GeeCollection* _tmp37_;
+       GeeCollection* _tmp38_;
+       GeeIterator* _tmp39_;
+       GeeIterator* _tmp40_;
+       GeeIterator* _tmp41_;
+       FolksWebServiceFieldDetails* detail1;
+       GeeIterator* _tmp42_;
+       gpointer _tmp43_;
+       GeeHashMultiMap* _tmp44_;
+       const gchar* _tmp45_;
+       GeeCollection* _tmp46_;
+       GeeCollection* _tmp47_;
+       FolksWebServiceFieldDetails* _tmp48_;
+       gboolean _tmp49_;
+       GeeHashMultiMap* _tmp50_;
+       const gchar* _tmp51_;
+       FolksWebServiceFieldDetails* _tmp52_;
+       GeeHashMultiMap* _tmp53_;
+       const gchar* _tmp54_;
+       GeeCollection* _tmp55_;
+       GeeCollection* _tmp56_;
+       FolksWebServiceFieldDetails* _tmp57_;
+       gboolean _tmp58_;
+       GeeHashMultiMap* _tmp59_;
+       const gchar* _tmp60_;
+       FolksWebServiceFieldDetails* _tmp61_;
+       GeeIterator* _srv2_it;
+       GeeHashMultiMap* _tmp62_;
+       GeeSet* _tmp63_;
+       GeeSet* _tmp64_;
+       GeeIterator* _tmp65_;
+       GeeIterator* _tmp66_;
+       GeeIterator* _tmp67_;
+       gchar* srv2;
+       GeeIterator* _tmp68_;
+       gpointer _tmp69_;
+       GeeIterator* _detail2_it;
+       GeeHashMultiMap* _tmp70_;
+       const gchar* _tmp71_;
+       GeeCollection* _tmp72_;
+       GeeCollection* _tmp73_;
+       GeeIterator* _tmp74_;
+       GeeIterator* _tmp75_;
+       GeeIterator* _tmp76_;
+       FolksWebServiceFieldDetails* detail2;
+       GeeIterator* _tmp77_;
+       gpointer _tmp78_;
+       GeeHashMultiMap* _tmp79_;
+       const gchar* _tmp80_;
+       FolksWebServiceFieldDetails* _tmp81_;
+       GeeMultiMap* old_value;
+       FolksWebServiceDetails* _tmp82_;
+       GeeMultiMap* _tmp83_;
+       GeeMultiMap* _tmp84_;
+       GeeMultiMap* _tmp85_;
+       FolksWebServiceDetails* _tmp86_;
+       GeeHashMultiMap* _tmp87_;
+       GeeMultiMap* _tmp88_;
+       GError* e;
+       GError* _tmp89_;
+       const gchar* _tmp90_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsPersonaAttributeWebServiceSetValueData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsPersonaAttributeWebService* self;
+       FolksPersona* persona;
+       GObject* value;
+       FolksWebServiceDetails* details;
+       FolksWebServiceDetails* _tmp0_;
+       FolksWebServiceDetails* _tmp1_;
+       GeeHashMultiMap* v;
+       GeeHashMultiMap* _tmp2_;
+       FolksWebServiceDetails* _tmp3_;
+       GeeHashMultiMap* _tmp4_;
+       GError* e;
+       GError* _tmp5_;
+       const gchar* _tmp6_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsPersonaApplyAttributesData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       FolksPersona* persona;
+       GeeSet* added_attributes;
+       GeeSet* removed_attributes;
+       ContactsLinkOperation* operation;
+       GeeHashSet* properties;
+       GeeHashSet* _tmp0_;
+       GeeIterator* _a1_it;
+       GeeIterator* _tmp1_;
+       GeeIterator* _tmp2_;
+       ContactsPersonaAttribute* a1;
+       GeeIterator* _tmp3_;
+       gpointer _tmp4_;
+       GeeHashSet* _tmp5_;
+       ContactsPersonaAttribute* _tmp6_;
+       GeeIterator* _a2_it;
+       GeeIterator* _tmp7_;
+       GeeIterator* _tmp8_;
+       ContactsPersonaAttribute* a2;
+       GeeIterator* _tmp9_;
+       gpointer _tmp10_;
+       GeeHashSet* _tmp11_;
+       ContactsPersonaAttribute* _tmp12_;
+       GeeIterator* _property_it;
+       GeeHashSet* _tmp13_;
+       GeeIterator* _tmp14_;
+       GeeIterator* _tmp15_;
+       ContactsPersonaAttribute* property;
+       GeeIterator* _tmp16_;
+       gpointer _tmp17_;
+       GeeHashSet* added;
+       GeeHashSet* _tmp18_;
+       GeeHashSet* removed;
+       GeeHashSet* _tmp19_;
+       GeeIterator* _a3_it;
+       GeeIterator* _tmp20_;
+       GeeIterator* _tmp21_;
+       ContactsPersonaAttribute* a3;
+       GeeIterator* _tmp22_;
+       gpointer _tmp23_;
+       ContactsPersonaAttribute* _tmp24_;
+       ContactsPersonaAttribute* _tmp25_;
+       GeeHashSet* _tmp26_;
+       ContactsPersonaAttribute* _tmp27_;
+       GeeIterator* _a4_it;
+       GeeIterator* _tmp28_;
+       GeeIterator* _tmp29_;
+       ContactsPersonaAttribute* a4;
+       GeeIterator* _tmp30_;
+       gpointer _tmp31_;
+       ContactsPersonaAttribute* _tmp32_;
+       ContactsPersonaAttribute* _tmp33_;
+       GeeHashSet* _tmp34_;
+       ContactsPersonaAttribute* _tmp35_;
+       ContactsPersonaAttribute* _tmp36_;
+       GeeHashSet* _tmp37_;
+       GeeHashSet* _tmp38_;
+};
+
+struct _ContactsLinkContactsData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       FolksIndividual* main;
+       FolksIndividual* other;
+       ContactsStore* contacts_store;
+       ContactsLinkOperation* result;
+       ContactsLinkOperation* operation;
+       ContactsLinkOperation* _tmp0_;
+       ContactsLinkOperation* _tmp1_;
+       GeeSet* main_linkables;
+       GeeSet* _tmp2_;
+       GeeSet* other_linkables;
+       GeeSet* _tmp3_;
+       GeeSet* linkables;
+       GeeSet* _tmp4_;
+       GeeSet* _tmp5_;
+       GeeSet* _tmp6_;
+       GeeSet* _tmp7_;
+       GeeSet* _tmp8_;
+       FolksPersona* write_persona;
+       GeeIterator* _p1_it;
+       GeeSet* _tmp9_;
+       GeeSet* _tmp10_;
+       GeeIterator* _tmp11_;
+       GeeIterator* _tmp12_;
+       FolksPersona* p1;
+       GeeIterator* _tmp13_;
+       gpointer _tmp14_;
+       gboolean _tmp15_;
+       GeeSet* _tmp16_;
+       FolksPersona* _tmp17_;
+       GeeSet* _tmp18_;
+       FolksPersona* _tmp19_;
+       FolksPersona* _tmp20_;
+       GeeSet* _tmp21_;
+       GeeSet* _tmp22_;
+       FolksPersona* _tmp23_;
+       FolksPersonaStore* _tmp24_;
+       FolksPersonaStore* _tmp25_;
+       gboolean _tmp26_;
+       gboolean _tmp27_;
+       gboolean _tmp28_;
+       gboolean _tmp29_;
+       FolksPersona* _tmp30_;
+       FolksPersona* _tmp31_;
+       FolksPersonaStore* _tmp32_;
+       FolksPersonaStore* _tmp33_;
+       gboolean _tmp34_;
+       gboolean _tmp35_;
+       GeeIterator* _p2_it;
+       GeeSet* _tmp36_;
+       GeeSet* _tmp37_;
+       GeeIterator* _tmp38_;
+       GeeIterator* _tmp39_;
+       FolksPersona* p2;
+       GeeIterator* _tmp40_;
+       gpointer _tmp41_;
+       FolksPersona* _tmp42_;
+       GeeSet* _tmp43_;
+       gboolean _tmp44_;
+       FolksPersona* _tmp45_;
+       FolksPersona* _tmp46_;
+       FolksPersonaStore* _tmp47_;
+       FolksPersonaStore* _tmp48_;
+       gboolean _tmp49_;
+       gboolean _tmp50_;
+       FolksPersona* _tmp51_;
+       FolksPersona* _tmp52_;
+       GeeSet* _tmp53_;
+       GeeSet* _tmp54_;
+       FolksPersona* _tmp55_;
+       FolksPersonaStore* _tmp56_;
+       FolksPersonaStore* _tmp57_;
+       gboolean _tmp58_;
+       gboolean _tmp59_;
+       FolksPersona* _tmp60_;
+       GHashTable* details;
+       GHashFunc _tmp61_;
+       GEqualFunc _tmp62_;
+       GHashTable* _tmp63_;
+       GValue v;
+       GValue _tmp64_;
+       const gchar* _tmp65_;
+       const gchar* _tmp66_;
+       GHashTable* _tmp67_;
+       gchar* _tmp68_;
+       GValue _tmp69_;
+       GValue _tmp70_;
+       GValue* _tmp71_;
+       FolksPersona* _tmp72_;
+       FolksIndividualAggregator* _tmp73_;
+       FolksIndividualAggregator* _tmp74_;
+       FolksPersonaStore* _tmp75_;
+       FolksPersonaStore* _tmp76_;
+       GHashTable* _tmp77_;
+       FolksPersona* _tmp78_;
+       FolksPersona* _tmp79_;
+       ContactsLinkOperation* _tmp80_;
+       FolksPersona* _tmp81_;
+       GeeSet* _tmp82_;
+       GeeSet* _tmp83_;
+       GeeSet* _tmp84_;
+       GeeSet* _tmp85_;
+       GeeSet* _tmp86_;
+       GError* e;
+       GError* _tmp87_;
+       const gchar* _tmp88_;
+       FolksPersona* _tmp89_;
+       GeeSet* _tmp90_;
+       ContactsLinkOperation* _tmp91_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsUnlinkPersonaData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsStore* store;
+       FolksIndividual* individual;
+       FolksPersona* persona_to_unlink;
+       ContactsLinkOperation* result;
+       GeeHashSet* persona_to_unlink_removals;
+       GeeHashSet* _tmp0_;
+       GeeHashSet* other_personas_removals;
+       GeeHashSet* _tmp1_;
+       ContactsLinkOperation* operation;
+       ContactsLinkOperation* _tmp2_;
+       ContactsLinkOperation* _tmp3_;
+       GeeIterator* _a1_it;
+       GeeSet* _tmp4_;
+       GeeSet* _tmp5_;
+       GeeIterator* _tmp6_;
+       GeeIterator* _tmp7_;
+       GeeIterator* _tmp8_;
+       ContactsPersonaAttribute* a1;
+       GeeIterator* _tmp9_;
+       gpointer _tmp10_;
+       gboolean used_to_link;
+       GeeIterator* _persona_it;
+       GeeSet* _tmp11_;
+       GeeSet* _tmp12_;
+       GeeIterator* _tmp13_;
+       GeeIterator* _tmp14_;
+       FolksPersona* persona;
+       GeeIterator* _tmp15_;
+       gpointer _tmp16_;
+       gboolean _tmp17_;
+       FolksPersona* _tmp18_;
+       ContactsPersonaAttribute* _tmp19_;
+       FolksPersona* _tmp20_;
+       ContactsPersonaAttribute* _tmp21_;
+       GeeHashSet* _tmp22_;
+       ContactsPersonaAttribute* _tmp23_;
+       GeeHashSet* _tmp24_;
+       ContactsPersonaAttribute* _tmp25_;
+       GeeHashSet* main_persona_additions;
+       GeeHashSet* _tmp26_;
+       GeeIterator* _p1_it;
+       GeeSet* _tmp27_;
+       GeeSet* _tmp28_;
+       GeeIterator* _tmp29_;
+       GeeIterator* _tmp30_;
+       FolksPersona* p1;
+       GeeIterator* _tmp31_;
+       gpointer _tmp32_;
+       FolksPersona* _tmp33_;
+       GeeIterator* _a2_it;
+       FolksPersona* _tmp34_;
+       GeeSet* _tmp35_;
+       GeeSet* _tmp36_;
+       GeeIterator* _tmp37_;
+       GeeIterator* _tmp38_;
+       GeeIterator* _tmp39_;
+       ContactsPersonaAttribute* a2;
+       GeeIterator* _tmp40_;
+       gpointer _tmp41_;
+       GeeHashSet* _tmp42_;
+       ContactsPersonaAttribute* _tmp43_;
+       GeeHashSet* _tmp44_;
+       ContactsPersonaAttribute* _tmp45_;
+       FolksPersona* main_persona;
+       GeeIterator* _p2_it;
+       GeeSet* _tmp46_;
+       GeeSet* _tmp47_;
+       GeeIterator* _tmp48_;
+       GeeIterator* _tmp49_;
+       FolksPersona* p2;
+       GeeIterator* _tmp50_;
+       gpointer _tmp51_;
+       gboolean _tmp52_;
+       FolksPersona* _tmp53_;
+       FolksPersona* _tmp54_;
+       GeeHashSet* _tmp55_;
+       FolksPersona* _tmp56_;
+       FolksPersona* _tmp57_;
+       FolksPersona* _tmp58_;
+       FolksPersonaStore* _tmp59_;
+       FolksPersonaStore* _tmp60_;
+       gboolean _tmp61_;
+       gboolean _tmp62_;
+       GeeHashSet* other_personas;
+       GeeHashSet* _tmp63_;
+       GeeIterator* _p3_it;
+       GeeSet* _tmp64_;
+       GeeSet* _tmp65_;
+       GeeIterator* _tmp66_;
+       GeeIterator* _tmp67_;
+       FolksPersona* p3;
+       GeeIterator* _tmp68_;
+       gpointer _tmp69_;
+       gboolean _tmp70_;
+       FolksPersona* _tmp71_;
+       FolksPersona* _tmp72_;
+       FolksPersona* _tmp73_;
+       GeeHashSet* _tmp74_;
+       FolksPersona* _tmp75_;
+       gboolean _tmp76_;
+       FolksPersona* _tmp77_;
+       GeeHashSet* _tmp78_;
+       gint _tmp79_;
+       gint _tmp80_;
+       GHashTable* details;
+       GHashFunc _tmp81_;
+       GEqualFunc _tmp82_;
+       GHashTable* _tmp83_;
+       FolksPersona* _tmp84_;
+       FolksIndividualAggregator* _tmp85_;
+       FolksIndividualAggregator* _tmp86_;
+       FolksPersonaStore* _tmp87_;
+       FolksPersonaStore* _tmp88_;
+       GHashTable* _tmp89_;
+       FolksPersona* _tmp90_;
+       FolksPersona* _tmp91_;
+       FolksPersona* _tmp92_;
+       const gchar* _tmp93_;
+       const gchar* _tmp94_;
+       ContactsLinkOperation* _tmp95_;
+       FolksPersona* _tmp96_;
+       GError* e;
+       GError* _tmp97_;
+       const gchar* _tmp98_;
+       FolksPersona* _tmp99_;
+       FolksPersona* _tmp100_;
+       GeeHashSet* _tmp101_;
+       GeeHashSet* _tmp102_;
+       ContactsLinkOperation* _tmp103_;
+       GeeIterator* _p_it;
+       GeeHashSet* _tmp104_;
+       GeeIterator* _tmp105_;
+       GeeIterator* _tmp106_;
+       FolksPersona* p;
+       GeeIterator* _tmp107_;
+       gpointer _tmp108_;
+       FolksPersona* _tmp109_;
+       GeeHashSet* _tmp110_;
+       ContactsLinkOperation* _tmp111_;
+       GeeHashSet* _tmp112_;
+       ContactsLinkOperation* _tmp113_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsLinkOperation2 {
+       GObject parent_instance;
+       ContactsLinkOperation2Private * priv;
+};
+
+struct _ContactsLinkOperation2Class {
+       GObjectClass parent_class;
+};
+
+struct _ContactsLinkOperation2Private {
+       ContactsStore* contacts_store;
+       GeeLinkedList* old_personas_distribution;
+};
+
+struct _ContactsLinkOperation2UndoData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       ContactsLinkOperation2* self;
+       FolksIndividual* ind;
+       GeeLinkedList* _tmp0_;
+       gint _tmp1_;
+       gint _tmp2_;
+       GeeHashSet* ps;
+       GeeLinkedList* _tmp3_;
+       gpointer _tmp4_;
+       GeeIterator* _p_it;
+       GeeHashSet* _tmp5_;
+       GeeIterator* _tmp6_;
+       GeeIterator* _tmp7_;
+       FolksPersona* p;
+       GeeIterator* _tmp8_;
+       gpointer _tmp9_;
+       FolksPersona* _tmp10_;
+       FolksIndividual* _tmp11_;
+       FolksIndividual* _tmp12_;
+       FolksIndividual* _tmp13_;
+       FolksIndividual* _tmp14_;
+       ContactsStore* _tmp15_;
+       FolksIndividualAggregator* _tmp16_;
+       FolksIndividualAggregator* _tmp17_;
+       FolksIndividual* _tmp18_;
+       GError* e1;
+       FolksIndividual* _tmp19_;
+       const gchar* _tmp20_;
+       const gchar* _tmp21_;
+       GError* _tmp22_;
+       const gchar* _tmp23_;
+       GeeLinkedList* _ps_list;
+       GeeLinkedList* _tmp24_;
+       GeeLinkedList* _tmp25_;
+       gint _ps_size;
+       GeeLinkedList* _tmp26_;
+       gint _tmp27_;
+       gint _tmp28_;
+       gint _ps_index;
+       GeeHashSet* _vala1_ps;
+       GeeLinkedList* _tmp29_;
+       gpointer _tmp30_;
+       ContactsStore* _tmp31_;
+       FolksIndividualAggregator* _tmp32_;
+       FolksIndividualAggregator* _tmp33_;
+       GeeHashSet* _tmp34_;
+       GError* _vala1_e1;
+       GError* _tmp35_;
+       const gchar* _tmp36_;
+       GError* _inner_error0_;
+};
+
+struct _ContactsLinkContactsListData {
+       int _state_;
+       GObject* _source_object_;
+       GAsyncResult* _res_;
+       GTask* _async_result;
+       GeeLinkedList* contact_list;
+       ContactsStore* contacts_store;
+       ContactsLinkOperation2* result;
+       ContactsLinkOperation2* operation;
+       ContactsLinkOperation2* _tmp0_;
+       GeeHashSet* all_personas;
+       GeeHashSet* _tmp1_;
+       GeeLinkedList* _i_list;
+       GeeLinkedList* _tmp2_;
+       gint _i_size;
+       GeeLinkedList* _tmp3_;
+       gint _tmp4_;
+       gint _tmp5_;
+       gint _i_index;
+       FolksIndividual* i;
+       GeeLinkedList* _tmp6_;
+       gpointer _tmp7_;
+       GeeSet* ps;
+       FolksIndividual* _tmp8_;
+       GeeSet* _tmp9_;
+       GeeSet* _tmp10_;
+       GeeSet* _tmp11_;
+       GeeHashSet* _tmp12_;
+       GeeSet* _tmp13_;
+       ContactsLinkOperation2* _tmp14_;
+       GeeSet* _tmp15_;
+       FolksIndividualAggregator* _tmp16_;
+       FolksIndividualAggregator* _tmp17_;
+       GeeHashSet* _tmp18_;
+       GError* e1;
+       GError* _tmp19_;
+       const gchar* _tmp20_;
+       GError* _inner_error0_;
+};
+
+static gint ContactsLinkOperation_private_offset;
+static gpointer contacts_link_operation_parent_class = NULL;
+static gpointer contacts_link_operation_change_parent_class = NULL;
+static gpointer contacts_persona_attribute_parent_class = NULL;
+static gint ContactsPersonaAttributeLocalId_private_offset;
+static gpointer contacts_persona_attribute_local_id_parent_class = NULL;
+static gint ContactsPersonaAttributeImAddress_private_offset;
+static gpointer contacts_persona_attribute_im_address_parent_class = NULL;
+static gint ContactsPersonaAttributeWebService_private_offset;
+static gpointer contacts_persona_attribute_web_service_parent_class = NULL;
+static gint ContactsLinkOperation2_private_offset;
+static gpointer contacts_link_operation2_parent_class = NULL;
+
+GType contacts_link_operation_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkOperation, g_object_unref)
+gpointer contacts_link_operation_change_ref (gpointer instance);
+void contacts_link_operation_change_unref (gpointer instance);
+GParamSpec* contacts_link_operation_param_spec_change (const gchar* name,
+                                                       const gchar* nick,
+                                                       const gchar* blurb,
+                                                       GType object_type,
+                                                       GParamFlags flags);
+void contacts_link_operation_value_set_change (GValue* value,
+                                               gpointer v_object);
+void contacts_link_operation_value_take_change (GValue* value,
+                                                gpointer v_object);
+gpointer contacts_link_operation_value_get_change (const GValue* value);
+GType contacts_link_operation_change_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkOperationChange, contacts_link_operation_change_unref)
+ContactsLinkOperation* contacts_link_operation_new (void);
+ContactsLinkOperation* contacts_link_operation_construct (GType object_type);
+void contacts_link_operation_set_main_contact (ContactsLinkOperation* self,
+                                               FolksIndividual* individual);
+void contacts_link_operation_set_split_out_contact (ContactsLinkOperation* self,
+                                                    FolksIndividual* individual);
+void contacts_link_operation_added_persona (ContactsLinkOperation* self,
+                                            FolksPersona* persona);
+GType contacts_persona_attribute_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsPersonaAttribute, g_object_unref)
+void contacts_link_operation_add_change (ContactsLinkOperation* self,
+                                         ContactsPersonaAttribute* attribute,
+                                         FolksPersona* persona,
+                                         GObject* old_value);
+ContactsLinkOperationChange* contacts_link_operation_change_new (void);
+ContactsLinkOperationChange* contacts_link_operation_change_construct (GType object_type);
+static void contacts_link_operation_undo_data_free (gpointer _data);
+void contacts_link_operation_undo (ContactsLinkOperation* self,
+                                   GAsyncReadyCallback _callback_,
+                                   gpointer _user_data_);
+void contacts_link_operation_undo_finish (ContactsLinkOperation* self,
+                                          GAsyncResult* _res_);
+static gboolean contacts_link_operation_undo_co (ContactsLinkOperationUndoData* _data_);
+static void contacts_link_operation_undo_ready (GObject* source_object,
+                                         GAsyncResult* _res_,
+                                         gpointer _user_data_);
+void contacts_persona_attribute_set_value (ContactsPersonaAttribute* self,
+                                           FolksPersona* persona,
+                                           GObject* value,
+                                           GAsyncReadyCallback _callback_,
+                                           gpointer _user_data_);
+void contacts_persona_attribute_set_value_finish (ContactsPersonaAttribute* self,
+                                                  GAsyncResult* _res_);
+static void contacts_link_operation_change_finalize (ContactsLinkOperationChange * obj);
+static GType contacts_link_operation_change_get_type_once (void);
+static void contacts_link_operation_finalize (GObject * obj);
+static GType contacts_link_operation_get_type_once (void);
+GeeHashSet* contacts_persona_attribute_create_set (void);
+guint contacts_persona_attribute_hash (ContactsPersonaAttribute* self);
+gboolean contacts_persona_attribute_equal (ContactsPersonaAttribute* self,
+                                           ContactsPersonaAttribute* that);
+gboolean contacts_persona_attribute_is_removable (ContactsPersonaAttribute* self,
+                                                  FolksPersona* from_persona);
+static gboolean contacts_persona_attribute_real_is_removable (ContactsPersonaAttribute* self,
+                                                       FolksPersona* from_persona);
+static gboolean _vala_string_array_contains (gchar* * stack,
+                                      gint stack_length,
+                                      const gchar* needle);
+gboolean contacts_persona_attribute_is_referenced_by_persona (ContactsPersonaAttribute* self,
+                                                              FolksPersona* persona);
+static gboolean contacts_persona_attribute_real_is_referenced_by_persona (ContactsPersonaAttribute* self,
+                                                                   FolksPersona* persona);
+gchar* contacts_persona_attribute_to_string (ContactsPersonaAttribute* self);
+static gchar* contacts_persona_attribute_real_to_string (ContactsPersonaAttribute* self);
+static gboolean contacts_persona_attribute_real_equal (ContactsPersonaAttribute* self,
+                                                ContactsPersonaAttribute* that);
+static guint contacts_persona_attribute_real_hash (ContactsPersonaAttribute* self);
+void contacts_persona_attribute_persona_apply_attributes (ContactsPersonaAttribute* self,
+                                                          FolksPersona* persona,
+                                                          GeeSet* added_attributes,
+                                                          GeeSet* removed_attributes,
+                                                          ContactsLinkOperation* operation,
+                                                          GAsyncReadyCallback _callback_,
+                                                          gpointer _user_data_);
+void contacts_persona_attribute_persona_apply_attributes_finish (ContactsPersonaAttribute* self,
+                                                                 GAsyncResult* _res_);
+ContactsPersonaAttribute* contacts_persona_attribute_construct (GType object_type);
+static void contacts_persona_attribute_finalize (GObject * obj);
+static GType contacts_persona_attribute_get_type_once (void);
+GType contacts_persona_attribute_local_id_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsPersonaAttributeLocalId, g_object_unref)
+ContactsPersonaAttributeLocalId* contacts_persona_attribute_local_id_new (const gchar* value);
+ContactsPersonaAttributeLocalId* contacts_persona_attribute_local_id_construct (GType object_type,
+                                                                                const gchar* value);
+static gboolean contacts_persona_attribute_local_id_real_is_removable (ContactsPersonaAttribute* base,
+                                                                FolksPersona* from_persona);
+static gchar* contacts_persona_attribute_local_id_real_to_string (ContactsPersonaAttribute* base);
+static gboolean contacts_persona_attribute_local_id_real_is_referenced_by_persona (ContactsPersonaAttribute* 
base,
+                                                                            FolksPersona* persona);
+static void contacts_persona_attribute_local_id_real_persona_apply_attributes_data_free (gpointer _data);
+static void contacts_persona_attribute_local_id_real_persona_apply_attributes (ContactsPersonaAttribute* 
base,
+                                                                        FolksPersona* persona,
+                                                                        GeeSet* added_attributes,
+                                                                        GeeSet* removed_attributes,
+                                                                        ContactsLinkOperation* operation,
+                                                                        GAsyncReadyCallback _callback_,
+                                                                        gpointer _user_data_);
+static gboolean contacts_persona_attribute_local_id_real_persona_apply_attributes_co 
(ContactsPersonaAttributeLocalIdPersonaApplyAttributesData* _data_);
+static void contacts_persona_attribute_local_id_persona_apply_attributes_ready (GObject* source_object,
+                                                                         GAsyncResult* _res_,
+                                                                         gpointer _user_data_);
+static void contacts_persona_attribute_local_id_real_set_value_data_free (gpointer _data);
+static void contacts_persona_attribute_local_id_real_set_value (ContactsPersonaAttribute* base,
+                                                         FolksPersona* persona,
+                                                         GObject* value,
+                                                         GAsyncReadyCallback _callback_,
+                                                         gpointer _user_data_);
+static gboolean contacts_persona_attribute_local_id_real_set_value_co 
(ContactsPersonaAttributeLocalIdSetValueData* _data_);
+static void contacts_persona_attribute_local_id_set_value_ready (GObject* source_object,
+                                                          GAsyncResult* _res_,
+                                                          gpointer _user_data_);
+static gboolean contacts_persona_attribute_local_id_real_equal (ContactsPersonaAttribute* base,
+                                                         ContactsPersonaAttribute* _that);
+static guint contacts_persona_attribute_local_id_real_hash (ContactsPersonaAttribute* base);
+static void contacts_persona_attribute_local_id_finalize (GObject * obj);
+static GType contacts_persona_attribute_local_id_get_type_once (void);
+GType contacts_persona_attribute_im_address_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsPersonaAttributeImAddress, g_object_unref)
+ContactsPersonaAttributeImAddress* contacts_persona_attribute_im_address_new (const gchar* protocol,
+                                                                              FolksImFieldDetails* detail);
+ContactsPersonaAttributeImAddress* contacts_persona_attribute_im_address_construct (GType object_type,
+                                                                                    const gchar* protocol,
+                                                                                    FolksImFieldDetails* 
detail);
+static gchar* contacts_persona_attribute_im_address_real_to_string (ContactsPersonaAttribute* base);
+static gboolean contacts_persona_attribute_im_address_real_is_referenced_by_persona 
(ContactsPersonaAttribute* base,
+                                                                              FolksPersona* persona);
+static void contacts_persona_attribute_im_address_real_persona_apply_attributes_data_free (gpointer _data);
+static void contacts_persona_attribute_im_address_real_persona_apply_attributes (ContactsPersonaAttribute* 
base,
+                                                                          FolksPersona* persona,
+                                                                          GeeSet* added_attributes,
+                                                                          GeeSet* removed_attributes,
+                                                                          ContactsLinkOperation* operation,
+                                                                          GAsyncReadyCallback _callback_,
+                                                                          gpointer _user_data_);
+static gboolean contacts_persona_attribute_im_address_real_persona_apply_attributes_co 
(ContactsPersonaAttributeImAddressPersonaApplyAttributesData* _data_);
+static guint _folks_abstract_field_details_hash_static_gee_hash_data_func (gconstpointer v,
+                                                                    gpointer self);
+static gboolean _folks_abstract_field_details_equal_static_gee_equal_data_func (gconstpointer a,
+                                                                         gconstpointer b,
+                                                                         gpointer self);
+static void contacts_persona_attribute_im_address_persona_apply_attributes_ready (GObject* source_object,
+                                                                           GAsyncResult* _res_,
+                                                                           gpointer _user_data_);
+static void contacts_persona_attribute_im_address_real_set_value_data_free (gpointer _data);
+static void contacts_persona_attribute_im_address_real_set_value (ContactsPersonaAttribute* base,
+                                                           FolksPersona* persona,
+                                                           GObject* value,
+                                                           GAsyncReadyCallback _callback_,
+                                                           gpointer _user_data_);
+static gboolean contacts_persona_attribute_im_address_real_set_value_co 
(ContactsPersonaAttributeImAddressSetValueData* _data_);
+static void contacts_persona_attribute_im_address_set_value_ready (GObject* source_object,
+                                                            GAsyncResult* _res_,
+                                                            gpointer _user_data_);
+static gboolean contacts_persona_attribute_im_address_real_equal (ContactsPersonaAttribute* base,
+                                                           ContactsPersonaAttribute* _that);
+static guint contacts_persona_attribute_im_address_real_hash (ContactsPersonaAttribute* base);
+static void contacts_persona_attribute_im_address_finalize (GObject * obj);
+static GType contacts_persona_attribute_im_address_get_type_once (void);
+GType contacts_persona_attribute_web_service_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsPersonaAttributeWebService, g_object_unref)
+ContactsPersonaAttributeWebService* contacts_persona_attribute_web_service_new (const gchar* service,
+                                                                                FolksWebServiceFieldDetails* 
detail);
+ContactsPersonaAttributeWebService* contacts_persona_attribute_web_service_construct (GType object_type,
+                                                                                      const gchar* service,
+                                                                                      
FolksWebServiceFieldDetails* detail);
+static gchar* contacts_persona_attribute_web_service_real_to_string (ContactsPersonaAttribute* base);
+static gboolean contacts_persona_attribute_web_service_real_is_referenced_by_persona 
(ContactsPersonaAttribute* base,
+                                                                               FolksPersona* persona);
+static void contacts_persona_attribute_web_service_real_persona_apply_attributes_data_free (gpointer _data);
+static void contacts_persona_attribute_web_service_real_persona_apply_attributes (ContactsPersonaAttribute* 
base,
+                                                                           FolksPersona* persona,
+                                                                           GeeSet* added_attributes,
+                                                                           GeeSet* removed_attributes,
+                                                                           ContactsLinkOperation* operation,
+                                                                           GAsyncReadyCallback _callback_,
+                                                                           gpointer _user_data_);
+static gboolean contacts_persona_attribute_web_service_real_persona_apply_attributes_co 
(ContactsPersonaAttributeWebServicePersonaApplyAttributesData* _data_);
+static void contacts_persona_attribute_web_service_persona_apply_attributes_ready (GObject* source_object,
+                                                                            GAsyncResult* _res_,
+                                                                            gpointer _user_data_);
+static void contacts_persona_attribute_web_service_real_set_value_data_free (gpointer _data);
+static void contacts_persona_attribute_web_service_real_set_value (ContactsPersonaAttribute* base,
+                                                            FolksPersona* persona,
+                                                            GObject* value,
+                                                            GAsyncReadyCallback _callback_,
+                                                            gpointer _user_data_);
+static gboolean contacts_persona_attribute_web_service_real_set_value_co 
(ContactsPersonaAttributeWebServiceSetValueData* _data_);
+static void contacts_persona_attribute_web_service_set_value_ready (GObject* source_object,
+                                                             GAsyncResult* _res_,
+                                                             gpointer _user_data_);
+static gboolean contacts_persona_attribute_web_service_real_equal (ContactsPersonaAttribute* base,
+                                                            ContactsPersonaAttribute* _that);
+static guint contacts_persona_attribute_web_service_real_hash (ContactsPersonaAttribute* base);
+static void contacts_persona_attribute_web_service_finalize (GObject * obj);
+static GType contacts_persona_attribute_web_service_get_type_once (void);
+void contacts_add_linkable_attributes (GeeHashSet* set,
+                                       FolksPersona* persona);
+GeeSet* contacts_get_linkable_attributes (FolksPersona* persona);
+GeeSet* contacts_get_linkable_attributes_for_individual (FolksIndividual* individual);
+gboolean contacts_persona_can_link_to (FolksPersona* persona,
+                                       GeeSet* attributes);
+gboolean contacts_attr_type_equal (ContactsPersonaAttribute* a,
+                                   ContactsPersonaAttribute* b);
+static void contacts_persona_apply_attributes_data_free (gpointer _data);
+void contacts_persona_apply_attributes (FolksPersona* persona,
+                                        GeeSet* added_attributes,
+                                        GeeSet* removed_attributes,
+                                        ContactsLinkOperation* operation,
+                                        GAsyncReadyCallback _callback_,
+                                        gpointer _user_data_);
+void contacts_persona_apply_attributes_finish (GAsyncResult* _res_);
+static gboolean contacts_persona_apply_attributes_co (ContactsPersonaApplyAttributesData* _data_);
+static void contacts_persona_apply_attributes_ready (GObject* source_object,
+                                              GAsyncResult* _res_,
+                                              gpointer _user_data_);
+static void contacts_link_contacts_data_free (gpointer _data);
+void contacts_link_contacts (FolksIndividual* main,
+                             FolksIndividual* other,
+                             ContactsStore* contacts_store,
+                             GAsyncReadyCallback _callback_,
+                             gpointer _user_data_);
+ContactsLinkOperation* contacts_link_contacts_finish (GAsyncResult* _res_);
+static gboolean contacts_link_contacts_co (ContactsLinkContactsData* _data_);
+static void _g_free0_ (gpointer var);
+static void _vala_GValue_free (GValue* self);
+static void __vala_GValue_free0_ (gpointer var);
+static GValue* _g_value_dup (GValue* self);
+static void contacts_link_contacts_ready (GObject* source_object,
+                                   GAsyncResult* _res_,
+                                   gpointer _user_data_);
+static void contacts_unlink_persona_data_free (gpointer _data);
+void contacts_unlink_persona (ContactsStore* store,
+                              FolksIndividual* individual,
+                              FolksPersona* persona_to_unlink,
+                              GAsyncReadyCallback _callback_,
+                              gpointer _user_data_);
+ContactsLinkOperation* contacts_unlink_persona_finish (GAsyncResult* _res_);
+static gboolean contacts_unlink_persona_co (ContactsUnlinkPersonaData* _data_);
+static void contacts_unlink_persona_ready (GObject* source_object,
+                                    GAsyncResult* _res_,
+                                    gpointer _user_data_);
+GType contacts_link_operation2_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkOperation2, g_object_unref)
+ContactsLinkOperation2* contacts_link_operation2_new (ContactsStore* contacts_store);
+ContactsLinkOperation2* contacts_link_operation2_construct (GType object_type,
+                                                            ContactsStore* contacts_store);
+void contacts_link_operation2_add_persona_set (ContactsLinkOperation2* self,
+                                               GeeSet* persona_set);
+static void contacts_link_operation2_undo_data_free (gpointer _data);
+void contacts_link_operation2_undo (ContactsLinkOperation2* self,
+                                    GAsyncReadyCallback _callback_,
+                                    gpointer _user_data_);
+void contacts_link_operation2_undo_finish (ContactsLinkOperation2* self,
+                                           GAsyncResult* _res_);
+static gboolean contacts_link_operation2_undo_co (ContactsLinkOperation2UndoData* _data_);
+static void contacts_link_operation2_undo_ready (GObject* source_object,
+                                          GAsyncResult* _res_,
+                                          gpointer _user_data_);
+static void contacts_link_operation2_finalize (GObject * obj);
+static GType contacts_link_operation2_get_type_once (void);
+static void contacts_link_contacts_list_data_free (gpointer _data);
+void contacts_link_contacts_list (GeeLinkedList* contact_list,
+                                  ContactsStore* contacts_store,
+                                  GAsyncReadyCallback _callback_,
+                                  gpointer _user_data_);
+ContactsLinkOperation2* contacts_link_contacts_list_finish (GAsyncResult* _res_);
+static gboolean contacts_link_contacts_list_co (ContactsLinkContactsListData* _data_);
+static void contacts_link_contacts_list_ready (GObject* source_object,
+                                        GAsyncResult* _res_,
+                                        gpointer _user_data_);
+
+static inline gpointer
+contacts_link_operation_get_instance_private (ContactsLinkOperation* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsLinkOperation_private_offset);
+}
+
+ContactsLinkOperation*
+contacts_link_operation_construct (GType object_type)
+{
+       ContactsLinkOperation * self = NULL;
+       GeeArrayList* _tmp0_;
+#line 35 "../src/contacts-linking.vala"
+       self = (ContactsLinkOperation*) g_object_new (object_type, NULL);
+#line 36 "../src/contacts-linking.vala"
+       _tmp0_ = gee_array_list_new (CONTACTS_LINK_OPERATION_TYPE_CHANGE, (GBoxedCopyFunc) 
contacts_link_operation_change_ref, (GDestroyNotify) contacts_link_operation_change_unref, NULL, NULL, NULL);
+#line 36 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->changes);
+#line 36 "../src/contacts-linking.vala"
+       self->priv->changes = _tmp0_;
+#line 35 "../src/contacts-linking.vala"
+       return self;
+#line 1456 "contacts-linking.c"
+}
+
+ContactsLinkOperation*
+contacts_link_operation_new (void)
+{
+#line 35 "../src/contacts-linking.vala"
+       return contacts_link_operation_construct (CONTACTS_TYPE_LINK_OPERATION);
+#line 1464 "contacts-linking.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 40 "../src/contacts-linking.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 1472 "contacts-linking.c"
+}
+
+void
+contacts_link_operation_set_main_contact (ContactsLinkOperation* self,
+                                          FolksIndividual* individual)
+{
+       FolksIndividual* _tmp0_;
+#line 39 "../src/contacts-linking.vala"
+       g_return_if_fail (self != NULL);
+#line 40 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (individual);
+#line 40 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->main_contact);
+#line 40 "../src/contacts-linking.vala"
+       self->priv->main_contact = _tmp0_;
+#line 1488 "contacts-linking.c"
+}
+
+void
+contacts_link_operation_set_split_out_contact (ContactsLinkOperation* self,
+                                               FolksIndividual* individual)
+{
+#line 43 "../src/contacts-linking.vala"
+       g_return_if_fail (self != NULL);
+#line 44 "../src/contacts-linking.vala"
+       if (individual != NULL) {
+#line 1499 "contacts-linking.c"
+               GeeArrayList* _tmp0_;
+               GeeArrayList* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeSet* _tmp3_;
+#line 45 "../src/contacts-linking.vala"
+               _tmp0_ = gee_array_list_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL);
+#line 45 "../src/contacts-linking.vala"
+               _g_object_unref0 (self->priv->split_out_personas);
+#line 45 "../src/contacts-linking.vala"
+               self->priv->split_out_personas = _tmp0_;
+#line 46 "../src/contacts-linking.vala"
+               _tmp1_ = self->priv->split_out_personas;
+#line 46 "../src/contacts-linking.vala"
+               _tmp2_ = folks_individual_get_personas (individual);
+#line 46 "../src/contacts-linking.vala"
+               _tmp3_ = _tmp2_;
+#line 46 "../src/contacts-linking.vala"
+               gee_array_list_add_all (_tmp1_, (GeeCollection*) _tmp3_);
+#line 1518 "contacts-linking.c"
+       }
+}
+
+void
+contacts_link_operation_added_persona (ContactsLinkOperation* self,
+                                       FolksPersona* persona)
+{
+       FolksPersona* _tmp0_;
+#line 50 "../src/contacts-linking.vala"
+       g_return_if_fail (self != NULL);
+#line 50 "../src/contacts-linking.vala"
+       g_return_if_fail (persona != NULL);
+#line 51 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (persona);
+#line 51 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->_added_persona);
+#line 51 "../src/contacts-linking.vala"
+       self->priv->_added_persona = _tmp0_;
+#line 1537 "contacts-linking.c"
+}
+
+void
+contacts_link_operation_add_change (ContactsLinkOperation* self,
+                                    ContactsPersonaAttribute* attribute,
+                                    FolksPersona* persona,
+                                    GObject* old_value)
+{
+       ContactsLinkOperationChange* c = NULL;
+       ContactsLinkOperationChange* _tmp0_;
+       ContactsPersonaAttribute* _tmp1_;
+       FolksPersona* _tmp2_;
+       GObject* _tmp3_;
+       GeeArrayList* _tmp4_;
+#line 54 "../src/contacts-linking.vala"
+       g_return_if_fail (self != NULL);
+#line 54 "../src/contacts-linking.vala"
+       g_return_if_fail (attribute != NULL);
+#line 54 "../src/contacts-linking.vala"
+       g_return_if_fail (persona != NULL);
+#line 54 "../src/contacts-linking.vala"
+       g_return_if_fail (old_value != NULL);
+#line 55 "../src/contacts-linking.vala"
+       _tmp0_ = contacts_link_operation_change_new ();
+#line 55 "../src/contacts-linking.vala"
+       c = _tmp0_;
+#line 56 "../src/contacts-linking.vala"
+       _tmp1_ = _g_object_ref0 (attribute);
+#line 56 "../src/contacts-linking.vala"
+       _g_object_unref0 (c->attribute);
+#line 56 "../src/contacts-linking.vala"
+       c->attribute = _tmp1_;
+#line 57 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (persona);
+#line 57 "../src/contacts-linking.vala"
+       _g_object_unref0 (c->persona);
+#line 57 "../src/contacts-linking.vala"
+       c->persona = _tmp2_;
+#line 58 "../src/contacts-linking.vala"
+       _tmp3_ = _g_object_ref0 (old_value);
+#line 58 "../src/contacts-linking.vala"
+       _g_object_unref0 (c->old_value);
+#line 58 "../src/contacts-linking.vala"
+       c->old_value = _tmp3_;
+#line 59 "../src/contacts-linking.vala"
+       _tmp4_ = self->priv->changes;
+#line 59 "../src/contacts-linking.vala"
+       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp4_, c);
+#line 54 "../src/contacts-linking.vala"
+       _contacts_link_operation_change_unref0 (c);
+#line 1588 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_undo_data_free (gpointer _data)
+{
+       ContactsLinkOperationUndoData* _data_;
+       _data_ = _data;
+#line 24 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 24 "../src/contacts-linking.vala"
+       g_slice_free (ContactsLinkOperationUndoData, _data_);
+#line 1600 "contacts-linking.c"
+}
+
+void
+contacts_link_operation_undo (ContactsLinkOperation* self,
+                              GAsyncReadyCallback _callback_,
+                              gpointer _user_data_)
+{
+       ContactsLinkOperationUndoData* _data_;
+       ContactsLinkOperation* _tmp0_;
+#line 24 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsLinkOperationUndoData);
+#line 24 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 24 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_link_operation_undo_data_free);
+#line 24 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 24 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 24 "../src/contacts-linking.vala"
+       contacts_link_operation_undo_co (_data_);
+#line 1622 "contacts-linking.c"
+}
+
+void
+contacts_link_operation_undo_finish (ContactsLinkOperation* self,
+                                     GAsyncResult* _res_)
+{
+       ContactsLinkOperationUndoData* _data_;
+#line 24 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 1632 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_undo_ready (GObject* source_object,
+                                    GAsyncResult* _res_,
+                                    gpointer _user_data_)
+{
+       ContactsLinkOperationUndoData* _data_;
+#line 72 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 72 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 72 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 72 "../src/contacts-linking.vala"
+       contacts_link_operation_undo_co (_data_);
+#line 1649 "contacts-linking.c"
+}
+
+static gboolean
+contacts_link_operation_undo_co (ContactsLinkOperationUndoData* _data_)
+{
+#line 62 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 62 "../src/contacts-linking.vala"
+               case 0:
+#line 1659 "contacts-linking.c"
+               goto _state_0;
+#line 62 "../src/contacts-linking.vala"
+               case 1:
+#line 1663 "contacts-linking.c"
+               goto _state_1;
+#line 62 "../src/contacts-linking.vala"
+               case 2:
+#line 1667 "contacts-linking.c"
+               goto _state_2;
+               default:
+#line 62 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 1672 "contacts-linking.c"
+       }
+       _state_0:
+#line 63 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _data_->self->priv->main_contact;
+#line 63 "../src/contacts-linking.vala"
+       if (_data_->_tmp0_ != NULL) {
+#line 64 "../src/contacts-linking.vala"
+               _data_->_tmp1_ = _data_->self->priv->main_contact;
+#line 64 "../src/contacts-linking.vala"
+               g_object_set_data_full ((GObject*) _data_->_tmp1_, "contacts-master-at-join", (gpointer) 
((gintptr) TRUE), NULL);
+#line 1683 "contacts-linking.c"
+       }
+#line 65 "../src/contacts-linking.vala"
+       _data_->_tmp2_ = _data_->self->priv->split_out_personas;
+#line 65 "../src/contacts-linking.vala"
+       if (_data_->_tmp2_ != NULL) {
+#line 1689 "contacts-linking.c"
+               {
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_tmp3_ = _data_->self->priv->split_out_personas;
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_tmp4_ = _g_object_ref0 (_data_->_tmp3_);
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_p_list = _data_->_tmp4_;
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_tmp5_ = _data_->_p_list;
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_tmp6_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) 
_data_->_tmp5_);
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_tmp7_ = _data_->_tmp6_;
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_p_size = _data_->_tmp7_;
+#line 66 "../src/contacts-linking.vala"
+                       _data_->_p_index = -1;
+#line 66 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 66 "../src/contacts-linking.vala"
+                               _data_->_p_index = _data_->_p_index + 1;
+#line 66 "../src/contacts-linking.vala"
+                               if (!(_data_->_p_index < _data_->_p_size)) {
+#line 66 "../src/contacts-linking.vala"
+                                       break;
+#line 1715 "contacts-linking.c"
+                               }
+#line 66 "../src/contacts-linking.vala"
+                               _data_->_tmp8_ = _data_->_p_list;
+#line 66 "../src/contacts-linking.vala"
+                               _data_->_tmp9_ = gee_abstract_list_get ((GeeAbstractList*) _data_->_tmp8_, 
_data_->_p_index);
+#line 66 "../src/contacts-linking.vala"
+                               _data_->p = (FolksPersona*) _data_->_tmp9_;
+#line 67 "../src/contacts-linking.vala"
+                               _data_->_tmp10_ = _data_->p;
+#line 67 "../src/contacts-linking.vala"
+                               g_object_set_data_full ((GObject*) _data_->_tmp10_, "contacts-new-contact", 
(gpointer) ((gintptr) TRUE), NULL);
+#line 66 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->p);
+#line 1729 "contacts-linking.c"
+                       }
+#line 66 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_p_list);
+#line 1733 "contacts-linking.c"
+               }
+       }
+       {
+#line 71 "../src/contacts-linking.vala"
+               _data_->_tmp11_ = _data_->self->priv->_added_persona;
+#line 71 "../src/contacts-linking.vala"
+               if (_data_->_tmp11_ != NULL) {
+#line 72 "../src/contacts-linking.vala"
+                       _data_->_tmp12_ = _data_->self->priv->_added_persona;
+#line 72 "../src/contacts-linking.vala"
+                       _data_->_tmp13_ = folks_persona_get_store (_data_->_tmp12_);
+#line 72 "../src/contacts-linking.vala"
+                       _data_->_tmp14_ = _data_->_tmp13_;
+#line 72 "../src/contacts-linking.vala"
+                       _data_->_tmp15_ = _data_->self->priv->_added_persona;
+#line 72 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 72 "../src/contacts-linking.vala"
+                       folks_persona_store_remove_persona (_data_->_tmp14_, _data_->_tmp15_, 
contacts_link_operation_undo_ready, _data_);
+#line 72 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 1755 "contacts-linking.c"
+                       _state_1:
+#line 72 "../src/contacts-linking.vala"
+                       folks_persona_store_remove_persona_finish (_data_->_tmp14_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 72 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 1761 "contacts-linking.c"
+                               goto __catch14_g_error;
+                       }
+               }
+               {
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_tmp16_ = _data_->self->priv->changes;
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_tmp17_ = _g_object_ref0 (_data_->_tmp16_);
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_c_list = _data_->_tmp17_;
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_tmp18_ = _data_->_c_list;
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_tmp19_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) 
_data_->_tmp18_);
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_tmp20_ = _data_->_tmp19_;
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_c_size = _data_->_tmp20_;
+#line 74 "../src/contacts-linking.vala"
+                       _data_->_c_index = -1;
+#line 74 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 74 "../src/contacts-linking.vala"
+                               _data_->_c_index = _data_->_c_index + 1;
+#line 74 "../src/contacts-linking.vala"
+                               if (!(_data_->_c_index < _data_->_c_size)) {
+#line 74 "../src/contacts-linking.vala"
+                                       break;
+#line 1790 "contacts-linking.c"
+                               }
+#line 74 "../src/contacts-linking.vala"
+                               _data_->_tmp21_ = _data_->_c_list;
+#line 74 "../src/contacts-linking.vala"
+                               _data_->_tmp22_ = gee_abstract_list_get ((GeeAbstractList*) _data_->_tmp21_, 
_data_->_c_index);
+#line 74 "../src/contacts-linking.vala"
+                               _data_->c = (ContactsLinkOperationChange*) _data_->_tmp22_;
+#line 75 "../src/contacts-linking.vala"
+                               _data_->_tmp23_ = _data_->c;
+#line 75 "../src/contacts-linking.vala"
+                               _data_->_tmp24_ = _data_->_tmp23_->persona;
+#line 75 "../src/contacts-linking.vala"
+                               _data_->_tmp25_ = _data_->self->priv->_added_persona;
+#line 75 "../src/contacts-linking.vala"
+                               if (_data_->_tmp24_ != _data_->_tmp25_) {
+#line 76 "../src/contacts-linking.vala"
+                                       _data_->_tmp26_ = _data_->c;
+#line 76 "../src/contacts-linking.vala"
+                                       _data_->_tmp27_ = _data_->_tmp26_->attribute;
+#line 76 "../src/contacts-linking.vala"
+                                       _data_->_tmp28_ = _data_->c;
+#line 76 "../src/contacts-linking.vala"
+                                       _data_->_tmp29_ = _data_->_tmp28_->persona;
+#line 76 "../src/contacts-linking.vala"
+                                       _data_->_tmp30_ = _data_->c;
+#line 76 "../src/contacts-linking.vala"
+                                       _data_->_tmp31_ = _data_->_tmp30_->old_value;
+#line 76 "../src/contacts-linking.vala"
+                                       _data_->_state_ = 2;
+#line 76 "../src/contacts-linking.vala"
+                                       contacts_persona_attribute_set_value (_data_->_tmp27_, 
_data_->_tmp29_, _data_->_tmp31_, contacts_link_operation_undo_ready, _data_);
+#line 76 "../src/contacts-linking.vala"
+                                       return FALSE;
+#line 1824 "contacts-linking.c"
+                                       _state_2:
+#line 76 "../src/contacts-linking.vala"
+                                       contacts_persona_attribute_set_value_finish (_data_->_tmp27_, 
_data_->_res_);
+#line 1828 "contacts-linking.c"
+                               }
+#line 74 "../src/contacts-linking.vala"
+                               _contacts_link_operation_change_unref0 (_data_->c);
+#line 1832 "contacts-linking.c"
+                       }
+#line 74 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_c_list);
+#line 1836 "contacts-linking.c"
+               }
+       }
+       goto __finally14;
+       __catch14_g_error:
+       {
+#line 70 "../src/contacts-linking.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 70 "../src/contacts-linking.vala"
+               _data_->_inner_error0_ = NULL;
+#line 80 "../src/contacts-linking.vala"
+               _data_->_tmp32_ = _data_->e;
+#line 80 "../src/contacts-linking.vala"
+               _data_->_tmp33_ = _data_->_tmp32_->message;
+#line 80 "../src/contacts-linking.vala"
+               g_warning ("contacts-linking.vala:80: Error when undoing linking: %s\n", _data_->_tmp33_);
+#line 70 "../src/contacts-linking.vala"
+               _g_error_free0 (_data_->e);
+#line 1854 "contacts-linking.c"
+       }
+       __finally14:
+#line 70 "../src/contacts-linking.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 70 "../src/contacts-linking.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 70 "../src/contacts-linking.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 70 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 70 "../src/contacts-linking.vala"
+               return FALSE;
+#line 1867 "contacts-linking.c"
+       }
+#line 83 "../src/contacts-linking.vala"
+       _data_->_tmp34_ = _data_->self->priv->main_contact;
+#line 83 "../src/contacts-linking.vala"
+       if (_data_->_tmp34_ != NULL) {
+#line 84 "../src/contacts-linking.vala"
+               _data_->_tmp35_ = _data_->self->priv->main_contact;
+#line 84 "../src/contacts-linking.vala"
+               g_object_set_data_full ((GObject*) _data_->_tmp35_, "contacts-master-at-join", (gpointer) 
((gintptr) FALSE), NULL);
+#line 1877 "contacts-linking.c"
+       }
+#line 86 "../src/contacts-linking.vala"
+       _data_->_tmp36_ = _data_->self->priv->split_out_personas;
+#line 86 "../src/contacts-linking.vala"
+       if (_data_->_tmp36_ != NULL) {
+#line 1883 "contacts-linking.c"
+               {
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_tmp37_ = _data_->self->priv->split_out_personas;
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_tmp38_ = _g_object_ref0 (_data_->_tmp37_);
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_vala1__p_list = _data_->_tmp38_;
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_tmp39_ = _data_->_vala1__p_list;
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_tmp40_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) 
_data_->_tmp39_);
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_tmp41_ = _data_->_tmp40_;
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_vala1__p_size = _data_->_tmp41_;
+#line 87 "../src/contacts-linking.vala"
+                       _data_->_vala1__p_index = -1;
+#line 87 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 87 "../src/contacts-linking.vala"
+                               _data_->_vala1__p_index = _data_->_vala1__p_index + 1;
+#line 87 "../src/contacts-linking.vala"
+                               if (!(_data_->_vala1__p_index < _data_->_vala1__p_size)) {
+#line 87 "../src/contacts-linking.vala"
+                                       break;
+#line 1909 "contacts-linking.c"
+                               }
+#line 87 "../src/contacts-linking.vala"
+                               _data_->_tmp42_ = _data_->_vala1__p_list;
+#line 87 "../src/contacts-linking.vala"
+                               _data_->_tmp43_ = gee_abstract_list_get ((GeeAbstractList*) _data_->_tmp42_, 
_data_->_vala1__p_index);
+#line 87 "../src/contacts-linking.vala"
+                               _data_->_vala1_p = (FolksPersona*) _data_->_tmp43_;
+#line 88 "../src/contacts-linking.vala"
+                               _data_->_tmp44_ = _data_->_vala1_p;
+#line 88 "../src/contacts-linking.vala"
+                               g_object_set_data_full ((GObject*) _data_->_tmp44_, "contacts-new-contact", 
(gpointer) ((gintptr) FALSE), NULL);
+#line 87 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_vala1_p);
+#line 1923 "contacts-linking.c"
+                       }
+#line 87 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_vala1__p_list);
+#line 1927 "contacts-linking.c"
+               }
+       }
+#line 62 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 62 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 62 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 62 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 1938 "contacts-linking.c"
+               }
+       }
+#line 62 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 62 "../src/contacts-linking.vala"
+       return FALSE;
+#line 1945 "contacts-linking.c"
+}
+
+ContactsLinkOperationChange*
+contacts_link_operation_change_construct (GType object_type)
+{
+       ContactsLinkOperationChange* self = NULL;
+#line 25 "../src/contacts-linking.vala"
+       self = (ContactsLinkOperationChange*) g_type_create_instance (object_type);
+#line 25 "../src/contacts-linking.vala"
+       return self;
+#line 1956 "contacts-linking.c"
+}
+
+ContactsLinkOperationChange*
+contacts_link_operation_change_new (void)
+{
+#line 25 "../src/contacts-linking.vala"
+       return contacts_link_operation_change_construct (CONTACTS_LINK_OPERATION_TYPE_CHANGE);
+#line 1964 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_value_change_init (GValue* value)
+{
+#line 25 "../src/contacts-linking.vala"
+       value->data[0].v_pointer = NULL;
+#line 1972 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_value_change_free_value (GValue* value)
+{
+#line 25 "../src/contacts-linking.vala"
+       if (value->data[0].v_pointer) {
+#line 25 "../src/contacts-linking.vala"
+               contacts_link_operation_change_unref (value->data[0].v_pointer);
+#line 1982 "contacts-linking.c"
+       }
+}
+
+static void
+contacts_link_operation_value_change_copy_value (const GValue* src_value,
+                                                 GValue* dest_value)
+{
+#line 25 "../src/contacts-linking.vala"
+       if (src_value->data[0].v_pointer) {
+#line 25 "../src/contacts-linking.vala"
+               dest_value->data[0].v_pointer = contacts_link_operation_change_ref 
(src_value->data[0].v_pointer);
+#line 1994 "contacts-linking.c"
+       } else {
+#line 25 "../src/contacts-linking.vala"
+               dest_value->data[0].v_pointer = NULL;
+#line 1998 "contacts-linking.c"
+       }
+}
+
+static gpointer
+contacts_link_operation_value_change_peek_pointer (const GValue* value)
+{
+#line 25 "../src/contacts-linking.vala"
+       return value->data[0].v_pointer;
+#line 2007 "contacts-linking.c"
+}
+
+static gchar*
+contacts_link_operation_value_change_collect_value (GValue* value,
+                                                    guint n_collect_values,
+                                                    GTypeCValue* collect_values,
+                                                    guint collect_flags)
+{
+#line 25 "../src/contacts-linking.vala"
+       if (collect_values[0].v_pointer) {
+#line 2018 "contacts-linking.c"
+               ContactsLinkOperationChange * object;
+               object = collect_values[0].v_pointer;
+#line 25 "../src/contacts-linking.vala"
+               if (object->parent_instance.g_class == NULL) {
+#line 25 "../src/contacts-linking.vala"
+                       return g_strconcat ("invalid unclassed object pointer for value type `", 
G_VALUE_TYPE_NAME (value), "'", NULL);
+#line 2025 "contacts-linking.c"
+               } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
+#line 25 "../src/contacts-linking.vala"
+                       return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE 
(object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+#line 2029 "contacts-linking.c"
+               }
+#line 25 "../src/contacts-linking.vala"
+               value->data[0].v_pointer = contacts_link_operation_change_ref (object);
+#line 2033 "contacts-linking.c"
+       } else {
+#line 25 "../src/contacts-linking.vala"
+               value->data[0].v_pointer = NULL;
+#line 2037 "contacts-linking.c"
+       }
+#line 25 "../src/contacts-linking.vala"
+       return NULL;
+#line 2041 "contacts-linking.c"
+}
+
+static gchar*
+contacts_link_operation_value_change_lcopy_value (const GValue* value,
+                                                  guint n_collect_values,
+                                                  GTypeCValue* collect_values,
+                                                  guint collect_flags)
+{
+       ContactsLinkOperationChange ** object_p;
+       object_p = collect_values[0].v_pointer;
+#line 25 "../src/contacts-linking.vala"
+       if (!object_p) {
+#line 25 "../src/contacts-linking.vala"
+               return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+#line 2056 "contacts-linking.c"
+       }
+#line 25 "../src/contacts-linking.vala"
+       if (!value->data[0].v_pointer) {
+#line 25 "../src/contacts-linking.vala"
+               *object_p = NULL;
+#line 2062 "contacts-linking.c"
+       } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
+#line 25 "../src/contacts-linking.vala"
+               *object_p = value->data[0].v_pointer;
+#line 2066 "contacts-linking.c"
+       } else {
+#line 25 "../src/contacts-linking.vala"
+               *object_p = contacts_link_operation_change_ref (value->data[0].v_pointer);
+#line 2070 "contacts-linking.c"
+       }
+#line 25 "../src/contacts-linking.vala"
+       return NULL;
+#line 2074 "contacts-linking.c"
+}
+
+GParamSpec*
+contacts_link_operation_param_spec_change (const gchar* name,
+                                           const gchar* nick,
+                                           const gchar* blurb,
+                                           GType object_type,
+                                           GParamFlags flags)
+{
+       ContactsLinkOperationParamSpecChange* spec;
+#line 25 "../src/contacts-linking.vala"
+       g_return_val_if_fail (g_type_is_a (object_type, CONTACTS_LINK_OPERATION_TYPE_CHANGE), NULL);
+#line 25 "../src/contacts-linking.vala"
+       spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
+#line 25 "../src/contacts-linking.vala"
+       G_PARAM_SPEC (spec)->value_type = object_type;
+#line 25 "../src/contacts-linking.vala"
+       return G_PARAM_SPEC (spec);
+#line 2093 "contacts-linking.c"
+}
+
+gpointer
+contacts_link_operation_value_get_change (const GValue* value)
+{
+#line 25 "../src/contacts-linking.vala"
+       g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, CONTACTS_LINK_OPERATION_TYPE_CHANGE), NULL);
+#line 25 "../src/contacts-linking.vala"
+       return value->data[0].v_pointer;
+#line 2103 "contacts-linking.c"
+}
+
+void
+contacts_link_operation_value_set_change (GValue* value,
+                                          gpointer v_object)
+{
+       ContactsLinkOperationChange * old;
+#line 25 "../src/contacts-linking.vala"
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, CONTACTS_LINK_OPERATION_TYPE_CHANGE));
+#line 25 "../src/contacts-linking.vala"
+       old = value->data[0].v_pointer;
+#line 25 "../src/contacts-linking.vala"
+       if (v_object) {
+#line 25 "../src/contacts-linking.vala"
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, CONTACTS_LINK_OPERATION_TYPE_CHANGE));
+#line 25 "../src/contacts-linking.vala"
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE 
(value)));
+#line 25 "../src/contacts-linking.vala"
+               value->data[0].v_pointer = v_object;
+#line 25 "../src/contacts-linking.vala"
+               contacts_link_operation_change_ref (value->data[0].v_pointer);
+#line 2125 "contacts-linking.c"
+       } else {
+#line 25 "../src/contacts-linking.vala"
+               value->data[0].v_pointer = NULL;
+#line 2129 "contacts-linking.c"
+       }
+#line 25 "../src/contacts-linking.vala"
+       if (old) {
+#line 25 "../src/contacts-linking.vala"
+               contacts_link_operation_change_unref (old);
+#line 2135 "contacts-linking.c"
+       }
+}
+
+void
+contacts_link_operation_value_take_change (GValue* value,
+                                           gpointer v_object)
+{
+       ContactsLinkOperationChange * old;
+#line 25 "../src/contacts-linking.vala"
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, CONTACTS_LINK_OPERATION_TYPE_CHANGE));
+#line 25 "../src/contacts-linking.vala"
+       old = value->data[0].v_pointer;
+#line 25 "../src/contacts-linking.vala"
+       if (v_object) {
+#line 25 "../src/contacts-linking.vala"
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, CONTACTS_LINK_OPERATION_TYPE_CHANGE));
+#line 25 "../src/contacts-linking.vala"
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE 
(value)));
+#line 25 "../src/contacts-linking.vala"
+               value->data[0].v_pointer = v_object;
+#line 2156 "contacts-linking.c"
+       } else {
+#line 25 "../src/contacts-linking.vala"
+               value->data[0].v_pointer = NULL;
+#line 2160 "contacts-linking.c"
+       }
+#line 25 "../src/contacts-linking.vala"
+       if (old) {
+#line 25 "../src/contacts-linking.vala"
+               contacts_link_operation_change_unref (old);
+#line 2166 "contacts-linking.c"
+       }
+}
+
+static void
+contacts_link_operation_change_class_init (ContactsLinkOperationChangeClass * klass,
+                                           gpointer klass_data)
+{
+#line 25 "../src/contacts-linking.vala"
+       contacts_link_operation_change_parent_class = g_type_class_peek_parent (klass);
+#line 25 "../src/contacts-linking.vala"
+       ((ContactsLinkOperationChangeClass *) klass)->finalize = contacts_link_operation_change_finalize;
+#line 2178 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_change_instance_init (ContactsLinkOperationChange * self,
+                                              gpointer klass)
+{
+#line 25 "../src/contacts-linking.vala"
+       self->ref_count = 1;
+#line 2187 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_change_finalize (ContactsLinkOperationChange * obj)
+{
+       ContactsLinkOperationChange * self;
+#line 25 "../src/contacts-linking.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_LINK_OPERATION_TYPE_CHANGE, 
ContactsLinkOperationChange);
+#line 25 "../src/contacts-linking.vala"
+       g_signal_handlers_destroy (self);
+#line 26 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->attribute);
+#line 27 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->persona);
+#line 28 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->old_value);
+#line 2204 "contacts-linking.c"
+}
+
+static GType
+contacts_link_operation_change_get_type_once (void)
+{
+       static const GTypeValueTable g_define_type_value_table = { contacts_link_operation_value_change_init, 
contacts_link_operation_value_change_free_value, contacts_link_operation_value_change_copy_value, 
contacts_link_operation_value_change_peek_pointer, "p", contacts_link_operation_value_change_collect_value, 
"p", contacts_link_operation_value_change_lcopy_value };
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsLinkOperationChangeClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_link_operation_change_class_init, 
(GClassFinalizeFunc) NULL, NULL, sizeof (ContactsLinkOperationChange), 0, (GInstanceInitFunc) 
contacts_link_operation_change_instance_init, &g_define_type_value_table };
+       static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | 
G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
+       GType contacts_link_operation_change_type_id;
+       contacts_link_operation_change_type_id = g_type_register_fundamental (g_type_fundamental_next (), 
"ContactsLinkOperationChange", &g_define_type_info, &g_define_type_fundamental_info, 0);
+       return contacts_link_operation_change_type_id;
+}
+
+GType
+contacts_link_operation_change_get_type (void)
+{
+       static volatile gsize contacts_link_operation_change_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_link_operation_change_type_id__volatile)) {
+               GType contacts_link_operation_change_type_id;
+               contacts_link_operation_change_type_id = contacts_link_operation_change_get_type_once ();
+               g_once_init_leave (&contacts_link_operation_change_type_id__volatile, 
contacts_link_operation_change_type_id);
+       }
+       return contacts_link_operation_change_type_id__volatile;
+}
+
+gpointer
+contacts_link_operation_change_ref (gpointer instance)
+{
+       ContactsLinkOperationChange * self;
+       self = instance;
+#line 25 "../src/contacts-linking.vala"
+       g_atomic_int_inc (&self->ref_count);
+#line 25 "../src/contacts-linking.vala"
+       return instance;
+#line 2239 "contacts-linking.c"
+}
+
+void
+contacts_link_operation_change_unref (gpointer instance)
+{
+       ContactsLinkOperationChange * self;
+       self = instance;
+#line 25 "../src/contacts-linking.vala"
+       if (g_atomic_int_dec_and_test (&self->ref_count)) {
+#line 25 "../src/contacts-linking.vala"
+               CONTACTS_LINK_OPERATION_CHANGE_GET_CLASS (self)->finalize (self);
+#line 25 "../src/contacts-linking.vala"
+               g_type_free_instance ((GTypeInstance *) self);
+#line 2253 "contacts-linking.c"
+       }
+}
+
+static void
+contacts_link_operation_class_init (ContactsLinkOperationClass * klass,
+                                    gpointer klass_data)
+{
+#line 24 "../src/contacts-linking.vala"
+       contacts_link_operation_parent_class = g_type_class_peek_parent (klass);
+#line 24 "../src/contacts-linking.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsLinkOperation_private_offset);
+#line 24 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_link_operation_finalize;
+#line 2267 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_instance_init (ContactsLinkOperation * self,
+                                       gpointer klass)
+{
+#line 24 "../src/contacts-linking.vala"
+       self->priv = contacts_link_operation_get_instance_private (self);
+#line 2276 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation_finalize (GObject * obj)
+{
+       ContactsLinkOperation * self;
+#line 24 "../src/contacts-linking.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperation);
+#line 30 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->_added_persona);
+#line 31 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->main_contact);
+#line 32 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->split_out_personas);
+#line 33 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->changes);
+#line 24 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (contacts_link_operation_parent_class)->finalize (obj);
+#line 2295 "contacts-linking.c"
+}
+
+static GType
+contacts_link_operation_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsLinkOperationClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_link_operation_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsLinkOperation), 0, (GInstanceInitFunc) contacts_link_operation_instance_init, 
NULL };
+       GType contacts_link_operation_type_id;
+       contacts_link_operation_type_id = g_type_register_static (G_TYPE_OBJECT, "ContactsLinkOperation", 
&g_define_type_info, 0);
+       ContactsLinkOperation_private_offset = g_type_add_instance_private (contacts_link_operation_type_id, 
sizeof (ContactsLinkOperationPrivate));
+       return contacts_link_operation_type_id;
+}
+
+GType
+contacts_link_operation_get_type (void)
+{
+       static volatile gsize contacts_link_operation_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_link_operation_type_id__volatile)) {
+               GType contacts_link_operation_type_id;
+               contacts_link_operation_type_id = contacts_link_operation_get_type_once ();
+               g_once_init_leave (&contacts_link_operation_type_id__volatile, 
contacts_link_operation_type_id);
+       }
+       return contacts_link_operation_type_id__volatile;
+}
+
+GeeHashSet*
+contacts_persona_attribute_create_set (void)
+{
+       GeeHashSet* _tmp0_;
+       GeeHashSet* result = NULL;
+#line 97 "../src/contacts-linking.vala"
+       _tmp0_ = gee_hash_set_new (CONTACTS_TYPE_PERSONA_ATTRIBUTE, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, (GeeHashDataFunc) contacts_persona_attribute_hash, NULL, NULL, 
(GeeEqualDataFunc) contacts_persona_attribute_equal, NULL, NULL);
+#line 97 "../src/contacts-linking.vala"
+       result = _tmp0_;
+#line 97 "../src/contacts-linking.vala"
+       return result;
+#line 2331 "contacts-linking.c"
+}
+
+static gboolean
+_vala_string_array_contains (gchar* * stack,
+                             gint stack_length,
+                             const gchar* needle)
+{
+       gint i;
+#line 102 "../src/contacts-linking.vala"
+       for (i = 0; i < stack_length; i++) {
+#line 102 "../src/contacts-linking.vala"
+               if (g_strcmp0 (stack[i], needle) == 0) {
+#line 102 "../src/contacts-linking.vala"
+                       return TRUE;
+#line 2346 "contacts-linking.c"
+               }
+       }
+#line 102 "../src/contacts-linking.vala"
+       return FALSE;
+#line 2351 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_real_is_removable (ContactsPersonaAttribute* self,
+                                              FolksPersona* from_persona)
+{
+       const gchar* _tmp0_;
+       gchar** _tmp1_;
+       gint _tmp1__length1;
+       gchar** _tmp2_;
+       gint _tmp2__length1;
+       gboolean result = FALSE;
+#line 101 "../src/contacts-linking.vala"
+       g_return_val_if_fail (from_persona != NULL, FALSE);
+#line 102 "../src/contacts-linking.vala"
+       _tmp0_ = self->property_name;
+#line 102 "../src/contacts-linking.vala"
+       _tmp1_ = folks_persona_get_writeable_properties (from_persona, &_tmp1__length1);
+#line 102 "../src/contacts-linking.vala"
+       _tmp2_ = _tmp1_;
+#line 102 "../src/contacts-linking.vala"
+       _tmp2__length1 = _tmp1__length1;
+#line 102 "../src/contacts-linking.vala"
+       result = _vala_string_array_contains (_tmp2_, _tmp2__length1, _tmp0_);
+#line 102 "../src/contacts-linking.vala"
+       return result;
+#line 2378 "contacts-linking.c"
+}
+
+gboolean
+contacts_persona_attribute_is_removable (ContactsPersonaAttribute* self,
+                                         FolksPersona* from_persona)
+{
+#line 101 "../src/contacts-linking.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 101 "../src/contacts-linking.vala"
+       return CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->is_removable (self, from_persona);
+#line 2389 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_real_is_referenced_by_persona (ContactsPersonaAttribute* self,
+                                                          FolksPersona* persona)
+{
+       gboolean _tmp0_ = FALSE;
+#line 105 "../src/contacts-linking.vala"
+       g_critical ("Type `%s' does not implement abstract method 
`contacts_persona_attribute_is_referenced_by_persona'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 105 "../src/contacts-linking.vala"
+       return _tmp0_;
+#line 2401 "contacts-linking.c"
+}
+
+gboolean
+contacts_persona_attribute_is_referenced_by_persona (ContactsPersonaAttribute* self,
+                                                     FolksPersona* persona)
+{
+#line 105 "../src/contacts-linking.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 105 "../src/contacts-linking.vala"
+       return CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->is_referenced_by_persona (self, persona);
+#line 2412 "contacts-linking.c"
+}
+
+static gchar*
+contacts_persona_attribute_real_to_string (ContactsPersonaAttribute* self)
+{
+#line 107 "../src/contacts-linking.vala"
+       g_critical ("Type `%s' does not implement abstract method `contacts_persona_attribute_to_string'", 
g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 107 "../src/contacts-linking.vala"
+       return NULL;
+#line 2422 "contacts-linking.c"
+}
+
+gchar*
+contacts_persona_attribute_to_string (ContactsPersonaAttribute* self)
+{
+#line 107 "../src/contacts-linking.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 107 "../src/contacts-linking.vala"
+       return CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->to_string (self);
+#line 2432 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_real_equal (ContactsPersonaAttribute* self,
+                                       ContactsPersonaAttribute* that)
+{
+       const gchar* _tmp0_;
+       const gchar* _tmp1_;
+       gboolean result = FALSE;
+#line 109 "../src/contacts-linking.vala"
+       g_return_val_if_fail (that != NULL, FALSE);
+#line 110 "../src/contacts-linking.vala"
+       _tmp0_ = self->property_name;
+#line 110 "../src/contacts-linking.vala"
+       _tmp1_ = that->property_name;
+#line 110 "../src/contacts-linking.vala"
+       result = g_strcmp0 (_tmp0_, _tmp1_) == 0;
+#line 110 "../src/contacts-linking.vala"
+       return result;
+#line 2452 "contacts-linking.c"
+}
+
+gboolean
+contacts_persona_attribute_equal (ContactsPersonaAttribute* self,
+                                  ContactsPersonaAttribute* that)
+{
+#line 109 "../src/contacts-linking.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 109 "../src/contacts-linking.vala"
+       return CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->equal (self, that);
+#line 2463 "contacts-linking.c"
+}
+
+static guint
+contacts_persona_attribute_real_hash (ContactsPersonaAttribute* self)
+{
+       const gchar* _tmp0_;
+       guint result = 0U;
+#line 114 "../src/contacts-linking.vala"
+       _tmp0_ = self->property_name;
+#line 114 "../src/contacts-linking.vala"
+       result = g_str_hash (_tmp0_);
+#line 114 "../src/contacts-linking.vala"
+       return result;
+#line 2477 "contacts-linking.c"
+}
+
+guint
+contacts_persona_attribute_hash (ContactsPersonaAttribute* self)
+{
+#line 113 "../src/contacts-linking.vala"
+       g_return_val_if_fail (self != NULL, 0U);
+#line 113 "../src/contacts-linking.vala"
+       return CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->hash (self);
+#line 2487 "contacts-linking.c"
+}
+
+void
+contacts_persona_attribute_persona_apply_attributes (ContactsPersonaAttribute* self,
+                                                     FolksPersona* persona,
+                                                     GeeSet* added_attributes,
+                                                     GeeSet* removed_attributes,
+                                                     ContactsLinkOperation* operation,
+                                                     GAsyncReadyCallback _callback_,
+                                                     gpointer _user_data_)
+{
+#line 93 "../src/contacts-linking.vala"
+       CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->persona_apply_attributes (self, persona, 
added_attributes, removed_attributes, operation, _callback_, _user_data_);
+#line 2501 "contacts-linking.c"
+}
+
+void
+contacts_persona_attribute_persona_apply_attributes_finish (ContactsPersonaAttribute* self,
+                                                            GAsyncResult* _res_)
+{
+#line 93 "../src/contacts-linking.vala"
+       CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->persona_apply_attributes_finish (self, _res_);
+#line 2510 "contacts-linking.c"
+}
+
+void
+contacts_persona_attribute_set_value (ContactsPersonaAttribute* self,
+                                      FolksPersona* persona,
+                                      GObject* value,
+                                      GAsyncReadyCallback _callback_,
+                                      gpointer _user_data_)
+{
+#line 93 "../src/contacts-linking.vala"
+       CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->set_value (self, persona, value, _callback_, 
_user_data_);
+#line 2522 "contacts-linking.c"
+}
+
+void
+contacts_persona_attribute_set_value_finish (ContactsPersonaAttribute* self,
+                                             GAsyncResult* _res_)
+{
+#line 93 "../src/contacts-linking.vala"
+       CONTACTS_PERSONA_ATTRIBUTE_GET_CLASS (self)->set_value_finish (self, _res_);
+#line 2531 "contacts-linking.c"
+}
+
+ContactsPersonaAttribute*
+contacts_persona_attribute_construct (GType object_type)
+{
+       ContactsPersonaAttribute * self = NULL;
+#line 93 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttribute*) g_object_new (object_type, NULL);
+#line 93 "../src/contacts-linking.vala"
+       return self;
+#line 2542 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_class_init (ContactsPersonaAttributeClass * klass,
+                                       gpointer klass_data)
+{
+#line 93 "../src/contacts-linking.vala"
+       contacts_persona_attribute_parent_class = g_type_class_peek_parent (klass);
+#line 93 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->is_removable = (gboolean (*) (ContactsPersonaAttribute*, 
FolksPersona*)) contacts_persona_attribute_real_is_removable;
+#line 93 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->is_referenced_by_persona = (gboolean (*) 
(ContactsPersonaAttribute*, FolksPersona*)) contacts_persona_attribute_real_is_referenced_by_persona;
+#line 93 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->to_string = (gchar* (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_real_to_string;
+#line 93 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->equal = (gboolean (*) (ContactsPersonaAttribute*, 
ContactsPersonaAttribute*)) contacts_persona_attribute_real_equal;
+#line 93 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->hash = (guint (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_real_hash;
+#line 93 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_persona_attribute_finalize;
+#line 2563 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_instance_init (ContactsPersonaAttribute * self,
+                                          gpointer klass)
+{
+}
+
+static void
+contacts_persona_attribute_finalize (GObject * obj)
+{
+       ContactsPersonaAttribute * self;
+#line 93 "../src/contacts-linking.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute);
+#line 94 "../src/contacts-linking.vala"
+       _g_free0 (self->property_name);
+#line 93 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (contacts_persona_attribute_parent_class)->finalize (obj);
+#line 2582 "contacts-linking.c"
+}
+
+static GType
+contacts_persona_attribute_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsPersonaAttributeClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_persona_attribute_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsPersonaAttribute), 0, (GInstanceInitFunc) 
contacts_persona_attribute_instance_init, NULL };
+       GType contacts_persona_attribute_type_id;
+       contacts_persona_attribute_type_id = g_type_register_static (G_TYPE_OBJECT, 
"ContactsPersonaAttribute", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+       return contacts_persona_attribute_type_id;
+}
+
+GType
+contacts_persona_attribute_get_type (void)
+{
+       static volatile gsize contacts_persona_attribute_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_persona_attribute_type_id__volatile)) {
+               GType contacts_persona_attribute_type_id;
+               contacts_persona_attribute_type_id = contacts_persona_attribute_get_type_once ();
+               g_once_init_leave (&contacts_persona_attribute_type_id__volatile, 
contacts_persona_attribute_type_id);
+       }
+       return contacts_persona_attribute_type_id__volatile;
+}
+
+static inline gpointer
+contacts_persona_attribute_local_id_get_instance_private (ContactsPersonaAttributeLocalId* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsPersonaAttributeLocalId_private_offset);
+}
+
+ContactsPersonaAttributeLocalId*
+contacts_persona_attribute_local_id_construct (GType object_type,
+                                               const gchar* value)
+{
+       ContactsPersonaAttributeLocalId * self = NULL;
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+#line 127 "../src/contacts-linking.vala"
+       g_return_val_if_fail (value != NULL, NULL);
+#line 127 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) contacts_persona_attribute_construct (object_type);
+#line 128 "../src/contacts-linking.vala"
+       _tmp0_ = g_strdup ("local-ids");
+#line 128 "../src/contacts-linking.vala"
+       _g_free0 (((ContactsPersonaAttribute*) self)->property_name);
+#line 128 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttribute*) self)->property_name = _tmp0_;
+#line 129 "../src/contacts-linking.vala"
+       _tmp1_ = g_strdup (value);
+#line 129 "../src/contacts-linking.vala"
+       _g_free0 (self->priv->value);
+#line 129 "../src/contacts-linking.vala"
+       self->priv->value = _tmp1_;
+#line 127 "../src/contacts-linking.vala"
+       return self;
+#line 2637 "contacts-linking.c"
+}
+
+ContactsPersonaAttributeLocalId*
+contacts_persona_attribute_local_id_new (const gchar* value)
+{
+#line 127 "../src/contacts-linking.vala"
+       return contacts_persona_attribute_local_id_construct (CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID, 
value);
+#line 2645 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_local_id_real_is_removable (ContactsPersonaAttribute* base,
+                                                       FolksPersona* from_persona)
+{
+       ContactsPersonaAttributeLocalId * self;
+       gboolean _tmp0_ = FALSE;
+       gboolean result = FALSE;
+#line 132 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) base;
+#line 132 "../src/contacts-linking.vala"
+       g_return_val_if_fail (from_persona != NULL, FALSE);
+#line 133 "../src/contacts-linking.vala"
+       if (CONTACTS_PERSONA_ATTRIBUTE_CLASS (contacts_persona_attribute_local_id_parent_class)->is_removable 
(G_TYPE_CHECK_INSTANCE_CAST (self, CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute), from_persona)) 
{
+#line 2661 "contacts-linking.c"
+               const gchar* _tmp1_;
+               const gchar* _tmp2_;
+               const gchar* _tmp3_;
+#line 133 "../src/contacts-linking.vala"
+               _tmp1_ = self->priv->value;
+#line 133 "../src/contacts-linking.vala"
+               _tmp2_ = folks_persona_get_iid (from_persona);
+#line 133 "../src/contacts-linking.vala"
+               _tmp3_ = _tmp2_;
+#line 133 "../src/contacts-linking.vala"
+               _tmp0_ = g_strcmp0 (_tmp1_, _tmp3_) != 0;
+#line 2673 "contacts-linking.c"
+       } else {
+#line 133 "../src/contacts-linking.vala"
+               _tmp0_ = FALSE;
+#line 2677 "contacts-linking.c"
+       }
+#line 133 "../src/contacts-linking.vala"
+       result = _tmp0_;
+#line 133 "../src/contacts-linking.vala"
+       return result;
+#line 2683 "contacts-linking.c"
+}
+
+static gchar*
+contacts_persona_attribute_local_id_real_to_string (ContactsPersonaAttribute* base)
+{
+       ContactsPersonaAttributeLocalId * self;
+       const gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* result = NULL;
+#line 136 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) base;
+#line 137 "../src/contacts-linking.vala"
+       _tmp0_ = self->priv->value;
+#line 137 "../src/contacts-linking.vala"
+       _tmp1_ = g_strconcat ("local_id: ", _tmp0_, NULL);
+#line 137 "../src/contacts-linking.vala"
+       result = _tmp1_;
+#line 137 "../src/contacts-linking.vala"
+       return result;
+#line 2703 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_local_id_real_is_referenced_by_persona (ContactsPersonaAttribute* base,
+                                                                   FolksPersona* persona)
+{
+       ContactsPersonaAttributeLocalId * self;
+       FolksLocalIdDetails* details = NULL;
+       FolksLocalIdDetails* _tmp0_;
+       FolksLocalIdDetails* _tmp1_;
+       FolksLocalIdDetails* _tmp2_;
+       GeeSet* _tmp3_;
+       GeeSet* _tmp4_;
+       const gchar* _tmp5_;
+       gboolean result = FALSE;
+#line 140 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) base;
+#line 140 "../src/contacts-linking.vala"
+       g_return_val_if_fail (persona != NULL, FALSE);
+#line 141 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_LOCAL_ID_DETAILS) ? 
((FolksLocalIdDetails*) persona) : NULL);
+#line 141 "../src/contacts-linking.vala"
+       details = _tmp0_;
+#line 142 "../src/contacts-linking.vala"
+       _tmp1_ = details;
+#line 142 "../src/contacts-linking.vala"
+       if (_tmp1_ == NULL) {
+#line 143 "../src/contacts-linking.vala"
+               result = FALSE;
+#line 143 "../src/contacts-linking.vala"
+               _g_object_unref0 (details);
+#line 143 "../src/contacts-linking.vala"
+               return result;
+#line 2737 "contacts-linking.c"
+       }
+#line 145 "../src/contacts-linking.vala"
+       _tmp2_ = details;
+#line 145 "../src/contacts-linking.vala"
+       _tmp3_ = folks_local_id_details_get_local_ids (_tmp2_);
+#line 145 "../src/contacts-linking.vala"
+       _tmp4_ = _tmp3_;
+#line 145 "../src/contacts-linking.vala"
+       _tmp5_ = self->priv->value;
+#line 145 "../src/contacts-linking.vala"
+       result = gee_collection_contains ((GeeCollection*) _tmp4_, _tmp5_);
+#line 145 "../src/contacts-linking.vala"
+       _g_object_unref0 (details);
+#line 145 "../src/contacts-linking.vala"
+       return result;
+#line 2753 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_real_persona_apply_attributes_data_free (gpointer _data)
+{
+       ContactsPersonaAttributeLocalIdPersonaApplyAttributesData* _data_;
+       _data_ = _data;
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_attributes);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_attributes);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->operation);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 124 "../src/contacts-linking.vala"
+       g_slice_free (ContactsPersonaAttributeLocalIdPersonaApplyAttributesData, _data_);
+#line 2773 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_real_persona_apply_attributes (ContactsPersonaAttribute* base,
+                                                                   FolksPersona* persona,
+                                                                   GeeSet* added_attributes,
+                                                                   GeeSet* removed_attributes,
+                                                                   ContactsLinkOperation* operation,
+                                                                   GAsyncReadyCallback _callback_,
+                                                                   gpointer _user_data_)
+{
+       ContactsPersonaAttributeLocalId * self;
+       ContactsPersonaAttributeLocalIdPersonaApplyAttributesData* _data_;
+       ContactsPersonaAttributeLocalId* _tmp0_;
+       FolksPersona* _tmp1_;
+       GeeSet* _tmp2_;
+       GeeSet* _tmp3_;
+       ContactsLinkOperation* _tmp4_;
+#line 124 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) base;
+#line 124 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsPersonaAttributeLocalIdPersonaApplyAttributesData);
+#line 124 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 124 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_persona_attribute_local_id_real_persona_apply_attributes_data_free);
+#line 124 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 124 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 124 "../src/contacts-linking.vala"
+       _tmp1_ = _g_object_ref0 (persona);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 124 "../src/contacts-linking.vala"
+       _data_->persona = _tmp1_;
+#line 124 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (added_attributes);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_attributes);
+#line 124 "../src/contacts-linking.vala"
+       _data_->added_attributes = _tmp2_;
+#line 124 "../src/contacts-linking.vala"
+       _tmp3_ = _g_object_ref0 (removed_attributes);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_attributes);
+#line 124 "../src/contacts-linking.vala"
+       _data_->removed_attributes = _tmp3_;
+#line 124 "../src/contacts-linking.vala"
+       _tmp4_ = _g_object_ref0 (operation);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->operation);
+#line 124 "../src/contacts-linking.vala"
+       _data_->operation = _tmp4_;
+#line 124 "../src/contacts-linking.vala"
+       contacts_persona_attribute_local_id_real_persona_apply_attributes_co (_data_);
+#line 2830 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_persona_apply_attributes_finish (ContactsPersonaAttribute* base,
+                                                                     GAsyncResult* _res_)
+{
+       ContactsPersonaAttributeLocalIdPersonaApplyAttributesData* _data_;
+#line 124 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 2840 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_persona_apply_attributes_ready (GObject* source_object,
+                                                                    GAsyncResult* _res_,
+                                                                    gpointer _user_data_)
+{
+       ContactsPersonaAttributeLocalIdPersonaApplyAttributesData* _data_;
+#line 186 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 186 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 186 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 186 "../src/contacts-linking.vala"
+       contacts_persona_attribute_local_id_real_persona_apply_attributes_co (_data_);
+#line 2857 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_local_id_real_persona_apply_attributes_co 
(ContactsPersonaAttributeLocalIdPersonaApplyAttributesData* _data_)
+{
+#line 148 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 148 "../src/contacts-linking.vala"
+               case 0:
+#line 2867 "contacts-linking.c"
+               goto _state_0;
+#line 148 "../src/contacts-linking.vala"
+               case 1:
+#line 2871 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 148 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 2876 "contacts-linking.c"
+       }
+       _state_0:
+#line 152 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, 
FOLKS_TYPE_LOCAL_ID_DETAILS) ? ((FolksLocalIdDetails*) _data_->persona) : NULL);
+#line 152 "../src/contacts-linking.vala"
+       _data_->details = _data_->_tmp0_;
+#line 153 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = _data_->details;
+#line 153 "../src/contacts-linking.vala"
+       if (_data_->_tmp1_ == NULL) {
+#line 154 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 154 "../src/contacts-linking.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 154 "../src/contacts-linking.vala"
+               if (_data_->_state_ != 0) {
+#line 154 "../src/contacts-linking.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 154 "../src/contacts-linking.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 2897 "contacts-linking.c"
+                       }
+               }
+#line 154 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 154 "../src/contacts-linking.vala"
+               return FALSE;
+#line 2904 "contacts-linking.c"
+       }
+#line 156 "../src/contacts-linking.vala"
+       _data_->_tmp2_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, 
NULL, NULL, NULL, NULL, NULL, NULL);
+#line 156 "../src/contacts-linking.vala"
+       _data_->added_values = _data_->_tmp2_;
+#line 2910 "contacts-linking.c"
+       {
+#line 157 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = gee_iterable_iterator ((GeeIterable*) _data_->added_attributes);
+#line 157 "../src/contacts-linking.vala"
+               _data_->_added_it = _data_->_tmp3_;
+#line 157 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 157 "../src/contacts-linking.vala"
+                       _data_->_tmp4_ = _data_->_added_it;
+#line 157 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp4_)) {
+#line 157 "../src/contacts-linking.vala"
+                               break;
+#line 2924 "contacts-linking.c"
+                       }
+#line 157 "../src/contacts-linking.vala"
+                       _data_->_tmp5_ = _data_->_added_it;
+#line 157 "../src/contacts-linking.vala"
+                       _data_->_tmp6_ = gee_iterator_get (_data_->_tmp5_);
+#line 157 "../src/contacts-linking.vala"
+                       _data_->added = (ContactsPersonaAttribute*) _data_->_tmp6_;
+#line 158 "../src/contacts-linking.vala"
+                       _data_->_tmp7_ = _data_->added_values;
+#line 158 "../src/contacts-linking.vala"
+                       _data_->_tmp8_ = _data_->added;
+#line 158 "../src/contacts-linking.vala"
+                       _data_->_tmp9_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp8_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID, ContactsPersonaAttributeLocalId)->priv->value;
+#line 158 "../src/contacts-linking.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp7_, _data_->_tmp9_);
+#line 157 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->added);
+#line 2942 "contacts-linking.c"
+               }
+#line 157 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_added_it);
+#line 2946 "contacts-linking.c"
+       }
+#line 161 "../src/contacts-linking.vala"
+       _data_->_tmp10_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 161 "../src/contacts-linking.vala"
+       _data_->removed_values = _data_->_tmp10_;
+#line 2952 "contacts-linking.c"
+       {
+#line 162 "../src/contacts-linking.vala"
+               _data_->_tmp11_ = gee_iterable_iterator ((GeeIterable*) _data_->removed_attributes);
+#line 162 "../src/contacts-linking.vala"
+               _data_->_removed_it = _data_->_tmp11_;
+#line 162 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 162 "../src/contacts-linking.vala"
+                       _data_->_tmp12_ = _data_->_removed_it;
+#line 162 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp12_)) {
+#line 162 "../src/contacts-linking.vala"
+                               break;
+#line 2966 "contacts-linking.c"
+                       }
+#line 162 "../src/contacts-linking.vala"
+                       _data_->_tmp13_ = _data_->_removed_it;
+#line 162 "../src/contacts-linking.vala"
+                       _data_->_tmp14_ = gee_iterator_get (_data_->_tmp13_);
+#line 162 "../src/contacts-linking.vala"
+                       _data_->removed = (ContactsPersonaAttribute*) _data_->_tmp14_;
+#line 163 "../src/contacts-linking.vala"
+                       _data_->_tmp15_ = _data_->removed_values;
+#line 163 "../src/contacts-linking.vala"
+                       _data_->_tmp16_ = _data_->removed;
+#line 163 "../src/contacts-linking.vala"
+                       _data_->_tmp17_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp16_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID, ContactsPersonaAttributeLocalId)->priv->value;
+#line 163 "../src/contacts-linking.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp15_, 
_data_->_tmp17_);
+#line 162 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->removed);
+#line 2984 "contacts-linking.c"
+               }
+#line 162 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_removed_it);
+#line 2988 "contacts-linking.c"
+       }
+#line 166 "../src/contacts-linking.vala"
+       _data_->_tmp18_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 166 "../src/contacts-linking.vala"
+       _data_->new_values = _data_->_tmp18_;
+#line 167 "../src/contacts-linking.vala"
+       _data_->changed = FALSE;
+#line 2996 "contacts-linking.c"
+       {
+#line 168 "../src/contacts-linking.vala"
+               _data_->_tmp19_ = _data_->details;
+#line 168 "../src/contacts-linking.vala"
+               _data_->_tmp20_ = folks_local_id_details_get_local_ids (_data_->_tmp19_);
+#line 168 "../src/contacts-linking.vala"
+               _data_->_tmp21_ = _data_->_tmp20_;
+#line 168 "../src/contacts-linking.vala"
+               _data_->_tmp22_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp21_);
+#line 168 "../src/contacts-linking.vala"
+               _data_->_v_it = _data_->_tmp22_;
+#line 168 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 168 "../src/contacts-linking.vala"
+                       _data_->_tmp23_ = _data_->_v_it;
+#line 168 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp23_)) {
+#line 168 "../src/contacts-linking.vala"
+                               break;
+#line 3016 "contacts-linking.c"
+                       }
+#line 168 "../src/contacts-linking.vala"
+                       _data_->_tmp24_ = _data_->_v_it;
+#line 168 "../src/contacts-linking.vala"
+                       _data_->_tmp25_ = gee_iterator_get (_data_->_tmp24_);
+#line 168 "../src/contacts-linking.vala"
+                       _data_->v = (gchar*) _data_->_tmp25_;
+#line 169 "../src/contacts-linking.vala"
+                       _data_->_tmp26_ = _data_->removed_values;
+#line 169 "../src/contacts-linking.vala"
+                       _data_->_tmp27_ = _data_->v;
+#line 169 "../src/contacts-linking.vala"
+                       if (gee_abstract_collection_contains ((GeeAbstractCollection*) _data_->_tmp26_, 
_data_->_tmp27_)) {
+#line 170 "../src/contacts-linking.vala"
+                               _data_->changed = TRUE;
+#line 171 "../src/contacts-linking.vala"
+                               _g_free0 (_data_->v);
+#line 171 "../src/contacts-linking.vala"
+                               continue;
+#line 3036 "contacts-linking.c"
+                       }
+#line 173 "../src/contacts-linking.vala"
+                       _data_->_tmp28_ = _data_->new_values;
+#line 173 "../src/contacts-linking.vala"
+                       _data_->_tmp29_ = _data_->v;
+#line 173 "../src/contacts-linking.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp28_, 
_data_->_tmp29_);
+#line 174 "../src/contacts-linking.vala"
+                       _data_->_tmp30_ = _data_->added_values;
+#line 174 "../src/contacts-linking.vala"
+                       _data_->_tmp31_ = _data_->v;
+#line 174 "../src/contacts-linking.vala"
+                       if (gee_abstract_collection_contains ((GeeAbstractCollection*) _data_->_tmp30_, 
_data_->_tmp31_)) {
+#line 175 "../src/contacts-linking.vala"
+                               _data_->_tmp32_ = _data_->added_values;
+#line 175 "../src/contacts-linking.vala"
+                               _data_->_tmp33_ = _data_->v;
+#line 175 "../src/contacts-linking.vala"
+                               gee_abstract_collection_remove ((GeeAbstractCollection*) _data_->_tmp32_, 
_data_->_tmp33_);
+#line 3056 "contacts-linking.c"
+                       }
+#line 168 "../src/contacts-linking.vala"
+                       _g_free0 (_data_->v);
+#line 3060 "contacts-linking.c"
+               }
+#line 168 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_v_it);
+#line 3064 "contacts-linking.c"
+       }
+       {
+#line 177 "../src/contacts-linking.vala"
+               _data_->_tmp34_ = _data_->added_values;
+#line 177 "../src/contacts-linking.vala"
+               _data_->_tmp35_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) _data_->_tmp34_);
+#line 177 "../src/contacts-linking.vala"
+               _data_->_v2_it = _data_->_tmp35_;
+#line 177 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 177 "../src/contacts-linking.vala"
+                       _data_->_tmp36_ = _data_->_v2_it;
+#line 177 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp36_)) {
+#line 177 "../src/contacts-linking.vala"
+                               break;
+#line 3081 "contacts-linking.c"
+                       }
+#line 177 "../src/contacts-linking.vala"
+                       _data_->_tmp37_ = _data_->_v2_it;
+#line 177 "../src/contacts-linking.vala"
+                       _data_->_tmp38_ = gee_iterator_get (_data_->_tmp37_);
+#line 177 "../src/contacts-linking.vala"
+                       _data_->v2 = (gchar*) _data_->_tmp38_;
+#line 178 "../src/contacts-linking.vala"
+                       _data_->changed = TRUE;
+#line 179 "../src/contacts-linking.vala"
+                       _data_->_tmp39_ = _data_->new_values;
+#line 179 "../src/contacts-linking.vala"
+                       _data_->_tmp40_ = _data_->v2;
+#line 179 "../src/contacts-linking.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp39_, 
_data_->_tmp40_);
+#line 177 "../src/contacts-linking.vala"
+                       _g_free0 (_data_->v2);
+#line 3099 "contacts-linking.c"
+               }
+#line 177 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_v2_it);
+#line 3103 "contacts-linking.c"
+       }
+#line 182 "../src/contacts-linking.vala"
+       if (_data_->changed) {
+#line 3107 "contacts-linking.c"
+               {
+#line 184 "../src/contacts-linking.vala"
+                       _data_->_tmp41_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, 
(GDestroyNotify) g_free, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 184 "../src/contacts-linking.vala"
+                       _data_->old_value = _data_->_tmp41_;
+#line 185 "../src/contacts-linking.vala"
+                       _data_->_tmp42_ = _data_->old_value;
+#line 185 "../src/contacts-linking.vala"
+                       _data_->_tmp43_ = _data_->details;
+#line 185 "../src/contacts-linking.vala"
+                       _data_->_tmp44_ = folks_local_id_details_get_local_ids (_data_->_tmp43_);
+#line 185 "../src/contacts-linking.vala"
+                       _data_->_tmp45_ = _data_->_tmp44_;
+#line 185 "../src/contacts-linking.vala"
+                       gee_collection_add_all ((GeeCollection*) _data_->_tmp42_, (GeeCollection*) 
_data_->_tmp45_);
+#line 186 "../src/contacts-linking.vala"
+                       _data_->_tmp46_ = _data_->details;
+#line 186 "../src/contacts-linking.vala"
+                       _data_->_tmp47_ = _data_->new_values;
+#line 186 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 186 "../src/contacts-linking.vala"
+                       folks_local_id_details_change_local_ids (_data_->_tmp46_, (GeeSet*) _data_->_tmp47_, 
contacts_persona_attribute_local_id_persona_apply_attributes_ready, _data_);
+#line 186 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 3133 "contacts-linking.c"
+                       _state_1:
+#line 186 "../src/contacts-linking.vala"
+                       folks_local_id_details_change_local_ids_finish (_data_->_tmp46_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 186 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 186 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->old_value);
+#line 3141 "contacts-linking.c"
+                               goto __catch15_g_error;
+                       }
+#line 187 "../src/contacts-linking.vala"
+                       _data_->_tmp48_ = _data_->old_value;
+#line 187 "../src/contacts-linking.vala"
+                       contacts_link_operation_add_change (_data_->operation, (ContactsPersonaAttribute*) 
_data_->self, _data_->persona, (GObject*) _data_->_tmp48_);
+#line 183 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->old_value);
+#line 3150 "contacts-linking.c"
+               }
+               goto __finally15;
+               __catch15_g_error:
+               {
+#line 183 "../src/contacts-linking.vala"
+                       _data_->e = _data_->_inner_error0_;
+#line 183 "../src/contacts-linking.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 189 "../src/contacts-linking.vala"
+                       _data_->_tmp49_ = _data_->e;
+#line 189 "../src/contacts-linking.vala"
+                       _data_->_tmp50_ = _data_->_tmp49_->message;
+#line 189 "../src/contacts-linking.vala"
+                       g_warning ("contacts-linking.vala:189: Unable to set local ids when linking: %s\n", 
_data_->_tmp50_);
+#line 183 "../src/contacts-linking.vala"
+                       _g_error_free0 (_data_->e);
+#line 3167 "contacts-linking.c"
+               }
+               __finally15:
+#line 183 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 183 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->new_values);
+#line 183 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->removed_values);
+#line 183 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->added_values);
+#line 183 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->details);
+#line 183 "../src/contacts-linking.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 183 "../src/contacts-linking.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 183 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 183 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 3188 "contacts-linking.c"
+               }
+       }
+#line 148 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->new_values);
+#line 148 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_values);
+#line 148 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_values);
+#line 148 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->details);
+#line 148 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 148 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 148 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 148 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 3207 "contacts-linking.c"
+               }
+       }
+#line 148 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 148 "../src/contacts-linking.vala"
+       return FALSE;
+#line 3214 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_real_set_value_data_free (gpointer _data)
+{
+       ContactsPersonaAttributeLocalIdSetValueData* _data_;
+       _data_ = _data;
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->value);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 124 "../src/contacts-linking.vala"
+       g_slice_free (ContactsPersonaAttributeLocalIdSetValueData, _data_);
+#line 3230 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_real_set_value (ContactsPersonaAttribute* base,
+                                                    FolksPersona* persona,
+                                                    GObject* value,
+                                                    GAsyncReadyCallback _callback_,
+                                                    gpointer _user_data_)
+{
+       ContactsPersonaAttributeLocalId * self;
+       ContactsPersonaAttributeLocalIdSetValueData* _data_;
+       ContactsPersonaAttributeLocalId* _tmp0_;
+       FolksPersona* _tmp1_;
+       GObject* _tmp2_;
+#line 124 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) base;
+#line 124 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsPersonaAttributeLocalIdSetValueData);
+#line 124 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 124 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_persona_attribute_local_id_real_set_value_data_free);
+#line 124 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 124 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 124 "../src/contacts-linking.vala"
+       _tmp1_ = _g_object_ref0 (persona);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 124 "../src/contacts-linking.vala"
+       _data_->persona = _tmp1_;
+#line 124 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (value);
+#line 124 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->value);
+#line 124 "../src/contacts-linking.vala"
+       _data_->value = _tmp2_;
+#line 124 "../src/contacts-linking.vala"
+       contacts_persona_attribute_local_id_real_set_value_co (_data_);
+#line 3271 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_set_value_finish (ContactsPersonaAttribute* base,
+                                                      GAsyncResult* _res_)
+{
+       ContactsPersonaAttributeLocalIdSetValueData* _data_;
+#line 124 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 3281 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_set_value_ready (GObject* source_object,
+                                                     GAsyncResult* _res_,
+                                                     gpointer _user_data_)
+{
+       ContactsPersonaAttributeLocalIdSetValueData* _data_;
+#line 201 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 201 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 201 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 201 "../src/contacts-linking.vala"
+       contacts_persona_attribute_local_id_real_set_value_co (_data_);
+#line 3298 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_local_id_real_set_value_co (ContactsPersonaAttributeLocalIdSetValueData* _data_)
+{
+#line 194 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 194 "../src/contacts-linking.vala"
+               case 0:
+#line 3308 "contacts-linking.c"
+               goto _state_0;
+#line 194 "../src/contacts-linking.vala"
+               case 1:
+#line 3312 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 194 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 3317 "contacts-linking.c"
+       }
+       _state_0:
+#line 195 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, 
FOLKS_TYPE_LOCAL_ID_DETAILS) ? ((FolksLocalIdDetails*) _data_->persona) : NULL);
+#line 195 "../src/contacts-linking.vala"
+       _data_->details = _data_->_tmp0_;
+#line 196 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = _data_->details;
+#line 196 "../src/contacts-linking.vala"
+       if (_data_->_tmp1_ == NULL) {
+#line 197 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 197 "../src/contacts-linking.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 197 "../src/contacts-linking.vala"
+               if (_data_->_state_ != 0) {
+#line 197 "../src/contacts-linking.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 197 "../src/contacts-linking.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 3338 "contacts-linking.c"
+                       }
+               }
+#line 197 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 197 "../src/contacts-linking.vala"
+               return FALSE;
+#line 3345 "contacts-linking.c"
+       }
+       {
+#line 200 "../src/contacts-linking.vala"
+               _data_->_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->value, 
GEE_TYPE_HASH_SET) ? ((GeeHashSet*) _data_->value) : NULL);
+#line 200 "../src/contacts-linking.vala"
+               _data_->v = _data_->_tmp2_;
+#line 201 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = _data_->details;
+#line 201 "../src/contacts-linking.vala"
+               _data_->_tmp4_ = _data_->v;
+#line 201 "../src/contacts-linking.vala"
+               _data_->_state_ = 1;
+#line 201 "../src/contacts-linking.vala"
+               folks_local_id_details_change_local_ids (_data_->_tmp3_, (GeeSet*) _data_->_tmp4_, 
contacts_persona_attribute_local_id_set_value_ready, _data_);
+#line 201 "../src/contacts-linking.vala"
+               return FALSE;
+#line 3362 "contacts-linking.c"
+               _state_1:
+#line 201 "../src/contacts-linking.vala"
+               folks_local_id_details_change_local_ids_finish (_data_->_tmp3_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 201 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 201 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->v);
+#line 3370 "contacts-linking.c"
+                       goto __catch16_g_error;
+               }
+#line 199 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->v);
+#line 3375 "contacts-linking.c"
+       }
+       goto __finally16;
+       __catch16_g_error:
+       {
+#line 199 "../src/contacts-linking.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 199 "../src/contacts-linking.vala"
+               _data_->_inner_error0_ = NULL;
+#line 203 "../src/contacts-linking.vala"
+               _data_->_tmp5_ = _data_->e;
+#line 203 "../src/contacts-linking.vala"
+               _data_->_tmp6_ = _data_->_tmp5_->message;
+#line 203 "../src/contacts-linking.vala"
+               g_warning ("contacts-linking.vala:203: Unable to set local ids when undoing link: " \
+"%s\n", _data_->_tmp6_);
+#line 199 "../src/contacts-linking.vala"
+               _g_error_free0 (_data_->e);
+#line 3392 "contacts-linking.c"
+       }
+       __finally16:
+#line 199 "../src/contacts-linking.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 199 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 199 "../src/contacts-linking.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 199 "../src/contacts-linking.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 199 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 199 "../src/contacts-linking.vala"
+               return FALSE;
+#line 3407 "contacts-linking.c"
+       }
+#line 194 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->details);
+#line 194 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 194 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 194 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 194 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 3419 "contacts-linking.c"
+               }
+       }
+#line 194 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 194 "../src/contacts-linking.vala"
+       return FALSE;
+#line 3426 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_local_id_real_equal (ContactsPersonaAttribute* base,
+                                                ContactsPersonaAttribute* _that)
+{
+       ContactsPersonaAttributeLocalId * self;
+       ContactsPersonaAttributeLocalId* that = NULL;
+       ContactsPersonaAttributeLocalId* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       gboolean _tmp2_ = FALSE;
+       ContactsPersonaAttributeLocalId* _tmp3_;
+       gboolean result = FALSE;
+#line 207 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) base;
+#line 207 "../src/contacts-linking.vala"
+       g_return_val_if_fail (_that != NULL, FALSE);
+#line 208 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (CONTACTS_IS_PERSONA_ATTRIBUTE_LOCAL_ID (_that) ? 
((ContactsPersonaAttributeLocalId*) _that) : NULL);
+#line 208 "../src/contacts-linking.vala"
+       that = _tmp0_;
+#line 210 "../src/contacts-linking.vala"
+       _tmp3_ = that;
+#line 210 "../src/contacts-linking.vala"
+       if (_tmp3_ != NULL) {
+#line 3452 "contacts-linking.c"
+               ContactsPersonaAttributeLocalId* _tmp4_;
+#line 211 "../src/contacts-linking.vala"
+               _tmp4_ = that;
+#line 211 "../src/contacts-linking.vala"
+               _tmp2_ = CONTACTS_PERSONA_ATTRIBUTE_CLASS 
(contacts_persona_attribute_local_id_parent_class)->equal (G_TYPE_CHECK_INSTANCE_CAST (self, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute), (ContactsPersonaAttribute*) _tmp4_);
+#line 3458 "contacts-linking.c"
+       } else {
+#line 210 "../src/contacts-linking.vala"
+               _tmp2_ = FALSE;
+#line 3462 "contacts-linking.c"
+       }
+#line 210 "../src/contacts-linking.vala"
+       if (_tmp2_) {
+#line 3466 "contacts-linking.c"
+               const gchar* _tmp5_;
+               ContactsPersonaAttributeLocalId* _tmp6_;
+               const gchar* _tmp7_;
+#line 212 "../src/contacts-linking.vala"
+               _tmp5_ = self->priv->value;
+#line 212 "../src/contacts-linking.vala"
+               _tmp6_ = that;
+#line 212 "../src/contacts-linking.vala"
+               _tmp7_ = _tmp6_->priv->value;
+#line 212 "../src/contacts-linking.vala"
+               _tmp1_ = g_strcmp0 (_tmp5_, _tmp7_) == 0;
+#line 3478 "contacts-linking.c"
+       } else {
+#line 210 "../src/contacts-linking.vala"
+               _tmp1_ = FALSE;
+#line 3482 "contacts-linking.c"
+       }
+#line 209 "../src/contacts-linking.vala"
+       result = _tmp1_;
+#line 209 "../src/contacts-linking.vala"
+       _g_object_unref0 (that);
+#line 209 "../src/contacts-linking.vala"
+       return result;
+#line 3490 "contacts-linking.c"
+}
+
+static guint
+contacts_persona_attribute_local_id_real_hash (ContactsPersonaAttribute* base)
+{
+       ContactsPersonaAttributeLocalId * self;
+       const gchar* _tmp0_;
+       guint result = 0U;
+#line 215 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeLocalId*) base;
+#line 216 "../src/contacts-linking.vala"
+       _tmp0_ = self->priv->value;
+#line 216 "../src/contacts-linking.vala"
+       result = g_str_hash (_tmp0_) ^ CONTACTS_PERSONA_ATTRIBUTE_CLASS 
(contacts_persona_attribute_local_id_parent_class)->hash (G_TYPE_CHECK_INSTANCE_CAST (self, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute));
+#line 216 "../src/contacts-linking.vala"
+       return result;
+#line 3507 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_class_init (ContactsPersonaAttributeLocalIdClass * klass,
+                                                gpointer klass_data)
+{
+#line 124 "../src/contacts-linking.vala"
+       contacts_persona_attribute_local_id_parent_class = g_type_class_peek_parent (klass);
+#line 124 "../src/contacts-linking.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsPersonaAttributeLocalId_private_offset);
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->is_removable = (gboolean (*) (ContactsPersonaAttribute*, 
FolksPersona*)) contacts_persona_attribute_local_id_real_is_removable;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->to_string = (gchar* (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_local_id_real_to_string;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->is_referenced_by_persona = (gboolean (*) 
(ContactsPersonaAttribute*, FolksPersona*)) contacts_persona_attribute_local_id_real_is_referenced_by_persona;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->persona_apply_attributes = (void (*) 
(ContactsPersonaAttribute*, FolksPersona*, GeeSet*, GeeSet*, ContactsLinkOperation*, GAsyncReadyCallback, 
gpointer)) contacts_persona_attribute_local_id_real_persona_apply_attributes;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->persona_apply_attributes_finish = (void (*) 
(ContactsPersonaAttribute*, GAsyncResult*)) 
contacts_persona_attribute_local_id_persona_apply_attributes_finish;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->set_value = (void (*) (ContactsPersonaAttribute*, 
FolksPersona*, GObject*, GAsyncReadyCallback, gpointer)) contacts_persona_attribute_local_id_real_set_value;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->set_value_finish = (void (*) (ContactsPersonaAttribute*, 
GAsyncResult*)) contacts_persona_attribute_local_id_set_value_finish;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->equal = (gboolean (*) (ContactsPersonaAttribute*, 
ContactsPersonaAttribute*)) contacts_persona_attribute_local_id_real_equal;
+#line 124 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->hash = (guint (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_local_id_real_hash;
+#line 124 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_persona_attribute_local_id_finalize;
+#line 3538 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_instance_init (ContactsPersonaAttributeLocalId * self,
+                                                   gpointer klass)
+{
+#line 124 "../src/contacts-linking.vala"
+       self->priv = contacts_persona_attribute_local_id_get_instance_private (self);
+#line 3547 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_local_id_finalize (GObject * obj)
+{
+       ContactsPersonaAttributeLocalId * self;
+#line 124 "../src/contacts-linking.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_PERSONA_ATTRIBUTE_LOCAL_ID, 
ContactsPersonaAttributeLocalId);
+#line 125 "../src/contacts-linking.vala"
+       _g_free0 (self->priv->value);
+#line 124 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (contacts_persona_attribute_local_id_parent_class)->finalize (obj);
+#line 3560 "contacts-linking.c"
+}
+
+static GType
+contacts_persona_attribute_local_id_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsPersonaAttributeLocalIdClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) 
contacts_persona_attribute_local_id_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof 
(ContactsPersonaAttributeLocalId), 0, (GInstanceInitFunc) contacts_persona_attribute_local_id_instance_init, 
NULL };
+       GType contacts_persona_attribute_local_id_type_id;
+       contacts_persona_attribute_local_id_type_id = g_type_register_static 
(CONTACTS_TYPE_PERSONA_ATTRIBUTE, "ContactsPersonaAttributeLocalId", &g_define_type_info, 0);
+       ContactsPersonaAttributeLocalId_private_offset = g_type_add_instance_private 
(contacts_persona_attribute_local_id_type_id, sizeof (ContactsPersonaAttributeLocalIdPrivate));
+       return contacts_persona_attribute_local_id_type_id;
+}
+
+GType
+contacts_persona_attribute_local_id_get_type (void)
+{
+       static volatile gsize contacts_persona_attribute_local_id_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_persona_attribute_local_id_type_id__volatile)) {
+               GType contacts_persona_attribute_local_id_type_id;
+               contacts_persona_attribute_local_id_type_id = 
contacts_persona_attribute_local_id_get_type_once ();
+               g_once_init_leave (&contacts_persona_attribute_local_id_type_id__volatile, 
contacts_persona_attribute_local_id_type_id);
+       }
+       return contacts_persona_attribute_local_id_type_id__volatile;
+}
+
+static inline gpointer
+contacts_persona_attribute_im_address_get_instance_private (ContactsPersonaAttributeImAddress* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsPersonaAttributeImAddress_private_offset);
+}
+
+ContactsPersonaAttributeImAddress*
+contacts_persona_attribute_im_address_construct (GType object_type,
+                                                 const gchar* protocol,
+                                                 FolksImFieldDetails* detail)
+{
+       ContactsPersonaAttributeImAddress * self = NULL;
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       FolksImFieldDetails* _tmp2_;
+#line 224 "../src/contacts-linking.vala"
+       g_return_val_if_fail (protocol != NULL, NULL);
+#line 224 "../src/contacts-linking.vala"
+       g_return_val_if_fail (detail != NULL, NULL);
+#line 224 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeImAddress*) contacts_persona_attribute_construct (object_type);
+#line 225 "../src/contacts-linking.vala"
+       _tmp0_ = g_strdup ("im-addresses");
+#line 225 "../src/contacts-linking.vala"
+       _g_free0 (((ContactsPersonaAttribute*) self)->property_name);
+#line 225 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttribute*) self)->property_name = _tmp0_;
+#line 226 "../src/contacts-linking.vala"
+       _tmp1_ = g_strdup (protocol);
+#line 226 "../src/contacts-linking.vala"
+       _g_free0 (self->priv->protocol);
+#line 226 "../src/contacts-linking.vala"
+       self->priv->protocol = _tmp1_;
+#line 227 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (detail);
+#line 227 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->detail);
+#line 227 "../src/contacts-linking.vala"
+       self->priv->detail = _tmp2_;
+#line 224 "../src/contacts-linking.vala"
+       return self;
+#line 3626 "contacts-linking.c"
+}
+
+ContactsPersonaAttributeImAddress*
+contacts_persona_attribute_im_address_new (const gchar* protocol,
+                                           FolksImFieldDetails* detail)
+{
+#line 224 "../src/contacts-linking.vala"
+       return contacts_persona_attribute_im_address_construct (CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, 
protocol, detail);
+#line 3635 "contacts-linking.c"
+}
+
+static gchar*
+contacts_persona_attribute_im_address_real_to_string (ContactsPersonaAttribute* base)
+{
+       ContactsPersonaAttributeImAddress * self;
+       const gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       gchar* _tmp4_;
+       FolksImFieldDetails* _tmp5_;
+       gconstpointer _tmp6_;
+       const gchar* _tmp7_;
+       gchar* _tmp8_;
+       gchar* _tmp9_;
+       gchar* result = NULL;
+#line 230 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeImAddress*) base;
+#line 231 "../src/contacts-linking.vala"
+       _tmp0_ = self->priv->protocol;
+#line 231 "../src/contacts-linking.vala"
+       _tmp1_ = g_strconcat ("im_addresses: ", _tmp0_, NULL);
+#line 231 "../src/contacts-linking.vala"
+       _tmp2_ = _tmp1_;
+#line 231 "../src/contacts-linking.vala"
+       _tmp3_ = g_strconcat (_tmp2_, ":", NULL);
+#line 231 "../src/contacts-linking.vala"
+       _tmp4_ = _tmp3_;
+#line 231 "../src/contacts-linking.vala"
+       _tmp5_ = self->priv->detail;
+#line 231 "../src/contacts-linking.vala"
+       _tmp6_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp5_);
+#line 231 "../src/contacts-linking.vala"
+       _tmp7_ = _tmp6_;
+#line 231 "../src/contacts-linking.vala"
+       _tmp8_ = g_strconcat (_tmp4_, (const gchar*) _tmp7_, NULL);
+#line 231 "../src/contacts-linking.vala"
+       _tmp9_ = _tmp8_;
+#line 231 "../src/contacts-linking.vala"
+       _g_free0 (_tmp4_);
+#line 231 "../src/contacts-linking.vala"
+       _g_free0 (_tmp2_);
+#line 231 "../src/contacts-linking.vala"
+       result = _tmp9_;
+#line 231 "../src/contacts-linking.vala"
+       return result;
+#line 3683 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_im_address_real_is_referenced_by_persona (ContactsPersonaAttribute* base,
+                                                                     FolksPersona* persona)
+{
+       ContactsPersonaAttributeImAddress * self;
+       FolksImDetails* details = NULL;
+       FolksImDetails* _tmp0_;
+       FolksImDetails* _tmp1_;
+       FolksImDetails* _tmp2_;
+       GeeMultiMap* _tmp3_;
+       GeeMultiMap* _tmp4_;
+       const gchar* _tmp5_;
+       GeeCollection* _tmp6_;
+       GeeCollection* _tmp7_;
+       FolksImFieldDetails* _tmp8_;
+       gboolean _tmp9_;
+       gboolean result = FALSE;
+#line 234 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeImAddress*) base;
+#line 234 "../src/contacts-linking.vala"
+       g_return_val_if_fail (persona != NULL, FALSE);
+#line 235 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_IM_DETAILS) ? 
((FolksImDetails*) persona) : NULL);
+#line 235 "../src/contacts-linking.vala"
+       details = _tmp0_;
+#line 236 "../src/contacts-linking.vala"
+       _tmp1_ = details;
+#line 236 "../src/contacts-linking.vala"
+       if (_tmp1_ == NULL) {
+#line 237 "../src/contacts-linking.vala"
+               result = FALSE;
+#line 237 "../src/contacts-linking.vala"
+               _g_object_unref0 (details);
+#line 237 "../src/contacts-linking.vala"
+               return result;
+#line 3721 "contacts-linking.c"
+       }
+#line 239 "../src/contacts-linking.vala"
+       _tmp2_ = details;
+#line 239 "../src/contacts-linking.vala"
+       _tmp3_ = folks_im_details_get_im_addresses (_tmp2_);
+#line 239 "../src/contacts-linking.vala"
+       _tmp4_ = _tmp3_;
+#line 239 "../src/contacts-linking.vala"
+       _tmp5_ = self->priv->protocol;
+#line 239 "../src/contacts-linking.vala"
+       _tmp6_ = gee_multi_map_get (_tmp4_, _tmp5_);
+#line 239 "../src/contacts-linking.vala"
+       _tmp7_ = _tmp6_;
+#line 239 "../src/contacts-linking.vala"
+       _tmp8_ = self->priv->detail;
+#line 239 "../src/contacts-linking.vala"
+       _tmp9_ = gee_collection_contains (_tmp7_, _tmp8_);
+#line 239 "../src/contacts-linking.vala"
+       _g_object_unref0 (_tmp7_);
+#line 239 "../src/contacts-linking.vala"
+       result = _tmp9_;
+#line 239 "../src/contacts-linking.vala"
+       _g_object_unref0 (details);
+#line 239 "../src/contacts-linking.vala"
+       return result;
+#line 3747 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_real_persona_apply_attributes_data_free (gpointer _data)
+{
+       ContactsPersonaAttributeImAddressPersonaApplyAttributesData* _data_;
+       _data_ = _data;
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_attributes);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_attributes);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->operation);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 220 "../src/contacts-linking.vala"
+       g_slice_free (ContactsPersonaAttributeImAddressPersonaApplyAttributesData, _data_);
+#line 3767 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_real_persona_apply_attributes (ContactsPersonaAttribute* base,
+                                                                     FolksPersona* persona,
+                                                                     GeeSet* added_attributes,
+                                                                     GeeSet* removed_attributes,
+                                                                     ContactsLinkOperation* operation,
+                                                                     GAsyncReadyCallback _callback_,
+                                                                     gpointer _user_data_)
+{
+       ContactsPersonaAttributeImAddress * self;
+       ContactsPersonaAttributeImAddressPersonaApplyAttributesData* _data_;
+       ContactsPersonaAttributeImAddress* _tmp0_;
+       FolksPersona* _tmp1_;
+       GeeSet* _tmp2_;
+       GeeSet* _tmp3_;
+       ContactsLinkOperation* _tmp4_;
+#line 220 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeImAddress*) base;
+#line 220 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsPersonaAttributeImAddressPersonaApplyAttributesData);
+#line 220 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 220 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_persona_attribute_im_address_real_persona_apply_attributes_data_free);
+#line 220 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 220 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 220 "../src/contacts-linking.vala"
+       _tmp1_ = _g_object_ref0 (persona);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 220 "../src/contacts-linking.vala"
+       _data_->persona = _tmp1_;
+#line 220 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (added_attributes);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_attributes);
+#line 220 "../src/contacts-linking.vala"
+       _data_->added_attributes = _tmp2_;
+#line 220 "../src/contacts-linking.vala"
+       _tmp3_ = _g_object_ref0 (removed_attributes);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_attributes);
+#line 220 "../src/contacts-linking.vala"
+       _data_->removed_attributes = _tmp3_;
+#line 220 "../src/contacts-linking.vala"
+       _tmp4_ = _g_object_ref0 (operation);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->operation);
+#line 220 "../src/contacts-linking.vala"
+       _data_->operation = _tmp4_;
+#line 220 "../src/contacts-linking.vala"
+       contacts_persona_attribute_im_address_real_persona_apply_attributes_co (_data_);
+#line 3824 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_persona_apply_attributes_finish (ContactsPersonaAttribute* base,
+                                                                       GAsyncResult* _res_)
+{
+       ContactsPersonaAttributeImAddressPersonaApplyAttributesData* _data_;
+#line 220 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 3834 "contacts-linking.c"
+}
+
+static guint
+_folks_abstract_field_details_hash_static_gee_hash_data_func (gconstpointer v,
+                                                              gpointer self)
+{
+       guint result;
+       result = folks_abstract_field_details_hash_static ((FolksAbstractFieldDetails*) v);
+#line 250 "../src/contacts-linking.vala"
+       return result;
+#line 3845 "contacts-linking.c"
+}
+
+static gboolean
+_folks_abstract_field_details_equal_static_gee_equal_data_func (gconstpointer a,
+                                                                gconstpointer b,
+                                                                gpointer self)
+{
+       gboolean result;
+       result = folks_abstract_field_details_equal_static ((FolksAbstractFieldDetails*) a, 
(FolksAbstractFieldDetails*) b);
+#line 250 "../src/contacts-linking.vala"
+       return result;
+#line 3857 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_persona_apply_attributes_ready (GObject* source_object,
+                                                                      GAsyncResult* _res_,
+                                                                      gpointer _user_data_)
+{
+       ContactsPersonaAttributeImAddressPersonaApplyAttributesData* _data_;
+#line 292 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 292 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 292 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 292 "../src/contacts-linking.vala"
+       contacts_persona_attribute_im_address_real_persona_apply_attributes_co (_data_);
+#line 3874 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_im_address_real_persona_apply_attributes_co 
(ContactsPersonaAttributeImAddressPersonaApplyAttributesData* _data_)
+{
+#line 242 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 242 "../src/contacts-linking.vala"
+               case 0:
+#line 3884 "contacts-linking.c"
+               goto _state_0;
+#line 242 "../src/contacts-linking.vala"
+               case 1:
+#line 3888 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 242 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 3893 "contacts-linking.c"
+       }
+       _state_0:
+#line 246 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_IM_DETAILS) 
? ((FolksImDetails*) _data_->persona) : NULL);
+#line 246 "../src/contacts-linking.vala"
+       _data_->details = _data_->_tmp0_;
+#line 247 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = _data_->details;
+#line 247 "../src/contacts-linking.vala"
+       if (_data_->_tmp1_ == NULL) {
+#line 248 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 248 "../src/contacts-linking.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 248 "../src/contacts-linking.vala"
+               if (_data_->_state_ != 0) {
+#line 248 "../src/contacts-linking.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 248 "../src/contacts-linking.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 3914 "contacts-linking.c"
+                       }
+               }
+#line 248 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 248 "../src/contacts-linking.vala"
+               return FALSE;
+#line 3921 "contacts-linking.c"
+       }
+#line 250 "../src/contacts-linking.vala"
+       _data_->_tmp2_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, FOLKS_TYPE_IM_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, 
NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, 
_folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
+#line 250 "../src/contacts-linking.vala"
+       _data_->added_values = _data_->_tmp2_;
+#line 3927 "contacts-linking.c"
+       {
+#line 253 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = gee_iterable_iterator ((GeeIterable*) _data_->added_attributes);
+#line 253 "../src/contacts-linking.vala"
+               _data_->_added_it = _data_->_tmp3_;
+#line 253 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 253 "../src/contacts-linking.vala"
+                       _data_->_tmp4_ = _data_->_added_it;
+#line 253 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp4_)) {
+#line 253 "../src/contacts-linking.vala"
+                               break;
+#line 3941 "contacts-linking.c"
+                       }
+#line 253 "../src/contacts-linking.vala"
+                       _data_->_tmp5_ = _data_->_added_it;
+#line 253 "../src/contacts-linking.vala"
+                       _data_->_tmp6_ = gee_iterator_get (_data_->_tmp5_);
+#line 253 "../src/contacts-linking.vala"
+                       _data_->added = (ContactsPersonaAttribute*) _data_->_tmp6_;
+#line 254 "../src/contacts-linking.vala"
+                       _data_->_tmp7_ = _data_->added_values;
+#line 254 "../src/contacts-linking.vala"
+                       _data_->_tmp8_ = _data_->added;
+#line 254 "../src/contacts-linking.vala"
+                       _data_->_tmp9_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp8_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, ContactsPersonaAttributeImAddress)->priv->protocol;
+#line 254 "../src/contacts-linking.vala"
+                       _data_->_tmp10_ = _data_->added;
+#line 254 "../src/contacts-linking.vala"
+                       _data_->_tmp11_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp10_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, ContactsPersonaAttributeImAddress)->priv->detail;
+#line 254 "../src/contacts-linking.vala"
+                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp7_, _data_->_tmp9_, _data_->_tmp11_);
+#line 253 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->added);
+#line 3963 "contacts-linking.c"
+               }
+#line 253 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_added_it);
+#line 3967 "contacts-linking.c"
+       }
+#line 257 "../src/contacts-linking.vala"
+       _data_->_tmp12_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, FOLKS_TYPE_IM_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, 
NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, 
_folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
+#line 257 "../src/contacts-linking.vala"
+       _data_->removed_values = _data_->_tmp12_;
+#line 3973 "contacts-linking.c"
+       {
+#line 261 "../src/contacts-linking.vala"
+               _data_->_tmp13_ = gee_iterable_iterator ((GeeIterable*) _data_->removed_attributes);
+#line 261 "../src/contacts-linking.vala"
+               _data_->_removed_it = _data_->_tmp13_;
+#line 261 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 261 "../src/contacts-linking.vala"
+                       _data_->_tmp14_ = _data_->_removed_it;
+#line 261 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp14_)) {
+#line 261 "../src/contacts-linking.vala"
+                               break;
+#line 3987 "contacts-linking.c"
+                       }
+#line 261 "../src/contacts-linking.vala"
+                       _data_->_tmp15_ = _data_->_removed_it;
+#line 261 "../src/contacts-linking.vala"
+                       _data_->_tmp16_ = gee_iterator_get (_data_->_tmp15_);
+#line 261 "../src/contacts-linking.vala"
+                       _data_->removed = (ContactsPersonaAttribute*) _data_->_tmp16_;
+#line 262 "../src/contacts-linking.vala"
+                       _data_->_tmp17_ = _data_->removed_values;
+#line 262 "../src/contacts-linking.vala"
+                       _data_->_tmp18_ = _data_->removed;
+#line 262 "../src/contacts-linking.vala"
+                       _data_->_tmp19_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp18_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, ContactsPersonaAttributeImAddress)->priv->protocol;
+#line 262 "../src/contacts-linking.vala"
+                       _data_->_tmp20_ = _data_->removed;
+#line 262 "../src/contacts-linking.vala"
+                       _data_->_tmp21_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp20_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, ContactsPersonaAttributeImAddress)->priv->detail;
+#line 262 "../src/contacts-linking.vala"
+                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp17_, _data_->_tmp19_, _data_->_tmp21_);
+#line 261 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->removed);
+#line 4009 "contacts-linking.c"
+               }
+#line 261 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_removed_it);
+#line 4013 "contacts-linking.c"
+       }
+#line 265 "../src/contacts-linking.vala"
+       _data_->_tmp22_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, FOLKS_TYPE_IM_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, 
NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, 
_folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
+#line 265 "../src/contacts-linking.vala"
+       _data_->new_values = _data_->_tmp22_;
+#line 269 "../src/contacts-linking.vala"
+       _data_->changed = FALSE;
+#line 4021 "contacts-linking.c"
+       {
+#line 270 "../src/contacts-linking.vala"
+               _data_->_tmp23_ = _data_->details;
+#line 270 "../src/contacts-linking.vala"
+               _data_->_tmp24_ = folks_im_details_get_im_addresses (_data_->_tmp23_);
+#line 270 "../src/contacts-linking.vala"
+               _data_->_tmp25_ = _data_->_tmp24_;
+#line 270 "../src/contacts-linking.vala"
+               _data_->_tmp26_ = gee_multi_map_get_keys (_data_->_tmp25_);
+#line 270 "../src/contacts-linking.vala"
+               _data_->_tmp27_ = _data_->_tmp26_;
+#line 270 "../src/contacts-linking.vala"
+               _data_->_tmp28_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp27_);
+#line 270 "../src/contacts-linking.vala"
+               _data_->_tmp29_ = _data_->_tmp28_;
+#line 270 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_tmp27_);
+#line 270 "../src/contacts-linking.vala"
+               _data_->_proto1_it = _data_->_tmp29_;
+#line 270 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 270 "../src/contacts-linking.vala"
+                       _data_->_tmp30_ = _data_->_proto1_it;
+#line 270 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp30_)) {
+#line 270 "../src/contacts-linking.vala"
+                               break;
+#line 4049 "contacts-linking.c"
+                       }
+#line 270 "../src/contacts-linking.vala"
+                       _data_->_tmp31_ = _data_->_proto1_it;
+#line 270 "../src/contacts-linking.vala"
+                       _data_->_tmp32_ = gee_iterator_get (_data_->_tmp31_);
+#line 270 "../src/contacts-linking.vala"
+                       _data_->proto1 = (gchar*) _data_->_tmp32_;
+#line 4057 "contacts-linking.c"
+                       {
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp33_ = _data_->details;
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp34_ = folks_im_details_get_im_addresses (_data_->_tmp33_);
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp35_ = _data_->_tmp34_;
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp36_ = _data_->proto1;
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp37_ = gee_multi_map_get (_data_->_tmp35_, _data_->_tmp36_);
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp38_ = _data_->_tmp37_;
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp39_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp38_);
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_tmp40_ = _data_->_tmp39_;
+#line 271 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_tmp38_);
+#line 271 "../src/contacts-linking.vala"
+                               _data_->_detail1_it = _data_->_tmp40_;
+#line 271 "../src/contacts-linking.vala"
+                               while (TRUE) {
+#line 271 "../src/contacts-linking.vala"
+                                       _data_->_tmp41_ = _data_->_detail1_it;
+#line 271 "../src/contacts-linking.vala"
+                                       if (!gee_iterator_next (_data_->_tmp41_)) {
+#line 271 "../src/contacts-linking.vala"
+                                               break;
+#line 4087 "contacts-linking.c"
+                                       }
+#line 271 "../src/contacts-linking.vala"
+                                       _data_->_tmp42_ = _data_->_detail1_it;
+#line 271 "../src/contacts-linking.vala"
+                                       _data_->_tmp43_ = gee_iterator_get (_data_->_tmp42_);
+#line 271 "../src/contacts-linking.vala"
+                                       _data_->detail1 = (FolksImFieldDetails*) _data_->_tmp43_;
+#line 272 "../src/contacts-linking.vala"
+                                       _data_->_tmp44_ = _data_->removed_values;
+#line 272 "../src/contacts-linking.vala"
+                                       _data_->_tmp45_ = _data_->proto1;
+#line 272 "../src/contacts-linking.vala"
+                                       _data_->_tmp46_ = gee_multi_map_get ((GeeMultiMap*) _data_->_tmp44_, 
_data_->_tmp45_);
+#line 272 "../src/contacts-linking.vala"
+                                       _data_->_tmp47_ = _data_->_tmp46_;
+#line 272 "../src/contacts-linking.vala"
+                                       _data_->_tmp48_ = _data_->detail1;
+#line 272 "../src/contacts-linking.vala"
+                                       _data_->_tmp49_ = gee_collection_contains (_data_->_tmp47_, 
_data_->_tmp48_);
+#line 272 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->_tmp47_);
+#line 272 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp49_) {
+#line 273 "../src/contacts-linking.vala"
+                                               _data_->changed = TRUE;
+#line 274 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->detail1);
+#line 274 "../src/contacts-linking.vala"
+                                               continue;
+#line 4117 "contacts-linking.c"
+                                       }
+#line 276 "../src/contacts-linking.vala"
+                                       _data_->_tmp50_ = _data_->new_values;
+#line 276 "../src/contacts-linking.vala"
+                                       _data_->_tmp51_ = _data_->proto1;
+#line 276 "../src/contacts-linking.vala"
+                                       _data_->_tmp52_ = _data_->detail1;
+#line 276 "../src/contacts-linking.vala"
+                                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp50_, _data_->_tmp51_, 
_data_->_tmp52_);
+#line 277 "../src/contacts-linking.vala"
+                                       _data_->_tmp53_ = _data_->added_values;
+#line 277 "../src/contacts-linking.vala"
+                                       _data_->_tmp54_ = _data_->proto1;
+#line 277 "../src/contacts-linking.vala"
+                                       _data_->_tmp55_ = gee_multi_map_get ((GeeMultiMap*) _data_->_tmp53_, 
_data_->_tmp54_);
+#line 277 "../src/contacts-linking.vala"
+                                       _data_->_tmp56_ = _data_->_tmp55_;
+#line 277 "../src/contacts-linking.vala"
+                                       _data_->_tmp57_ = _data_->detail1;
+#line 277 "../src/contacts-linking.vala"
+                                       _data_->_tmp58_ = gee_collection_contains (_data_->_tmp56_, 
_data_->_tmp57_);
+#line 277 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->_tmp56_);
+#line 277 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp58_) {
+#line 278 "../src/contacts-linking.vala"
+                                               _data_->_tmp59_ = _data_->added_values;
+#line 278 "../src/contacts-linking.vala"
+                                               _data_->_tmp60_ = _data_->proto1;
+#line 278 "../src/contacts-linking.vala"
+                                               _data_->_tmp61_ = _data_->detail1;
+#line 278 "../src/contacts-linking.vala"
+                                               gee_multi_map_remove ((GeeMultiMap*) _data_->_tmp59_, 
_data_->_tmp60_, _data_->_tmp61_);
+#line 4151 "contacts-linking.c"
+                                       }
+#line 271 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->detail1);
+#line 4155 "contacts-linking.c"
+                               }
+#line 271 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_detail1_it);
+#line 4159 "contacts-linking.c"
+                       }
+#line 270 "../src/contacts-linking.vala"
+                       _g_free0 (_data_->proto1);
+#line 4163 "contacts-linking.c"
+               }
+#line 270 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_proto1_it);
+#line 4167 "contacts-linking.c"
+       }
+       {
+#line 282 "../src/contacts-linking.vala"
+               _data_->_tmp62_ = _data_->added_values;
+#line 282 "../src/contacts-linking.vala"
+               _data_->_tmp63_ = gee_multi_map_get_keys ((GeeMultiMap*) _data_->_tmp62_);
+#line 282 "../src/contacts-linking.vala"
+               _data_->_tmp64_ = _data_->_tmp63_;
+#line 282 "../src/contacts-linking.vala"
+               _data_->_tmp65_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp64_);
+#line 282 "../src/contacts-linking.vala"
+               _data_->_tmp66_ = _data_->_tmp65_;
+#line 282 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_tmp64_);
+#line 282 "../src/contacts-linking.vala"
+               _data_->_proto2_it = _data_->_tmp66_;
+#line 282 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 282 "../src/contacts-linking.vala"
+                       _data_->_tmp67_ = _data_->_proto2_it;
+#line 282 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp67_)) {
+#line 282 "../src/contacts-linking.vala"
+                               break;
+#line 4192 "contacts-linking.c"
+                       }
+#line 282 "../src/contacts-linking.vala"
+                       _data_->_tmp68_ = _data_->_proto2_it;
+#line 282 "../src/contacts-linking.vala"
+                       _data_->_tmp69_ = gee_iterator_get (_data_->_tmp68_);
+#line 282 "../src/contacts-linking.vala"
+                       _data_->proto2 = (gchar*) _data_->_tmp69_;
+#line 4200 "contacts-linking.c"
+                       {
+#line 283 "../src/contacts-linking.vala"
+                               _data_->_tmp70_ = _data_->added_values;
+#line 283 "../src/contacts-linking.vala"
+                               _data_->_tmp71_ = _data_->proto2;
+#line 283 "../src/contacts-linking.vala"
+                               _data_->_tmp72_ = gee_multi_map_get ((GeeMultiMap*) _data_->_tmp70_, 
_data_->_tmp71_);
+#line 283 "../src/contacts-linking.vala"
+                               _data_->_tmp73_ = _data_->_tmp72_;
+#line 283 "../src/contacts-linking.vala"
+                               _data_->_tmp74_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp73_);
+#line 283 "../src/contacts-linking.vala"
+                               _data_->_tmp75_ = _data_->_tmp74_;
+#line 283 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_tmp73_);
+#line 283 "../src/contacts-linking.vala"
+                               _data_->_detail2_it = _data_->_tmp75_;
+#line 283 "../src/contacts-linking.vala"
+                               while (TRUE) {
+#line 283 "../src/contacts-linking.vala"
+                                       _data_->_tmp76_ = _data_->_detail2_it;
+#line 283 "../src/contacts-linking.vala"
+                                       if (!gee_iterator_next (_data_->_tmp76_)) {
+#line 283 "../src/contacts-linking.vala"
+                                               break;
+#line 4226 "contacts-linking.c"
+                                       }
+#line 283 "../src/contacts-linking.vala"
+                                       _data_->_tmp77_ = _data_->_detail2_it;
+#line 283 "../src/contacts-linking.vala"
+                                       _data_->_tmp78_ = gee_iterator_get (_data_->_tmp77_);
+#line 283 "../src/contacts-linking.vala"
+                                       _data_->detail2 = (FolksImFieldDetails*) _data_->_tmp78_;
+#line 284 "../src/contacts-linking.vala"
+                                       _data_->changed = TRUE;
+#line 285 "../src/contacts-linking.vala"
+                                       _data_->_tmp79_ = _data_->new_values;
+#line 285 "../src/contacts-linking.vala"
+                                       _data_->_tmp80_ = _data_->proto2;
+#line 285 "../src/contacts-linking.vala"
+                                       _data_->_tmp81_ = _data_->detail2;
+#line 285 "../src/contacts-linking.vala"
+                                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp79_, _data_->_tmp80_, 
_data_->_tmp81_);
+#line 283 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->detail2);
+#line 4246 "contacts-linking.c"
+                               }
+#line 283 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_detail2_it);
+#line 4250 "contacts-linking.c"
+                       }
+#line 282 "../src/contacts-linking.vala"
+                       _g_free0 (_data_->proto2);
+#line 4254 "contacts-linking.c"
+               }
+#line 282 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_proto2_it);
+#line 4258 "contacts-linking.c"
+       }
+#line 289 "../src/contacts-linking.vala"
+       if (_data_->changed) {
+#line 4262 "contacts-linking.c"
+               {
+#line 291 "../src/contacts-linking.vala"
+                       _data_->_tmp82_ = _data_->details;
+#line 291 "../src/contacts-linking.vala"
+                       _data_->_tmp83_ = folks_im_details_get_im_addresses (_data_->_tmp82_);
+#line 291 "../src/contacts-linking.vala"
+                       _data_->_tmp84_ = _data_->_tmp83_;
+#line 291 "../src/contacts-linking.vala"
+                       _data_->_tmp85_ = _g_object_ref0 (_data_->_tmp84_);
+#line 291 "../src/contacts-linking.vala"
+                       _data_->old_value = _data_->_tmp85_;
+#line 292 "../src/contacts-linking.vala"
+                       _data_->_tmp86_ = _data_->details;
+#line 292 "../src/contacts-linking.vala"
+                       _data_->_tmp87_ = _data_->new_values;
+#line 292 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 292 "../src/contacts-linking.vala"
+                       folks_im_details_change_im_addresses (_data_->_tmp86_, (GeeMultiMap*) 
_data_->_tmp87_, contacts_persona_attribute_im_address_persona_apply_attributes_ready, _data_);
+#line 292 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 4284 "contacts-linking.c"
+                       _state_1:
+#line 292 "../src/contacts-linking.vala"
+                       folks_im_details_change_im_addresses_finish (_data_->_tmp86_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 292 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 292 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->old_value);
+#line 4292 "contacts-linking.c"
+                               goto __catch17_g_error;
+                       }
+#line 293 "../src/contacts-linking.vala"
+                       _data_->_tmp88_ = _data_->old_value;
+#line 293 "../src/contacts-linking.vala"
+                       contacts_link_operation_add_change (_data_->operation, (ContactsPersonaAttribute*) 
_data_->self, _data_->persona, (GObject*) _data_->_tmp88_);
+#line 290 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->old_value);
+#line 4301 "contacts-linking.c"
+               }
+               goto __finally17;
+               __catch17_g_error:
+               {
+#line 290 "../src/contacts-linking.vala"
+                       _data_->e = _data_->_inner_error0_;
+#line 290 "../src/contacts-linking.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 295 "../src/contacts-linking.vala"
+                       _data_->_tmp89_ = _data_->e;
+#line 295 "../src/contacts-linking.vala"
+                       _data_->_tmp90_ = _data_->_tmp89_->message;
+#line 295 "../src/contacts-linking.vala"
+                       g_warning ("contacts-linking.vala:295: Unable to set im address when linking: %s\n", 
_data_->_tmp90_);
+#line 290 "../src/contacts-linking.vala"
+                       _g_error_free0 (_data_->e);
+#line 4318 "contacts-linking.c"
+               }
+               __finally17:
+#line 290 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 290 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->new_values);
+#line 290 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->removed_values);
+#line 290 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->added_values);
+#line 290 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->details);
+#line 290 "../src/contacts-linking.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 290 "../src/contacts-linking.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 290 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 290 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 4339 "contacts-linking.c"
+               }
+       }
+#line 242 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->new_values);
+#line 242 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_values);
+#line 242 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_values);
+#line 242 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->details);
+#line 242 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 242 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 242 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 242 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 4358 "contacts-linking.c"
+               }
+       }
+#line 242 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 242 "../src/contacts-linking.vala"
+       return FALSE;
+#line 4365 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_real_set_value_data_free (gpointer _data)
+{
+       ContactsPersonaAttributeImAddressSetValueData* _data_;
+       _data_ = _data;
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->value);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 220 "../src/contacts-linking.vala"
+       g_slice_free (ContactsPersonaAttributeImAddressSetValueData, _data_);
+#line 4381 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_real_set_value (ContactsPersonaAttribute* base,
+                                                      FolksPersona* persona,
+                                                      GObject* value,
+                                                      GAsyncReadyCallback _callback_,
+                                                      gpointer _user_data_)
+{
+       ContactsPersonaAttributeImAddress * self;
+       ContactsPersonaAttributeImAddressSetValueData* _data_;
+       ContactsPersonaAttributeImAddress* _tmp0_;
+       FolksPersona* _tmp1_;
+       GObject* _tmp2_;
+#line 220 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeImAddress*) base;
+#line 220 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsPersonaAttributeImAddressSetValueData);
+#line 220 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 220 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_persona_attribute_im_address_real_set_value_data_free);
+#line 220 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 220 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 220 "../src/contacts-linking.vala"
+       _tmp1_ = _g_object_ref0 (persona);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 220 "../src/contacts-linking.vala"
+       _data_->persona = _tmp1_;
+#line 220 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (value);
+#line 220 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->value);
+#line 220 "../src/contacts-linking.vala"
+       _data_->value = _tmp2_;
+#line 220 "../src/contacts-linking.vala"
+       contacts_persona_attribute_im_address_real_set_value_co (_data_);
+#line 4422 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_set_value_finish (ContactsPersonaAttribute* base,
+                                                        GAsyncResult* _res_)
+{
+       ContactsPersonaAttributeImAddressSetValueData* _data_;
+#line 220 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 4432 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_set_value_ready (GObject* source_object,
+                                                       GAsyncResult* _res_,
+                                                       gpointer _user_data_)
+{
+       ContactsPersonaAttributeImAddressSetValueData* _data_;
+#line 307 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 307 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 307 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 307 "../src/contacts-linking.vala"
+       contacts_persona_attribute_im_address_real_set_value_co (_data_);
+#line 4449 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_im_address_real_set_value_co (ContactsPersonaAttributeImAddressSetValueData* 
_data_)
+{
+#line 300 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 300 "../src/contacts-linking.vala"
+               case 0:
+#line 4459 "contacts-linking.c"
+               goto _state_0;
+#line 300 "../src/contacts-linking.vala"
+               case 1:
+#line 4463 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 300 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 4468 "contacts-linking.c"
+       }
+       _state_0:
+#line 301 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, FOLKS_TYPE_IM_DETAILS) 
? ((FolksImDetails*) _data_->persona) : NULL);
+#line 301 "../src/contacts-linking.vala"
+       _data_->details = _data_->_tmp0_;
+#line 302 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = _data_->details;
+#line 302 "../src/contacts-linking.vala"
+       if (_data_->_tmp1_ == NULL) {
+#line 303 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 303 "../src/contacts-linking.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 303 "../src/contacts-linking.vala"
+               if (_data_->_state_ != 0) {
+#line 303 "../src/contacts-linking.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 303 "../src/contacts-linking.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 4489 "contacts-linking.c"
+                       }
+               }
+#line 303 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 303 "../src/contacts-linking.vala"
+               return FALSE;
+#line 4496 "contacts-linking.c"
+       }
+       {
+#line 306 "../src/contacts-linking.vala"
+               _data_->_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->value, 
GEE_TYPE_HASH_MULTI_MAP) ? ((GeeHashMultiMap*) _data_->value) : NULL);
+#line 306 "../src/contacts-linking.vala"
+               _data_->v = _data_->_tmp2_;
+#line 307 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = _data_->details;
+#line 307 "../src/contacts-linking.vala"
+               _data_->_tmp4_ = _data_->v;
+#line 307 "../src/contacts-linking.vala"
+               _data_->_state_ = 1;
+#line 307 "../src/contacts-linking.vala"
+               folks_im_details_change_im_addresses (_data_->_tmp3_, (GeeMultiMap*) _data_->_tmp4_, 
contacts_persona_attribute_im_address_set_value_ready, _data_);
+#line 307 "../src/contacts-linking.vala"
+               return FALSE;
+#line 4513 "contacts-linking.c"
+               _state_1:
+#line 307 "../src/contacts-linking.vala"
+               folks_im_details_change_im_addresses_finish (_data_->_tmp3_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 307 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 307 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->v);
+#line 4521 "contacts-linking.c"
+                       goto __catch18_g_error;
+               }
+#line 305 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->v);
+#line 4526 "contacts-linking.c"
+       }
+       goto __finally18;
+       __catch18_g_error:
+       {
+#line 305 "../src/contacts-linking.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 305 "../src/contacts-linking.vala"
+               _data_->_inner_error0_ = NULL;
+#line 309 "../src/contacts-linking.vala"
+               _data_->_tmp5_ = _data_->e;
+#line 309 "../src/contacts-linking.vala"
+               _data_->_tmp6_ = _data_->_tmp5_->message;
+#line 309 "../src/contacts-linking.vala"
+               g_warning ("contacts-linking.vala:309: Unable to set local ids when undoing link: " \
+"%s\n", _data_->_tmp6_);
+#line 305 "../src/contacts-linking.vala"
+               _g_error_free0 (_data_->e);
+#line 4543 "contacts-linking.c"
+       }
+       __finally18:
+#line 305 "../src/contacts-linking.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 305 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 305 "../src/contacts-linking.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 305 "../src/contacts-linking.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 305 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 305 "../src/contacts-linking.vala"
+               return FALSE;
+#line 4558 "contacts-linking.c"
+       }
+#line 300 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->details);
+#line 300 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 300 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 300 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 300 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 4570 "contacts-linking.c"
+               }
+       }
+#line 300 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 300 "../src/contacts-linking.vala"
+       return FALSE;
+#line 4577 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_im_address_real_equal (ContactsPersonaAttribute* base,
+                                                  ContactsPersonaAttribute* _that)
+{
+       ContactsPersonaAttributeImAddress * self;
+       ContactsPersonaAttributeImAddress* that = NULL;
+       ContactsPersonaAttributeImAddress* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       gboolean _tmp2_ = FALSE;
+       gboolean _tmp3_ = FALSE;
+       ContactsPersonaAttributeImAddress* _tmp4_;
+       gboolean result = FALSE;
+#line 313 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeImAddress*) base;
+#line 313 "../src/contacts-linking.vala"
+       g_return_val_if_fail (_that != NULL, FALSE);
+#line 314 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (CONTACTS_IS_PERSONA_ATTRIBUTE_IM_ADDRESS (_that) ? 
((ContactsPersonaAttributeImAddress*) _that) : NULL);
+#line 314 "../src/contacts-linking.vala"
+       that = _tmp0_;
+#line 316 "../src/contacts-linking.vala"
+       _tmp4_ = that;
+#line 316 "../src/contacts-linking.vala"
+       if (_tmp4_ != NULL) {
+#line 4604 "contacts-linking.c"
+               ContactsPersonaAttributeImAddress* _tmp5_;
+#line 317 "../src/contacts-linking.vala"
+               _tmp5_ = that;
+#line 317 "../src/contacts-linking.vala"
+               _tmp3_ = CONTACTS_PERSONA_ATTRIBUTE_CLASS 
(contacts_persona_attribute_im_address_parent_class)->equal (G_TYPE_CHECK_INSTANCE_CAST (self, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute), (ContactsPersonaAttribute*) _tmp5_);
+#line 4610 "contacts-linking.c"
+       } else {
+#line 316 "../src/contacts-linking.vala"
+               _tmp3_ = FALSE;
+#line 4614 "contacts-linking.c"
+       }
+#line 316 "../src/contacts-linking.vala"
+       if (_tmp3_) {
+#line 4618 "contacts-linking.c"
+               const gchar* _tmp6_;
+               ContactsPersonaAttributeImAddress* _tmp7_;
+               const gchar* _tmp8_;
+#line 318 "../src/contacts-linking.vala"
+               _tmp6_ = self->priv->protocol;
+#line 318 "../src/contacts-linking.vala"
+               _tmp7_ = that;
+#line 318 "../src/contacts-linking.vala"
+               _tmp8_ = _tmp7_->priv->protocol;
+#line 318 "../src/contacts-linking.vala"
+               _tmp2_ = g_strcmp0 (_tmp6_, _tmp8_) == 0;
+#line 4630 "contacts-linking.c"
+       } else {
+#line 316 "../src/contacts-linking.vala"
+               _tmp2_ = FALSE;
+#line 4634 "contacts-linking.c"
+       }
+#line 316 "../src/contacts-linking.vala"
+       if (_tmp2_) {
+#line 4638 "contacts-linking.c"
+               FolksImFieldDetails* _tmp9_;
+               ContactsPersonaAttributeImAddress* _tmp10_;
+               FolksImFieldDetails* _tmp11_;
+#line 319 "../src/contacts-linking.vala"
+               _tmp9_ = self->priv->detail;
+#line 319 "../src/contacts-linking.vala"
+               _tmp10_ = that;
+#line 319 "../src/contacts-linking.vala"
+               _tmp11_ = _tmp10_->priv->detail;
+#line 319 "../src/contacts-linking.vala"
+               _tmp1_ = folks_abstract_field_details_equal ((FolksAbstractFieldDetails*) _tmp9_, 
(FolksAbstractFieldDetails*) _tmp11_);
+#line 4650 "contacts-linking.c"
+       } else {
+#line 316 "../src/contacts-linking.vala"
+               _tmp1_ = FALSE;
+#line 4654 "contacts-linking.c"
+       }
+#line 315 "../src/contacts-linking.vala"
+       result = _tmp1_;
+#line 315 "../src/contacts-linking.vala"
+       _g_object_unref0 (that);
+#line 315 "../src/contacts-linking.vala"
+       return result;
+#line 4662 "contacts-linking.c"
+}
+
+static guint
+contacts_persona_attribute_im_address_real_hash (ContactsPersonaAttribute* base)
+{
+       ContactsPersonaAttributeImAddress * self;
+       const gchar* _tmp0_;
+       FolksImFieldDetails* _tmp1_;
+       guint result = 0U;
+#line 322 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeImAddress*) base;
+#line 323 "../src/contacts-linking.vala"
+       _tmp0_ = self->priv->protocol;
+#line 323 "../src/contacts-linking.vala"
+       _tmp1_ = self->priv->detail;
+#line 323 "../src/contacts-linking.vala"
+       result = (g_str_hash (_tmp0_) ^ folks_abstract_field_details_hash ((FolksAbstractFieldDetails*) 
_tmp1_)) ^ CONTACTS_PERSONA_ATTRIBUTE_CLASS (contacts_persona_attribute_im_address_parent_class)->hash 
(G_TYPE_CHECK_INSTANCE_CAST (self, CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute));
+#line 323 "../src/contacts-linking.vala"
+       return result;
+#line 4682 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_class_init (ContactsPersonaAttributeImAddressClass * klass,
+                                                  gpointer klass_data)
+{
+#line 220 "../src/contacts-linking.vala"
+       contacts_persona_attribute_im_address_parent_class = g_type_class_peek_parent (klass);
+#line 220 "../src/contacts-linking.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsPersonaAttributeImAddress_private_offset);
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->to_string = (gchar* (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_im_address_real_to_string;
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->is_referenced_by_persona = (gboolean (*) 
(ContactsPersonaAttribute*, FolksPersona*)) 
contacts_persona_attribute_im_address_real_is_referenced_by_persona;
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->persona_apply_attributes = (void (*) 
(ContactsPersonaAttribute*, FolksPersona*, GeeSet*, GeeSet*, ContactsLinkOperation*, GAsyncReadyCallback, 
gpointer)) contacts_persona_attribute_im_address_real_persona_apply_attributes;
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->persona_apply_attributes_finish = (void (*) 
(ContactsPersonaAttribute*, GAsyncResult*)) 
contacts_persona_attribute_im_address_persona_apply_attributes_finish;
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->set_value = (void (*) (ContactsPersonaAttribute*, 
FolksPersona*, GObject*, GAsyncReadyCallback, gpointer)) contacts_persona_attribute_im_address_real_set_value;
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->set_value_finish = (void (*) (ContactsPersonaAttribute*, 
GAsyncResult*)) contacts_persona_attribute_im_address_set_value_finish;
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->equal = (gboolean (*) (ContactsPersonaAttribute*, 
ContactsPersonaAttribute*)) contacts_persona_attribute_im_address_real_equal;
+#line 220 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->hash = (guint (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_im_address_real_hash;
+#line 220 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_persona_attribute_im_address_finalize;
+#line 4711 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_instance_init (ContactsPersonaAttributeImAddress * self,
+                                                     gpointer klass)
+{
+#line 220 "../src/contacts-linking.vala"
+       self->priv = contacts_persona_attribute_im_address_get_instance_private (self);
+#line 4720 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_im_address_finalize (GObject * obj)
+{
+       ContactsPersonaAttributeImAddress * self;
+#line 220 "../src/contacts-linking.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_PERSONA_ATTRIBUTE_IM_ADDRESS, 
ContactsPersonaAttributeImAddress);
+#line 221 "../src/contacts-linking.vala"
+       _g_free0 (self->priv->protocol);
+#line 222 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->detail);
+#line 220 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (contacts_persona_attribute_im_address_parent_class)->finalize (obj);
+#line 4735 "contacts-linking.c"
+}
+
+static GType
+contacts_persona_attribute_im_address_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsPersonaAttributeImAddressClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) 
contacts_persona_attribute_im_address_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof 
(ContactsPersonaAttributeImAddress), 0, (GInstanceInitFunc) 
contacts_persona_attribute_im_address_instance_init, NULL };
+       GType contacts_persona_attribute_im_address_type_id;
+       contacts_persona_attribute_im_address_type_id = g_type_register_static 
(CONTACTS_TYPE_PERSONA_ATTRIBUTE, "ContactsPersonaAttributeImAddress", &g_define_type_info, 0);
+       ContactsPersonaAttributeImAddress_private_offset = g_type_add_instance_private 
(contacts_persona_attribute_im_address_type_id, sizeof (ContactsPersonaAttributeImAddressPrivate));
+       return contacts_persona_attribute_im_address_type_id;
+}
+
+GType
+contacts_persona_attribute_im_address_get_type (void)
+{
+       static volatile gsize contacts_persona_attribute_im_address_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_persona_attribute_im_address_type_id__volatile)) {
+               GType contacts_persona_attribute_im_address_type_id;
+               contacts_persona_attribute_im_address_type_id = 
contacts_persona_attribute_im_address_get_type_once ();
+               g_once_init_leave (&contacts_persona_attribute_im_address_type_id__volatile, 
contacts_persona_attribute_im_address_type_id);
+       }
+       return contacts_persona_attribute_im_address_type_id__volatile;
+}
+
+static inline gpointer
+contacts_persona_attribute_web_service_get_instance_private (ContactsPersonaAttributeWebService* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsPersonaAttributeWebService_private_offset);
+}
+
+ContactsPersonaAttributeWebService*
+contacts_persona_attribute_web_service_construct (GType object_type,
+                                                  const gchar* service,
+                                                  FolksWebServiceFieldDetails* detail)
+{
+       ContactsPersonaAttributeWebService * self = NULL;
+       gchar* _tmp0_;
+       gchar* _tmp1_;
+       FolksWebServiceFieldDetails* _tmp2_;
+#line 331 "../src/contacts-linking.vala"
+       g_return_val_if_fail (service != NULL, NULL);
+#line 331 "../src/contacts-linking.vala"
+       g_return_val_if_fail (detail != NULL, NULL);
+#line 331 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeWebService*) contacts_persona_attribute_construct (object_type);
+#line 332 "../src/contacts-linking.vala"
+       _tmp0_ = g_strdup ("web-service-addresses");
+#line 332 "../src/contacts-linking.vala"
+       _g_free0 (((ContactsPersonaAttribute*) self)->property_name);
+#line 332 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttribute*) self)->property_name = _tmp0_;
+#line 333 "../src/contacts-linking.vala"
+       _tmp1_ = g_strdup (service);
+#line 333 "../src/contacts-linking.vala"
+       _g_free0 (self->priv->service);
+#line 333 "../src/contacts-linking.vala"
+       self->priv->service = _tmp1_;
+#line 334 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (detail);
+#line 334 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->detail);
+#line 334 "../src/contacts-linking.vala"
+       self->priv->detail = _tmp2_;
+#line 331 "../src/contacts-linking.vala"
+       return self;
+#line 4801 "contacts-linking.c"
+}
+
+ContactsPersonaAttributeWebService*
+contacts_persona_attribute_web_service_new (const gchar* service,
+                                            FolksWebServiceFieldDetails* detail)
+{
+#line 331 "../src/contacts-linking.vala"
+       return contacts_persona_attribute_web_service_construct (CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, 
service, detail);
+#line 4810 "contacts-linking.c"
+}
+
+static gchar*
+contacts_persona_attribute_web_service_real_to_string (ContactsPersonaAttribute* base)
+{
+       ContactsPersonaAttributeWebService * self;
+       const gchar* _tmp0_;
+       gchar* _tmp1_;
+       gchar* _tmp2_;
+       gchar* _tmp3_;
+       gchar* _tmp4_;
+       FolksWebServiceFieldDetails* _tmp5_;
+       gconstpointer _tmp6_;
+       const gchar* _tmp7_;
+       gchar* _tmp8_;
+       gchar* _tmp9_;
+       gchar* result = NULL;
+#line 337 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeWebService*) base;
+#line 338 "../src/contacts-linking.vala"
+       _tmp0_ = self->priv->service;
+#line 338 "../src/contacts-linking.vala"
+       _tmp1_ = g_strconcat ("web_service_addresses: ", _tmp0_, NULL);
+#line 338 "../src/contacts-linking.vala"
+       _tmp2_ = _tmp1_;
+#line 338 "../src/contacts-linking.vala"
+       _tmp3_ = g_strconcat (_tmp2_, ":", NULL);
+#line 338 "../src/contacts-linking.vala"
+       _tmp4_ = _tmp3_;
+#line 338 "../src/contacts-linking.vala"
+       _tmp5_ = self->priv->detail;
+#line 338 "../src/contacts-linking.vala"
+       _tmp6_ = folks_abstract_field_details_get_value ((FolksAbstractFieldDetails*) _tmp5_);
+#line 338 "../src/contacts-linking.vala"
+       _tmp7_ = _tmp6_;
+#line 338 "../src/contacts-linking.vala"
+       _tmp8_ = g_strconcat (_tmp4_, (const gchar*) _tmp7_, NULL);
+#line 338 "../src/contacts-linking.vala"
+       _tmp9_ = _tmp8_;
+#line 338 "../src/contacts-linking.vala"
+       _g_free0 (_tmp4_);
+#line 338 "../src/contacts-linking.vala"
+       _g_free0 (_tmp2_);
+#line 338 "../src/contacts-linking.vala"
+       result = _tmp9_;
+#line 338 "../src/contacts-linking.vala"
+       return result;
+#line 4858 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_web_service_real_is_referenced_by_persona (ContactsPersonaAttribute* base,
+                                                                      FolksPersona* persona)
+{
+       ContactsPersonaAttributeWebService * self;
+       FolksWebServiceDetails* details = NULL;
+       FolksWebServiceDetails* _tmp0_;
+       FolksWebServiceDetails* _tmp1_;
+       FolksWebServiceDetails* _tmp2_;
+       GeeMultiMap* _tmp3_;
+       GeeMultiMap* _tmp4_;
+       const gchar* _tmp5_;
+       GeeCollection* _tmp6_;
+       GeeCollection* _tmp7_;
+       FolksWebServiceFieldDetails* _tmp8_;
+       gboolean _tmp9_;
+       gboolean result = FALSE;
+#line 341 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeWebService*) base;
+#line 341 "../src/contacts-linking.vala"
+       g_return_val_if_fail (persona != NULL, FALSE);
+#line 342 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_WEB_SERVICE_DETAILS) ? 
((FolksWebServiceDetails*) persona) : NULL);
+#line 342 "../src/contacts-linking.vala"
+       details = _tmp0_;
+#line 343 "../src/contacts-linking.vala"
+       _tmp1_ = details;
+#line 343 "../src/contacts-linking.vala"
+       if (_tmp1_ == NULL) {
+#line 344 "../src/contacts-linking.vala"
+               result = FALSE;
+#line 344 "../src/contacts-linking.vala"
+               _g_object_unref0 (details);
+#line 344 "../src/contacts-linking.vala"
+               return result;
+#line 4896 "contacts-linking.c"
+       }
+#line 346 "../src/contacts-linking.vala"
+       _tmp2_ = details;
+#line 346 "../src/contacts-linking.vala"
+       _tmp3_ = folks_web_service_details_get_web_service_addresses (_tmp2_);
+#line 346 "../src/contacts-linking.vala"
+       _tmp4_ = _tmp3_;
+#line 346 "../src/contacts-linking.vala"
+       _tmp5_ = self->priv->service;
+#line 346 "../src/contacts-linking.vala"
+       _tmp6_ = gee_multi_map_get (_tmp4_, _tmp5_);
+#line 346 "../src/contacts-linking.vala"
+       _tmp7_ = _tmp6_;
+#line 346 "../src/contacts-linking.vala"
+       _tmp8_ = self->priv->detail;
+#line 346 "../src/contacts-linking.vala"
+       _tmp9_ = gee_collection_contains (_tmp7_, _tmp8_);
+#line 346 "../src/contacts-linking.vala"
+       _g_object_unref0 (_tmp7_);
+#line 346 "../src/contacts-linking.vala"
+       result = _tmp9_;
+#line 346 "../src/contacts-linking.vala"
+       _g_object_unref0 (details);
+#line 346 "../src/contacts-linking.vala"
+       return result;
+#line 4922 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_real_persona_apply_attributes_data_free (gpointer _data)
+{
+       ContactsPersonaAttributeWebServicePersonaApplyAttributesData* _data_;
+       _data_ = _data;
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_attributes);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_attributes);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->operation);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 327 "../src/contacts-linking.vala"
+       g_slice_free (ContactsPersonaAttributeWebServicePersonaApplyAttributesData, _data_);
+#line 4942 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_real_persona_apply_attributes (ContactsPersonaAttribute* base,
+                                                                      FolksPersona* persona,
+                                                                      GeeSet* added_attributes,
+                                                                      GeeSet* removed_attributes,
+                                                                      ContactsLinkOperation* operation,
+                                                                      GAsyncReadyCallback _callback_,
+                                                                      gpointer _user_data_)
+{
+       ContactsPersonaAttributeWebService * self;
+       ContactsPersonaAttributeWebServicePersonaApplyAttributesData* _data_;
+       ContactsPersonaAttributeWebService* _tmp0_;
+       FolksPersona* _tmp1_;
+       GeeSet* _tmp2_;
+       GeeSet* _tmp3_;
+       ContactsLinkOperation* _tmp4_;
+#line 327 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeWebService*) base;
+#line 327 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsPersonaAttributeWebServicePersonaApplyAttributesData);
+#line 327 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 327 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_persona_attribute_web_service_real_persona_apply_attributes_data_free);
+#line 327 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 327 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 327 "../src/contacts-linking.vala"
+       _tmp1_ = _g_object_ref0 (persona);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 327 "../src/contacts-linking.vala"
+       _data_->persona = _tmp1_;
+#line 327 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (added_attributes);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_attributes);
+#line 327 "../src/contacts-linking.vala"
+       _data_->added_attributes = _tmp2_;
+#line 327 "../src/contacts-linking.vala"
+       _tmp3_ = _g_object_ref0 (removed_attributes);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_attributes);
+#line 327 "../src/contacts-linking.vala"
+       _data_->removed_attributes = _tmp3_;
+#line 327 "../src/contacts-linking.vala"
+       _tmp4_ = _g_object_ref0 (operation);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->operation);
+#line 327 "../src/contacts-linking.vala"
+       _data_->operation = _tmp4_;
+#line 327 "../src/contacts-linking.vala"
+       contacts_persona_attribute_web_service_real_persona_apply_attributes_co (_data_);
+#line 4999 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_persona_apply_attributes_finish (ContactsPersonaAttribute* base,
+                                                                        GAsyncResult* _res_)
+{
+       ContactsPersonaAttributeWebServicePersonaApplyAttributesData* _data_;
+#line 327 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 5009 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_persona_apply_attributes_ready (GObject* source_object,
+                                                                       GAsyncResult* _res_,
+                                                                       gpointer _user_data_)
+{
+       ContactsPersonaAttributeWebServicePersonaApplyAttributesData* _data_;
+#line 398 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 398 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 398 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 398 "../src/contacts-linking.vala"
+       contacts_persona_attribute_web_service_real_persona_apply_attributes_co (_data_);
+#line 5026 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_web_service_real_persona_apply_attributes_co 
(ContactsPersonaAttributeWebServicePersonaApplyAttributesData* _data_)
+{
+#line 349 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 349 "../src/contacts-linking.vala"
+               case 0:
+#line 5036 "contacts-linking.c"
+               goto _state_0;
+#line 349 "../src/contacts-linking.vala"
+               case 1:
+#line 5040 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 349 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 5045 "contacts-linking.c"
+       }
+       _state_0:
+#line 353 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, 
FOLKS_TYPE_WEB_SERVICE_DETAILS) ? ((FolksWebServiceDetails*) _data_->persona) : NULL);
+#line 353 "../src/contacts-linking.vala"
+       _data_->details = _data_->_tmp0_;
+#line 354 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = _data_->details;
+#line 354 "../src/contacts-linking.vala"
+       if (_data_->_tmp1_ == NULL) {
+#line 355 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 355 "../src/contacts-linking.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 355 "../src/contacts-linking.vala"
+               if (_data_->_state_ != 0) {
+#line 355 "../src/contacts-linking.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 355 "../src/contacts-linking.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 5066 "contacts-linking.c"
+                       }
+               }
+#line 355 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 355 "../src/contacts-linking.vala"
+               return FALSE;
+#line 5073 "contacts-linking.c"
+       }
+#line 357 "../src/contacts-linking.vala"
+       _data_->_tmp2_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, 
NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, 
_folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
+#line 357 "../src/contacts-linking.vala"
+       _data_->added_values = _data_->_tmp2_;
+#line 5079 "contacts-linking.c"
+       {
+#line 360 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = gee_iterable_iterator ((GeeIterable*) _data_->added_attributes);
+#line 360 "../src/contacts-linking.vala"
+               _data_->_added_it = _data_->_tmp3_;
+#line 360 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 360 "../src/contacts-linking.vala"
+                       _data_->_tmp4_ = _data_->_added_it;
+#line 360 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp4_)) {
+#line 360 "../src/contacts-linking.vala"
+                               break;
+#line 5093 "contacts-linking.c"
+                       }
+#line 360 "../src/contacts-linking.vala"
+                       _data_->_tmp5_ = _data_->_added_it;
+#line 360 "../src/contacts-linking.vala"
+                       _data_->_tmp6_ = gee_iterator_get (_data_->_tmp5_);
+#line 360 "../src/contacts-linking.vala"
+                       _data_->added = (ContactsPersonaAttribute*) _data_->_tmp6_;
+#line 361 "../src/contacts-linking.vala"
+                       _data_->_tmp7_ = _data_->added_values;
+#line 361 "../src/contacts-linking.vala"
+                       _data_->_tmp8_ = _data_->added;
+#line 361 "../src/contacts-linking.vala"
+                       _data_->_tmp9_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp8_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, ContactsPersonaAttributeWebService)->priv->service;
+#line 361 "../src/contacts-linking.vala"
+                       _data_->_tmp10_ = _data_->added;
+#line 361 "../src/contacts-linking.vala"
+                       _data_->_tmp11_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp10_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, ContactsPersonaAttributeWebService)->priv->detail;
+#line 361 "../src/contacts-linking.vala"
+                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp7_, _data_->_tmp9_, _data_->_tmp11_);
+#line 360 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->added);
+#line 5115 "contacts-linking.c"
+               }
+#line 360 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_added_it);
+#line 5119 "contacts-linking.c"
+       }
+#line 364 "../src/contacts-linking.vala"
+       _data_->_tmp12_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, 
NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, 
_folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
+#line 364 "../src/contacts-linking.vala"
+       _data_->removed_values = _data_->_tmp12_;
+#line 5125 "contacts-linking.c"
+       {
+#line 367 "../src/contacts-linking.vala"
+               _data_->_tmp13_ = gee_iterable_iterator ((GeeIterable*) _data_->removed_attributes);
+#line 367 "../src/contacts-linking.vala"
+               _data_->_removed_it = _data_->_tmp13_;
+#line 367 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 367 "../src/contacts-linking.vala"
+                       _data_->_tmp14_ = _data_->_removed_it;
+#line 367 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp14_)) {
+#line 367 "../src/contacts-linking.vala"
+                               break;
+#line 5139 "contacts-linking.c"
+                       }
+#line 367 "../src/contacts-linking.vala"
+                       _data_->_tmp15_ = _data_->_removed_it;
+#line 367 "../src/contacts-linking.vala"
+                       _data_->_tmp16_ = gee_iterator_get (_data_->_tmp15_);
+#line 367 "../src/contacts-linking.vala"
+                       _data_->removed = (ContactsPersonaAttribute*) _data_->_tmp16_;
+#line 368 "../src/contacts-linking.vala"
+                       _data_->_tmp17_ = _data_->removed_values;
+#line 368 "../src/contacts-linking.vala"
+                       _data_->_tmp18_ = _data_->removed;
+#line 368 "../src/contacts-linking.vala"
+                       _data_->_tmp19_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp18_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, ContactsPersonaAttributeWebService)->priv->service;
+#line 368 "../src/contacts-linking.vala"
+                       _data_->_tmp20_ = _data_->removed;
+#line 368 "../src/contacts-linking.vala"
+                       _data_->_tmp21_ = G_TYPE_CHECK_INSTANCE_CAST (_data_->_tmp20_, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, ContactsPersonaAttributeWebService)->priv->detail;
+#line 368 "../src/contacts-linking.vala"
+                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp17_, _data_->_tmp19_, _data_->_tmp21_);
+#line 367 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->removed);
+#line 5161 "contacts-linking.c"
+               }
+#line 367 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_removed_it);
+#line 5165 "contacts-linking.c"
+       }
+#line 371 "../src/contacts-linking.vala"
+       _data_->_tmp22_ = gee_hash_multi_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 
g_free, FOLKS_TYPE_WEB_SERVICE_FIELD_DETAILS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, 
NULL, NULL, NULL, NULL, NULL, NULL, _folks_abstract_field_details_hash_static_gee_hash_data_func, NULL, NULL, 
_folks_abstract_field_details_equal_static_gee_equal_data_func, NULL, NULL);
+#line 371 "../src/contacts-linking.vala"
+       _data_->new_values = _data_->_tmp22_;
+#line 375 "../src/contacts-linking.vala"
+       _data_->changed = FALSE;
+#line 5173 "contacts-linking.c"
+       {
+#line 376 "../src/contacts-linking.vala"
+               _data_->_tmp23_ = _data_->details;
+#line 376 "../src/contacts-linking.vala"
+               _data_->_tmp24_ = folks_web_service_details_get_web_service_addresses (_data_->_tmp23_);
+#line 376 "../src/contacts-linking.vala"
+               _data_->_tmp25_ = _data_->_tmp24_;
+#line 376 "../src/contacts-linking.vala"
+               _data_->_tmp26_ = gee_multi_map_get_keys (_data_->_tmp25_);
+#line 376 "../src/contacts-linking.vala"
+               _data_->_tmp27_ = _data_->_tmp26_;
+#line 376 "../src/contacts-linking.vala"
+               _data_->_tmp28_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp27_);
+#line 376 "../src/contacts-linking.vala"
+               _data_->_tmp29_ = _data_->_tmp28_;
+#line 376 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_tmp27_);
+#line 376 "../src/contacts-linking.vala"
+               _data_->_srv1_it = _data_->_tmp29_;
+#line 376 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 376 "../src/contacts-linking.vala"
+                       _data_->_tmp30_ = _data_->_srv1_it;
+#line 376 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp30_)) {
+#line 376 "../src/contacts-linking.vala"
+                               break;
+#line 5201 "contacts-linking.c"
+                       }
+#line 376 "../src/contacts-linking.vala"
+                       _data_->_tmp31_ = _data_->_srv1_it;
+#line 376 "../src/contacts-linking.vala"
+                       _data_->_tmp32_ = gee_iterator_get (_data_->_tmp31_);
+#line 376 "../src/contacts-linking.vala"
+                       _data_->srv1 = (gchar*) _data_->_tmp32_;
+#line 5209 "contacts-linking.c"
+                       {
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp33_ = _data_->details;
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp34_ = folks_web_service_details_get_web_service_addresses 
(_data_->_tmp33_);
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp35_ = _data_->_tmp34_;
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp36_ = _data_->srv1;
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp37_ = gee_multi_map_get (_data_->_tmp35_, _data_->_tmp36_);
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp38_ = _data_->_tmp37_;
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp39_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp38_);
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_tmp40_ = _data_->_tmp39_;
+#line 377 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_tmp38_);
+#line 377 "../src/contacts-linking.vala"
+                               _data_->_detail1_it = _data_->_tmp40_;
+#line 377 "../src/contacts-linking.vala"
+                               while (TRUE) {
+#line 377 "../src/contacts-linking.vala"
+                                       _data_->_tmp41_ = _data_->_detail1_it;
+#line 377 "../src/contacts-linking.vala"
+                                       if (!gee_iterator_next (_data_->_tmp41_)) {
+#line 377 "../src/contacts-linking.vala"
+                                               break;
+#line 5239 "contacts-linking.c"
+                                       }
+#line 377 "../src/contacts-linking.vala"
+                                       _data_->_tmp42_ = _data_->_detail1_it;
+#line 377 "../src/contacts-linking.vala"
+                                       _data_->_tmp43_ = gee_iterator_get (_data_->_tmp42_);
+#line 377 "../src/contacts-linking.vala"
+                                       _data_->detail1 = (FolksWebServiceFieldDetails*) _data_->_tmp43_;
+#line 378 "../src/contacts-linking.vala"
+                                       _data_->_tmp44_ = _data_->removed_values;
+#line 378 "../src/contacts-linking.vala"
+                                       _data_->_tmp45_ = _data_->srv1;
+#line 378 "../src/contacts-linking.vala"
+                                       _data_->_tmp46_ = gee_multi_map_get ((GeeMultiMap*) _data_->_tmp44_, 
_data_->_tmp45_);
+#line 378 "../src/contacts-linking.vala"
+                                       _data_->_tmp47_ = _data_->_tmp46_;
+#line 378 "../src/contacts-linking.vala"
+                                       _data_->_tmp48_ = _data_->detail1;
+#line 378 "../src/contacts-linking.vala"
+                                       _data_->_tmp49_ = gee_collection_contains (_data_->_tmp47_, 
_data_->_tmp48_);
+#line 378 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->_tmp47_);
+#line 378 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp49_) {
+#line 379 "../src/contacts-linking.vala"
+                                               _data_->changed = TRUE;
+#line 380 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->detail1);
+#line 380 "../src/contacts-linking.vala"
+                                               continue;
+#line 5269 "contacts-linking.c"
+                                       }
+#line 382 "../src/contacts-linking.vala"
+                                       _data_->_tmp50_ = _data_->new_values;
+#line 382 "../src/contacts-linking.vala"
+                                       _data_->_tmp51_ = _data_->srv1;
+#line 382 "../src/contacts-linking.vala"
+                                       _data_->_tmp52_ = _data_->detail1;
+#line 382 "../src/contacts-linking.vala"
+                                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp50_, _data_->_tmp51_, 
_data_->_tmp52_);
+#line 383 "../src/contacts-linking.vala"
+                                       _data_->_tmp53_ = _data_->added_values;
+#line 383 "../src/contacts-linking.vala"
+                                       _data_->_tmp54_ = _data_->srv1;
+#line 383 "../src/contacts-linking.vala"
+                                       _data_->_tmp55_ = gee_multi_map_get ((GeeMultiMap*) _data_->_tmp53_, 
_data_->_tmp54_);
+#line 383 "../src/contacts-linking.vala"
+                                       _data_->_tmp56_ = _data_->_tmp55_;
+#line 383 "../src/contacts-linking.vala"
+                                       _data_->_tmp57_ = _data_->detail1;
+#line 383 "../src/contacts-linking.vala"
+                                       _data_->_tmp58_ = gee_collection_contains (_data_->_tmp56_, 
_data_->_tmp57_);
+#line 383 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->_tmp56_);
+#line 383 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp58_) {
+#line 384 "../src/contacts-linking.vala"
+                                               _data_->_tmp59_ = _data_->added_values;
+#line 384 "../src/contacts-linking.vala"
+                                               _data_->_tmp60_ = _data_->srv1;
+#line 384 "../src/contacts-linking.vala"
+                                               _data_->_tmp61_ = _data_->detail1;
+#line 384 "../src/contacts-linking.vala"
+                                               gee_multi_map_remove ((GeeMultiMap*) _data_->_tmp59_, 
_data_->_tmp60_, _data_->_tmp61_);
+#line 5303 "contacts-linking.c"
+                                       }
+#line 377 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->detail1);
+#line 5307 "contacts-linking.c"
+                               }
+#line 377 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_detail1_it);
+#line 5311 "contacts-linking.c"
+                       }
+#line 376 "../src/contacts-linking.vala"
+                       _g_free0 (_data_->srv1);
+#line 5315 "contacts-linking.c"
+               }
+#line 376 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_srv1_it);
+#line 5319 "contacts-linking.c"
+       }
+       {
+#line 388 "../src/contacts-linking.vala"
+               _data_->_tmp62_ = _data_->added_values;
+#line 388 "../src/contacts-linking.vala"
+               _data_->_tmp63_ = gee_multi_map_get_keys ((GeeMultiMap*) _data_->_tmp62_);
+#line 388 "../src/contacts-linking.vala"
+               _data_->_tmp64_ = _data_->_tmp63_;
+#line 388 "../src/contacts-linking.vala"
+               _data_->_tmp65_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp64_);
+#line 388 "../src/contacts-linking.vala"
+               _data_->_tmp66_ = _data_->_tmp65_;
+#line 388 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_tmp64_);
+#line 388 "../src/contacts-linking.vala"
+               _data_->_srv2_it = _data_->_tmp66_;
+#line 388 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 388 "../src/contacts-linking.vala"
+                       _data_->_tmp67_ = _data_->_srv2_it;
+#line 388 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp67_)) {
+#line 388 "../src/contacts-linking.vala"
+                               break;
+#line 5344 "contacts-linking.c"
+                       }
+#line 388 "../src/contacts-linking.vala"
+                       _data_->_tmp68_ = _data_->_srv2_it;
+#line 388 "../src/contacts-linking.vala"
+                       _data_->_tmp69_ = gee_iterator_get (_data_->_tmp68_);
+#line 388 "../src/contacts-linking.vala"
+                       _data_->srv2 = (gchar*) _data_->_tmp69_;
+#line 5352 "contacts-linking.c"
+                       {
+#line 389 "../src/contacts-linking.vala"
+                               _data_->_tmp70_ = _data_->added_values;
+#line 389 "../src/contacts-linking.vala"
+                               _data_->_tmp71_ = _data_->srv2;
+#line 389 "../src/contacts-linking.vala"
+                               _data_->_tmp72_ = gee_multi_map_get ((GeeMultiMap*) _data_->_tmp70_, 
_data_->_tmp71_);
+#line 389 "../src/contacts-linking.vala"
+                               _data_->_tmp73_ = _data_->_tmp72_;
+#line 389 "../src/contacts-linking.vala"
+                               _data_->_tmp74_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp73_);
+#line 389 "../src/contacts-linking.vala"
+                               _data_->_tmp75_ = _data_->_tmp74_;
+#line 389 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_tmp73_);
+#line 389 "../src/contacts-linking.vala"
+                               _data_->_detail2_it = _data_->_tmp75_;
+#line 389 "../src/contacts-linking.vala"
+                               while (TRUE) {
+#line 389 "../src/contacts-linking.vala"
+                                       _data_->_tmp76_ = _data_->_detail2_it;
+#line 389 "../src/contacts-linking.vala"
+                                       if (!gee_iterator_next (_data_->_tmp76_)) {
+#line 389 "../src/contacts-linking.vala"
+                                               break;
+#line 5378 "contacts-linking.c"
+                                       }
+#line 389 "../src/contacts-linking.vala"
+                                       _data_->_tmp77_ = _data_->_detail2_it;
+#line 389 "../src/contacts-linking.vala"
+                                       _data_->_tmp78_ = gee_iterator_get (_data_->_tmp77_);
+#line 389 "../src/contacts-linking.vala"
+                                       _data_->detail2 = (FolksWebServiceFieldDetails*) _data_->_tmp78_;
+#line 390 "../src/contacts-linking.vala"
+                                       _data_->changed = TRUE;
+#line 391 "../src/contacts-linking.vala"
+                                       _data_->_tmp79_ = _data_->new_values;
+#line 391 "../src/contacts-linking.vala"
+                                       _data_->_tmp80_ = _data_->srv2;
+#line 391 "../src/contacts-linking.vala"
+                                       _data_->_tmp81_ = _data_->detail2;
+#line 391 "../src/contacts-linking.vala"
+                                       gee_multi_map_set ((GeeMultiMap*) _data_->_tmp79_, _data_->_tmp80_, 
_data_->_tmp81_);
+#line 389 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->detail2);
+#line 5398 "contacts-linking.c"
+                               }
+#line 389 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_detail2_it);
+#line 5402 "contacts-linking.c"
+                       }
+#line 388 "../src/contacts-linking.vala"
+                       _g_free0 (_data_->srv2);
+#line 5406 "contacts-linking.c"
+               }
+#line 388 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_srv2_it);
+#line 5410 "contacts-linking.c"
+       }
+#line 395 "../src/contacts-linking.vala"
+       if (_data_->changed) {
+#line 5414 "contacts-linking.c"
+               {
+#line 397 "../src/contacts-linking.vala"
+                       _data_->_tmp82_ = _data_->details;
+#line 397 "../src/contacts-linking.vala"
+                       _data_->_tmp83_ = folks_web_service_details_get_web_service_addresses 
(_data_->_tmp82_);
+#line 397 "../src/contacts-linking.vala"
+                       _data_->_tmp84_ = _data_->_tmp83_;
+#line 397 "../src/contacts-linking.vala"
+                       _data_->_tmp85_ = _g_object_ref0 (_data_->_tmp84_);
+#line 397 "../src/contacts-linking.vala"
+                       _data_->old_value = _data_->_tmp85_;
+#line 398 "../src/contacts-linking.vala"
+                       _data_->_tmp86_ = _data_->details;
+#line 398 "../src/contacts-linking.vala"
+                       _data_->_tmp87_ = _data_->new_values;
+#line 398 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 398 "../src/contacts-linking.vala"
+                       folks_web_service_details_change_web_service_addresses (_data_->_tmp86_, 
(GeeMultiMap*) _data_->_tmp87_, contacts_persona_attribute_web_service_persona_apply_attributes_ready, 
_data_);
+#line 398 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 5436 "contacts-linking.c"
+                       _state_1:
+#line 398 "../src/contacts-linking.vala"
+                       folks_web_service_details_change_web_service_addresses_finish (_data_->_tmp86_, 
_data_->_res_, &_data_->_inner_error0_);
+#line 398 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 398 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->old_value);
+#line 5444 "contacts-linking.c"
+                               goto __catch19_g_error;
+                       }
+#line 399 "../src/contacts-linking.vala"
+                       _data_->_tmp88_ = _data_->old_value;
+#line 399 "../src/contacts-linking.vala"
+                       contacts_link_operation_add_change (_data_->operation, (ContactsPersonaAttribute*) 
_data_->self, _data_->persona, (GObject*) _data_->_tmp88_);
+#line 396 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->old_value);
+#line 5453 "contacts-linking.c"
+               }
+               goto __finally19;
+               __catch19_g_error:
+               {
+#line 396 "../src/contacts-linking.vala"
+                       _data_->e = _data_->_inner_error0_;
+#line 396 "../src/contacts-linking.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 401 "../src/contacts-linking.vala"
+                       _data_->_tmp89_ = _data_->e;
+#line 401 "../src/contacts-linking.vala"
+                       _data_->_tmp90_ = _data_->_tmp89_->message;
+#line 401 "../src/contacts-linking.vala"
+                       g_warning ("contacts-linking.vala:401: Unable to set web service when linking: %s\n", 
_data_->_tmp90_);
+#line 396 "../src/contacts-linking.vala"
+                       _g_error_free0 (_data_->e);
+#line 5470 "contacts-linking.c"
+               }
+               __finally19:
+#line 396 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 396 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->new_values);
+#line 396 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->removed_values);
+#line 396 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->added_values);
+#line 396 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->details);
+#line 396 "../src/contacts-linking.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 396 "../src/contacts-linking.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 396 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 396 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 5491 "contacts-linking.c"
+               }
+       }
+#line 349 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->new_values);
+#line 349 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->removed_values);
+#line 349 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->added_values);
+#line 349 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->details);
+#line 349 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 349 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 349 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 349 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 5510 "contacts-linking.c"
+               }
+       }
+#line 349 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 349 "../src/contacts-linking.vala"
+       return FALSE;
+#line 5517 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_real_set_value_data_free (gpointer _data)
+{
+       ContactsPersonaAttributeWebServiceSetValueData* _data_;
+       _data_ = _data;
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->value);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 327 "../src/contacts-linking.vala"
+       g_slice_free (ContactsPersonaAttributeWebServiceSetValueData, _data_);
+#line 5533 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_real_set_value (ContactsPersonaAttribute* base,
+                                                       FolksPersona* persona,
+                                                       GObject* value,
+                                                       GAsyncReadyCallback _callback_,
+                                                       gpointer _user_data_)
+{
+       ContactsPersonaAttributeWebService * self;
+       ContactsPersonaAttributeWebServiceSetValueData* _data_;
+       ContactsPersonaAttributeWebService* _tmp0_;
+       FolksPersona* _tmp1_;
+       GObject* _tmp2_;
+#line 327 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeWebService*) base;
+#line 327 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsPersonaAttributeWebServiceSetValueData);
+#line 327 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 327 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, 
contacts_persona_attribute_web_service_real_set_value_data_free);
+#line 327 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 327 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 327 "../src/contacts-linking.vala"
+       _tmp1_ = _g_object_ref0 (persona);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona);
+#line 327 "../src/contacts-linking.vala"
+       _data_->persona = _tmp1_;
+#line 327 "../src/contacts-linking.vala"
+       _tmp2_ = _g_object_ref0 (value);
+#line 327 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->value);
+#line 327 "../src/contacts-linking.vala"
+       _data_->value = _tmp2_;
+#line 327 "../src/contacts-linking.vala"
+       contacts_persona_attribute_web_service_real_set_value_co (_data_);
+#line 5574 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_set_value_finish (ContactsPersonaAttribute* base,
+                                                         GAsyncResult* _res_)
+{
+       ContactsPersonaAttributeWebServiceSetValueData* _data_;
+#line 327 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 5584 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_set_value_ready (GObject* source_object,
+                                                        GAsyncResult* _res_,
+                                                        gpointer _user_data_)
+{
+       ContactsPersonaAttributeWebServiceSetValueData* _data_;
+#line 413 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 413 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 413 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 413 "../src/contacts-linking.vala"
+       contacts_persona_attribute_web_service_real_set_value_co (_data_);
+#line 5601 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_web_service_real_set_value_co (ContactsPersonaAttributeWebServiceSetValueData* 
_data_)
+{
+#line 406 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 406 "../src/contacts-linking.vala"
+               case 0:
+#line 5611 "contacts-linking.c"
+               goto _state_0;
+#line 406 "../src/contacts-linking.vala"
+               case 1:
+#line 5615 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 406 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 5620 "contacts-linking.c"
+       }
+       _state_0:
+#line 407 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->persona, 
FOLKS_TYPE_WEB_SERVICE_DETAILS) ? ((FolksWebServiceDetails*) _data_->persona) : NULL);
+#line 407 "../src/contacts-linking.vala"
+       _data_->details = _data_->_tmp0_;
+#line 408 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = _data_->details;
+#line 408 "../src/contacts-linking.vala"
+       if (_data_->_tmp1_ == NULL) {
+#line 409 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 409 "../src/contacts-linking.vala"
+               g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 409 "../src/contacts-linking.vala"
+               if (_data_->_state_ != 0) {
+#line 409 "../src/contacts-linking.vala"
+                       while (!g_task_get_completed (_data_->_async_result)) {
+#line 409 "../src/contacts-linking.vala"
+                               g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 5641 "contacts-linking.c"
+                       }
+               }
+#line 409 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 409 "../src/contacts-linking.vala"
+               return FALSE;
+#line 5648 "contacts-linking.c"
+       }
+       {
+#line 412 "../src/contacts-linking.vala"
+               _data_->_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_data_->value, 
GEE_TYPE_HASH_MULTI_MAP) ? ((GeeHashMultiMap*) _data_->value) : NULL);
+#line 412 "../src/contacts-linking.vala"
+               _data_->v = _data_->_tmp2_;
+#line 413 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = _data_->details;
+#line 413 "../src/contacts-linking.vala"
+               _data_->_tmp4_ = _data_->v;
+#line 413 "../src/contacts-linking.vala"
+               _data_->_state_ = 1;
+#line 413 "../src/contacts-linking.vala"
+               folks_web_service_details_change_web_service_addresses (_data_->_tmp3_, (GeeMultiMap*) 
_data_->_tmp4_, contacts_persona_attribute_web_service_set_value_ready, _data_);
+#line 413 "../src/contacts-linking.vala"
+               return FALSE;
+#line 5665 "contacts-linking.c"
+               _state_1:
+#line 413 "../src/contacts-linking.vala"
+               folks_web_service_details_change_web_service_addresses_finish (_data_->_tmp3_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 413 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 413 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->v);
+#line 5673 "contacts-linking.c"
+                       goto __catch20_g_error;
+               }
+#line 411 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->v);
+#line 5678 "contacts-linking.c"
+       }
+       goto __finally20;
+       __catch20_g_error:
+       {
+#line 411 "../src/contacts-linking.vala"
+               _data_->e = _data_->_inner_error0_;
+#line 411 "../src/contacts-linking.vala"
+               _data_->_inner_error0_ = NULL;
+#line 415 "../src/contacts-linking.vala"
+               _data_->_tmp5_ = _data_->e;
+#line 415 "../src/contacts-linking.vala"
+               _data_->_tmp6_ = _data_->_tmp5_->message;
+#line 415 "../src/contacts-linking.vala"
+               g_warning ("contacts-linking.vala:415: Unable to set local ids when undoing link: " \
+"%s\n", _data_->_tmp6_);
+#line 411 "../src/contacts-linking.vala"
+               _g_error_free0 (_data_->e);
+#line 5695 "contacts-linking.c"
+       }
+       __finally20:
+#line 411 "../src/contacts-linking.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 411 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->details);
+#line 411 "../src/contacts-linking.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 411 "../src/contacts-linking.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 411 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 411 "../src/contacts-linking.vala"
+               return FALSE;
+#line 5710 "contacts-linking.c"
+       }
+#line 406 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->details);
+#line 406 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 406 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 406 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 406 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 5722 "contacts-linking.c"
+               }
+       }
+#line 406 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 406 "../src/contacts-linking.vala"
+       return FALSE;
+#line 5729 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_attribute_web_service_real_equal (ContactsPersonaAttribute* base,
+                                                   ContactsPersonaAttribute* _that)
+{
+       ContactsPersonaAttributeWebService * self;
+       ContactsPersonaAttributeWebService* that = NULL;
+       ContactsPersonaAttributeWebService* _tmp0_;
+       gboolean _tmp1_ = FALSE;
+       gboolean _tmp2_ = FALSE;
+       gboolean _tmp3_ = FALSE;
+       ContactsPersonaAttributeWebService* _tmp4_;
+       gboolean result = FALSE;
+#line 419 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeWebService*) base;
+#line 419 "../src/contacts-linking.vala"
+       g_return_val_if_fail (_that != NULL, FALSE);
+#line 420 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (CONTACTS_IS_PERSONA_ATTRIBUTE_WEB_SERVICE (_that) ? 
((ContactsPersonaAttributeWebService*) _that) : NULL);
+#line 420 "../src/contacts-linking.vala"
+       that = _tmp0_;
+#line 422 "../src/contacts-linking.vala"
+       _tmp4_ = that;
+#line 422 "../src/contacts-linking.vala"
+       if (_tmp4_ != NULL) {
+#line 5756 "contacts-linking.c"
+               ContactsPersonaAttributeWebService* _tmp5_;
+#line 423 "../src/contacts-linking.vala"
+               _tmp5_ = that;
+#line 423 "../src/contacts-linking.vala"
+               _tmp3_ = CONTACTS_PERSONA_ATTRIBUTE_CLASS 
(contacts_persona_attribute_web_service_parent_class)->equal (G_TYPE_CHECK_INSTANCE_CAST (self, 
CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute), (ContactsPersonaAttribute*) _tmp5_);
+#line 5762 "contacts-linking.c"
+       } else {
+#line 422 "../src/contacts-linking.vala"
+               _tmp3_ = FALSE;
+#line 5766 "contacts-linking.c"
+       }
+#line 422 "../src/contacts-linking.vala"
+       if (_tmp3_) {
+#line 5770 "contacts-linking.c"
+               const gchar* _tmp6_;
+               ContactsPersonaAttributeWebService* _tmp7_;
+               const gchar* _tmp8_;
+#line 424 "../src/contacts-linking.vala"
+               _tmp6_ = self->priv->service;
+#line 424 "../src/contacts-linking.vala"
+               _tmp7_ = that;
+#line 424 "../src/contacts-linking.vala"
+               _tmp8_ = _tmp7_->priv->service;
+#line 424 "../src/contacts-linking.vala"
+               _tmp2_ = g_strcmp0 (_tmp6_, _tmp8_) == 0;
+#line 5782 "contacts-linking.c"
+       } else {
+#line 422 "../src/contacts-linking.vala"
+               _tmp2_ = FALSE;
+#line 5786 "contacts-linking.c"
+       }
+#line 422 "../src/contacts-linking.vala"
+       if (_tmp2_) {
+#line 5790 "contacts-linking.c"
+               FolksWebServiceFieldDetails* _tmp9_;
+               ContactsPersonaAttributeWebService* _tmp10_;
+               FolksWebServiceFieldDetails* _tmp11_;
+#line 425 "../src/contacts-linking.vala"
+               _tmp9_ = self->priv->detail;
+#line 425 "../src/contacts-linking.vala"
+               _tmp10_ = that;
+#line 425 "../src/contacts-linking.vala"
+               _tmp11_ = _tmp10_->priv->detail;
+#line 425 "../src/contacts-linking.vala"
+               _tmp1_ = folks_abstract_field_details_equal ((FolksAbstractFieldDetails*) _tmp9_, 
(FolksAbstractFieldDetails*) _tmp11_);
+#line 5802 "contacts-linking.c"
+       } else {
+#line 422 "../src/contacts-linking.vala"
+               _tmp1_ = FALSE;
+#line 5806 "contacts-linking.c"
+       }
+#line 421 "../src/contacts-linking.vala"
+       result = _tmp1_;
+#line 421 "../src/contacts-linking.vala"
+       _g_object_unref0 (that);
+#line 421 "../src/contacts-linking.vala"
+       return result;
+#line 5814 "contacts-linking.c"
+}
+
+static guint
+contacts_persona_attribute_web_service_real_hash (ContactsPersonaAttribute* base)
+{
+       ContactsPersonaAttributeWebService * self;
+       const gchar* _tmp0_;
+       FolksWebServiceFieldDetails* _tmp1_;
+       guint result = 0U;
+#line 428 "../src/contacts-linking.vala"
+       self = (ContactsPersonaAttributeWebService*) base;
+#line 429 "../src/contacts-linking.vala"
+       _tmp0_ = self->priv->service;
+#line 429 "../src/contacts-linking.vala"
+       _tmp1_ = self->priv->detail;
+#line 429 "../src/contacts-linking.vala"
+       result = (g_str_hash (_tmp0_) ^ folks_abstract_field_details_hash ((FolksAbstractFieldDetails*) 
_tmp1_)) ^ CONTACTS_PERSONA_ATTRIBUTE_CLASS (contacts_persona_attribute_web_service_parent_class)->hash 
(G_TYPE_CHECK_INSTANCE_CAST (self, CONTACTS_TYPE_PERSONA_ATTRIBUTE, ContactsPersonaAttribute));
+#line 429 "../src/contacts-linking.vala"
+       return result;
+#line 5834 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_class_init (ContactsPersonaAttributeWebServiceClass * klass,
+                                                   gpointer klass_data)
+{
+#line 327 "../src/contacts-linking.vala"
+       contacts_persona_attribute_web_service_parent_class = g_type_class_peek_parent (klass);
+#line 327 "../src/contacts-linking.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsPersonaAttributeWebService_private_offset);
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->to_string = (gchar* (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_web_service_real_to_string;
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->is_referenced_by_persona = (gboolean (*) 
(ContactsPersonaAttribute*, FolksPersona*)) 
contacts_persona_attribute_web_service_real_is_referenced_by_persona;
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->persona_apply_attributes = (void (*) 
(ContactsPersonaAttribute*, FolksPersona*, GeeSet*, GeeSet*, ContactsLinkOperation*, GAsyncReadyCallback, 
gpointer)) contacts_persona_attribute_web_service_real_persona_apply_attributes;
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->persona_apply_attributes_finish = (void (*) 
(ContactsPersonaAttribute*, GAsyncResult*)) 
contacts_persona_attribute_web_service_persona_apply_attributes_finish;
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->set_value = (void (*) (ContactsPersonaAttribute*, 
FolksPersona*, GObject*, GAsyncReadyCallback, gpointer)) 
contacts_persona_attribute_web_service_real_set_value;
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->set_value_finish = (void (*) (ContactsPersonaAttribute*, 
GAsyncResult*)) contacts_persona_attribute_web_service_set_value_finish;
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->equal = (gboolean (*) (ContactsPersonaAttribute*, 
ContactsPersonaAttribute*)) contacts_persona_attribute_web_service_real_equal;
+#line 327 "../src/contacts-linking.vala"
+       ((ContactsPersonaAttributeClass *) klass)->hash = (guint (*) (ContactsPersonaAttribute*)) 
contacts_persona_attribute_web_service_real_hash;
+#line 327 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_persona_attribute_web_service_finalize;
+#line 5863 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_instance_init (ContactsPersonaAttributeWebService * self,
+                                                      gpointer klass)
+{
+#line 327 "../src/contacts-linking.vala"
+       self->priv = contacts_persona_attribute_web_service_get_instance_private (self);
+#line 5872 "contacts-linking.c"
+}
+
+static void
+contacts_persona_attribute_web_service_finalize (GObject * obj)
+{
+       ContactsPersonaAttributeWebService * self;
+#line 327 "../src/contacts-linking.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_PERSONA_ATTRIBUTE_WEB_SERVICE, 
ContactsPersonaAttributeWebService);
+#line 328 "../src/contacts-linking.vala"
+       _g_free0 (self->priv->service);
+#line 329 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->detail);
+#line 327 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (contacts_persona_attribute_web_service_parent_class)->finalize (obj);
+#line 5887 "contacts-linking.c"
+}
+
+static GType
+contacts_persona_attribute_web_service_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsPersonaAttributeWebServiceClass), 
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) 
contacts_persona_attribute_web_service_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof 
(ContactsPersonaAttributeWebService), 0, (GInstanceInitFunc) 
contacts_persona_attribute_web_service_instance_init, NULL };
+       GType contacts_persona_attribute_web_service_type_id;
+       contacts_persona_attribute_web_service_type_id = g_type_register_static 
(CONTACTS_TYPE_PERSONA_ATTRIBUTE, "ContactsPersonaAttributeWebService", &g_define_type_info, 0);
+       ContactsPersonaAttributeWebService_private_offset = g_type_add_instance_private 
(contacts_persona_attribute_web_service_type_id, sizeof (ContactsPersonaAttributeWebServicePrivate));
+       return contacts_persona_attribute_web_service_type_id;
+}
+
+GType
+contacts_persona_attribute_web_service_get_type (void)
+{
+       static volatile gsize contacts_persona_attribute_web_service_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_persona_attribute_web_service_type_id__volatile)) {
+               GType contacts_persona_attribute_web_service_type_id;
+               contacts_persona_attribute_web_service_type_id = 
contacts_persona_attribute_web_service_get_type_once ();
+               g_once_init_leave (&contacts_persona_attribute_web_service_type_id__volatile, 
contacts_persona_attribute_web_service_type_id);
+       }
+       return contacts_persona_attribute_web_service_type_id__volatile;
+}
+
+void
+contacts_add_linkable_attributes (GeeHashSet* set,
+                                  FolksPersona* persona)
+{
+#line 433 "../src/contacts-linking.vala"
+       g_return_if_fail (set != NULL);
+#line 433 "../src/contacts-linking.vala"
+       g_return_if_fail (persona != NULL);
+#line 434 "../src/contacts-linking.vala"
+       if (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_LOCAL_ID_DETAILS)) {
+#line 5922 "contacts-linking.c"
+               {
+                       GeeIterator* _id_it = NULL;
+                       GeeSet* _tmp0_;
+                       GeeSet* _tmp1_;
+                       GeeIterator* _tmp2_;
+#line 435 "../src/contacts-linking.vala"
+                       _tmp0_ = folks_local_id_details_get_local_ids (G_TYPE_CHECK_INSTANCE_CAST (persona, 
FOLKS_TYPE_LOCAL_ID_DETAILS, FolksLocalIdDetails));
+#line 435 "../src/contacts-linking.vala"
+                       _tmp1_ = _tmp0_;
+#line 435 "../src/contacts-linking.vala"
+                       _tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
+#line 435 "../src/contacts-linking.vala"
+                       _id_it = _tmp2_;
+#line 435 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 5938 "contacts-linking.c"
+                               GeeIterator* _tmp3_;
+                               gchar* id = NULL;
+                               GeeIterator* _tmp4_;
+                               gpointer _tmp5_;
+                               const gchar* _tmp6_;
+                               ContactsPersonaAttributeLocalId* _tmp7_;
+                               ContactsPersonaAttributeLocalId* _tmp8_;
+#line 435 "../src/contacts-linking.vala"
+                               _tmp3_ = _id_it;
+#line 435 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_tmp3_)) {
+#line 435 "../src/contacts-linking.vala"
+                                       break;
+#line 5952 "contacts-linking.c"
+                               }
+#line 435 "../src/contacts-linking.vala"
+                               _tmp4_ = _id_it;
+#line 435 "../src/contacts-linking.vala"
+                               _tmp5_ = gee_iterator_get (_tmp4_);
+#line 435 "../src/contacts-linking.vala"
+                               id = (gchar*) _tmp5_;
+#line 436 "../src/contacts-linking.vala"
+                               _tmp6_ = id;
+#line 436 "../src/contacts-linking.vala"
+                               _tmp7_ = contacts_persona_attribute_local_id_new (_tmp6_);
+#line 436 "../src/contacts-linking.vala"
+                               _tmp8_ = _tmp7_;
+#line 436 "../src/contacts-linking.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) set, 
(ContactsPersonaAttribute*) _tmp8_);
+#line 436 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_tmp8_);
+#line 435 "../src/contacts-linking.vala"
+                               _g_free0 (id);
+#line 5972 "contacts-linking.c"
+                       }
+#line 435 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_id_it);
+#line 5976 "contacts-linking.c"
+               }
+       }
+#line 440 "../src/contacts-linking.vala"
+       if (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_IM_DETAILS)) {
+#line 5981 "contacts-linking.c"
+               {
+                       GeeIterator* _proto_it = NULL;
+                       GeeMultiMap* _tmp9_;
+                       GeeMultiMap* _tmp10_;
+                       GeeSet* _tmp11_;
+                       GeeSet* _tmp12_;
+                       GeeIterator* _tmp13_;
+                       GeeIterator* _tmp14_;
+#line 441 "../src/contacts-linking.vala"
+                       _tmp9_ = folks_im_details_get_im_addresses (G_TYPE_CHECK_INSTANCE_CAST (persona, 
FOLKS_TYPE_IM_DETAILS, FolksImDetails));
+#line 441 "../src/contacts-linking.vala"
+                       _tmp10_ = _tmp9_;
+#line 441 "../src/contacts-linking.vala"
+                       _tmp11_ = gee_multi_map_get_keys (_tmp10_);
+#line 441 "../src/contacts-linking.vala"
+                       _tmp12_ = _tmp11_;
+#line 441 "../src/contacts-linking.vala"
+                       _tmp13_ = gee_iterable_iterator ((GeeIterable*) _tmp12_);
+#line 441 "../src/contacts-linking.vala"
+                       _tmp14_ = _tmp13_;
+#line 441 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_tmp12_);
+#line 441 "../src/contacts-linking.vala"
+                       _proto_it = _tmp14_;
+#line 441 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 6008 "contacts-linking.c"
+                               GeeIterator* _tmp15_;
+                               gchar* proto = NULL;
+                               GeeIterator* _tmp16_;
+                               gpointer _tmp17_;
+#line 441 "../src/contacts-linking.vala"
+                               _tmp15_ = _proto_it;
+#line 441 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_tmp15_)) {
+#line 441 "../src/contacts-linking.vala"
+                                       break;
+#line 6019 "contacts-linking.c"
+                               }
+#line 441 "../src/contacts-linking.vala"
+                               _tmp16_ = _proto_it;
+#line 441 "../src/contacts-linking.vala"
+                               _tmp17_ = gee_iterator_get (_tmp16_);
+#line 441 "../src/contacts-linking.vala"
+                               proto = (gchar*) _tmp17_;
+#line 6027 "contacts-linking.c"
+                               {
+                                       GeeIterator* _im_it = NULL;
+                                       GeeMultiMap* _tmp18_;
+                                       GeeMultiMap* _tmp19_;
+                                       const gchar* _tmp20_;
+                                       GeeCollection* _tmp21_;
+                                       GeeCollection* _tmp22_;
+                                       GeeIterator* _tmp23_;
+                                       GeeIterator* _tmp24_;
+#line 442 "../src/contacts-linking.vala"
+                                       _tmp18_ = folks_im_details_get_im_addresses 
(G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_IM_DETAILS, FolksImDetails));
+#line 442 "../src/contacts-linking.vala"
+                                       _tmp19_ = _tmp18_;
+#line 442 "../src/contacts-linking.vala"
+                                       _tmp20_ = proto;
+#line 442 "../src/contacts-linking.vala"
+                                       _tmp21_ = gee_multi_map_get (_tmp19_, _tmp20_);
+#line 442 "../src/contacts-linking.vala"
+                                       _tmp22_ = _tmp21_;
+#line 442 "../src/contacts-linking.vala"
+                                       _tmp23_ = gee_iterable_iterator ((GeeIterable*) _tmp22_);
+#line 442 "../src/contacts-linking.vala"
+                                       _tmp24_ = _tmp23_;
+#line 442 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_tmp22_);
+#line 442 "../src/contacts-linking.vala"
+                                       _im_it = _tmp24_;
+#line 442 "../src/contacts-linking.vala"
+                                       while (TRUE) {
+#line 6057 "contacts-linking.c"
+                                               GeeIterator* _tmp25_;
+                                               FolksImFieldDetails* im = NULL;
+                                               GeeIterator* _tmp26_;
+                                               gpointer _tmp27_;
+                                               const gchar* _tmp28_;
+                                               FolksImFieldDetails* _tmp29_;
+                                               ContactsPersonaAttributeImAddress* _tmp30_;
+                                               ContactsPersonaAttributeImAddress* _tmp31_;
+#line 442 "../src/contacts-linking.vala"
+                                               _tmp25_ = _im_it;
+#line 442 "../src/contacts-linking.vala"
+                                               if (!gee_iterator_next (_tmp25_)) {
+#line 442 "../src/contacts-linking.vala"
+                                                       break;
+#line 6072 "contacts-linking.c"
+                                               }
+#line 442 "../src/contacts-linking.vala"
+                                               _tmp26_ = _im_it;
+#line 442 "../src/contacts-linking.vala"
+                                               _tmp27_ = gee_iterator_get (_tmp26_);
+#line 442 "../src/contacts-linking.vala"
+                                               im = (FolksImFieldDetails*) _tmp27_;
+#line 443 "../src/contacts-linking.vala"
+                                               _tmp28_ = proto;
+#line 443 "../src/contacts-linking.vala"
+                                               _tmp29_ = im;
+#line 443 "../src/contacts-linking.vala"
+                                               _tmp30_ = contacts_persona_attribute_im_address_new (_tmp28_, 
_tmp29_);
+#line 443 "../src/contacts-linking.vala"
+                                               _tmp31_ = _tmp30_;
+#line 443 "../src/contacts-linking.vala"
+                                               gee_abstract_collection_add ((GeeAbstractCollection*) set, 
(ContactsPersonaAttribute*) _tmp31_);
+#line 443 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_tmp31_);
+#line 442 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (im);
+#line 6094 "contacts-linking.c"
+                                       }
+#line 442 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_im_it);
+#line 6098 "contacts-linking.c"
+                               }
+#line 441 "../src/contacts-linking.vala"
+                               _g_free0 (proto);
+#line 6102 "contacts-linking.c"
+                       }
+#line 441 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_proto_it);
+#line 6106 "contacts-linking.c"
+               }
+       }
+#line 448 "../src/contacts-linking.vala"
+       if (G_TYPE_CHECK_INSTANCE_TYPE (persona, FOLKS_TYPE_WEB_SERVICE_DETAILS)) {
+#line 6111 "contacts-linking.c"
+               {
+                       GeeIterator* _srv_it = NULL;
+                       GeeMultiMap* _tmp32_;
+                       GeeMultiMap* _tmp33_;
+                       GeeSet* _tmp34_;
+                       GeeSet* _tmp35_;
+                       GeeIterator* _tmp36_;
+                       GeeIterator* _tmp37_;
+#line 449 "../src/contacts-linking.vala"
+                       _tmp32_ = folks_web_service_details_get_web_service_addresses 
(G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_WEB_SERVICE_DETAILS, FolksWebServiceDetails));
+#line 449 "../src/contacts-linking.vala"
+                       _tmp33_ = _tmp32_;
+#line 449 "../src/contacts-linking.vala"
+                       _tmp34_ = gee_multi_map_get_keys (_tmp33_);
+#line 449 "../src/contacts-linking.vala"
+                       _tmp35_ = _tmp34_;
+#line 449 "../src/contacts-linking.vala"
+                       _tmp36_ = gee_iterable_iterator ((GeeIterable*) _tmp35_);
+#line 449 "../src/contacts-linking.vala"
+                       _tmp37_ = _tmp36_;
+#line 449 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_tmp35_);
+#line 449 "../src/contacts-linking.vala"
+                       _srv_it = _tmp37_;
+#line 449 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 6138 "contacts-linking.c"
+                               GeeIterator* _tmp38_;
+                               gchar* srv = NULL;
+                               GeeIterator* _tmp39_;
+                               gpointer _tmp40_;
+#line 449 "../src/contacts-linking.vala"
+                               _tmp38_ = _srv_it;
+#line 449 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_tmp38_)) {
+#line 449 "../src/contacts-linking.vala"
+                                       break;
+#line 6149 "contacts-linking.c"
+                               }
+#line 449 "../src/contacts-linking.vala"
+                               _tmp39_ = _srv_it;
+#line 449 "../src/contacts-linking.vala"
+                               _tmp40_ = gee_iterator_get (_tmp39_);
+#line 449 "../src/contacts-linking.vala"
+                               srv = (gchar*) _tmp40_;
+#line 6157 "contacts-linking.c"
+                               {
+                                       GeeIterator* _web_it = NULL;
+                                       GeeMultiMap* _tmp41_;
+                                       GeeMultiMap* _tmp42_;
+                                       const gchar* _tmp43_;
+                                       GeeCollection* _tmp44_;
+                                       GeeCollection* _tmp45_;
+                                       GeeIterator* _tmp46_;
+                                       GeeIterator* _tmp47_;
+#line 450 "../src/contacts-linking.vala"
+                                       _tmp41_ = folks_web_service_details_get_web_service_addresses 
(G_TYPE_CHECK_INSTANCE_CAST (persona, FOLKS_TYPE_WEB_SERVICE_DETAILS, FolksWebServiceDetails));
+#line 450 "../src/contacts-linking.vala"
+                                       _tmp42_ = _tmp41_;
+#line 450 "../src/contacts-linking.vala"
+                                       _tmp43_ = srv;
+#line 450 "../src/contacts-linking.vala"
+                                       _tmp44_ = gee_multi_map_get (_tmp42_, _tmp43_);
+#line 450 "../src/contacts-linking.vala"
+                                       _tmp45_ = _tmp44_;
+#line 450 "../src/contacts-linking.vala"
+                                       _tmp46_ = gee_iterable_iterator ((GeeIterable*) _tmp45_);
+#line 450 "../src/contacts-linking.vala"
+                                       _tmp47_ = _tmp46_;
+#line 450 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_tmp45_);
+#line 450 "../src/contacts-linking.vala"
+                                       _web_it = _tmp47_;
+#line 450 "../src/contacts-linking.vala"
+                                       while (TRUE) {
+#line 6187 "contacts-linking.c"
+                                               GeeIterator* _tmp48_;
+                                               FolksWebServiceFieldDetails* web = NULL;
+                                               GeeIterator* _tmp49_;
+                                               gpointer _tmp50_;
+                                               const gchar* _tmp51_;
+                                               FolksWebServiceFieldDetails* _tmp52_;
+                                               ContactsPersonaAttributeWebService* _tmp53_;
+                                               ContactsPersonaAttributeWebService* _tmp54_;
+#line 450 "../src/contacts-linking.vala"
+                                               _tmp48_ = _web_it;
+#line 450 "../src/contacts-linking.vala"
+                                               if (!gee_iterator_next (_tmp48_)) {
+#line 450 "../src/contacts-linking.vala"
+                                                       break;
+#line 6202 "contacts-linking.c"
+                                               }
+#line 450 "../src/contacts-linking.vala"
+                                               _tmp49_ = _web_it;
+#line 450 "../src/contacts-linking.vala"
+                                               _tmp50_ = gee_iterator_get (_tmp49_);
+#line 450 "../src/contacts-linking.vala"
+                                               web = (FolksWebServiceFieldDetails*) _tmp50_;
+#line 451 "../src/contacts-linking.vala"
+                                               _tmp51_ = srv;
+#line 451 "../src/contacts-linking.vala"
+                                               _tmp52_ = web;
+#line 451 "../src/contacts-linking.vala"
+                                               _tmp53_ = contacts_persona_attribute_web_service_new 
(_tmp51_, _tmp52_);
+#line 451 "../src/contacts-linking.vala"
+                                               _tmp54_ = _tmp53_;
+#line 451 "../src/contacts-linking.vala"
+                                               gee_abstract_collection_add ((GeeAbstractCollection*) set, 
(ContactsPersonaAttribute*) _tmp54_);
+#line 451 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_tmp54_);
+#line 450 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (web);
+#line 6224 "contacts-linking.c"
+                                       }
+#line 450 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_web_it);
+#line 6228 "contacts-linking.c"
+                               }
+#line 449 "../src/contacts-linking.vala"
+                               _g_free0 (srv);
+#line 6232 "contacts-linking.c"
+                       }
+#line 449 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_srv_it);
+#line 6236 "contacts-linking.c"
+               }
+       }
+}
+
+GeeSet*
+contacts_get_linkable_attributes (FolksPersona* persona)
+{
+       GeeHashSet* res = NULL;
+       GeeHashSet* _tmp0_;
+       GeeSet* result = NULL;
+#line 457 "../src/contacts-linking.vala"
+       g_return_val_if_fail (persona != NULL, NULL);
+#line 458 "../src/contacts-linking.vala"
+       _tmp0_ = contacts_persona_attribute_create_set ();
+#line 458 "../src/contacts-linking.vala"
+       res = _tmp0_;
+#line 459 "../src/contacts-linking.vala"
+       contacts_add_linkable_attributes (res, persona);
+#line 460 "../src/contacts-linking.vala"
+       result = (GeeSet*) res;
+#line 460 "../src/contacts-linking.vala"
+       return result;
+#line 6259 "contacts-linking.c"
+}
+
+GeeSet*
+contacts_get_linkable_attributes_for_individual (FolksIndividual* individual)
+{
+       GeeHashSet* res = NULL;
+       GeeHashSet* _tmp0_;
+       GeeSet* result = NULL;
+#line 463 "../src/contacts-linking.vala"
+       g_return_val_if_fail (individual != NULL, NULL);
+#line 464 "../src/contacts-linking.vala"
+       _tmp0_ = contacts_persona_attribute_create_set ();
+#line 464 "../src/contacts-linking.vala"
+       res = _tmp0_;
+#line 6274 "contacts-linking.c"
+       {
+               GeeIterator* _persona_it = NULL;
+               GeeSet* _tmp1_;
+               GeeSet* _tmp2_;
+               GeeIterator* _tmp3_;
+#line 465 "../src/contacts-linking.vala"
+               _tmp1_ = folks_individual_get_personas (individual);
+#line 465 "../src/contacts-linking.vala"
+               _tmp2_ = _tmp1_;
+#line 465 "../src/contacts-linking.vala"
+               _tmp3_ = gee_iterable_iterator ((GeeIterable*) _tmp2_);
+#line 465 "../src/contacts-linking.vala"
+               _persona_it = _tmp3_;
+#line 465 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 6290 "contacts-linking.c"
+                       GeeIterator* _tmp4_;
+                       FolksPersona* persona = NULL;
+                       GeeIterator* _tmp5_;
+                       gpointer _tmp6_;
+                       GeeHashSet* _tmp7_;
+                       FolksPersona* _tmp8_;
+#line 465 "../src/contacts-linking.vala"
+                       _tmp4_ = _persona_it;
+#line 465 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_tmp4_)) {
+#line 465 "../src/contacts-linking.vala"
+                               break;
+#line 6303 "contacts-linking.c"
+                       }
+#line 465 "../src/contacts-linking.vala"
+                       _tmp5_ = _persona_it;
+#line 465 "../src/contacts-linking.vala"
+                       _tmp6_ = gee_iterator_get (_tmp5_);
+#line 465 "../src/contacts-linking.vala"
+                       persona = (FolksPersona*) _tmp6_;
+#line 466 "../src/contacts-linking.vala"
+                       _tmp7_ = res;
+#line 466 "../src/contacts-linking.vala"
+                       _tmp8_ = persona;
+#line 466 "../src/contacts-linking.vala"
+                       contacts_add_linkable_attributes (_tmp7_, _tmp8_);
+#line 465 "../src/contacts-linking.vala"
+                       _g_object_unref0 (persona);
+#line 6319 "contacts-linking.c"
+               }
+#line 465 "../src/contacts-linking.vala"
+               _g_object_unref0 (_persona_it);
+#line 6323 "contacts-linking.c"
+       }
+#line 467 "../src/contacts-linking.vala"
+       result = (GeeSet*) res;
+#line 467 "../src/contacts-linking.vala"
+       return result;
+#line 6329 "contacts-linking.c"
+}
+
+gboolean
+contacts_persona_can_link_to (FolksPersona* persona,
+                              GeeSet* attributes)
+{
+       GeeHashSet* property_names = NULL;
+       GeeHashSet* _tmp0_;
+       gboolean result = FALSE;
+#line 470 "../src/contacts-linking.vala"
+       g_return_val_if_fail (persona != NULL, FALSE);
+#line 470 "../src/contacts-linking.vala"
+       g_return_val_if_fail (attributes != NULL, FALSE);
+#line 471 "../src/contacts-linking.vala"
+       _tmp0_ = gee_hash_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, 
NULL, NULL, NULL, NULL, NULL);
+#line 471 "../src/contacts-linking.vala"
+       property_names = _tmp0_;
+#line 6347 "contacts-linking.c"
+       {
+               GeeIterator* _a_it = NULL;
+               GeeIterator* _tmp1_;
+#line 472 "../src/contacts-linking.vala"
+               _tmp1_ = gee_iterable_iterator ((GeeIterable*) attributes);
+#line 472 "../src/contacts-linking.vala"
+               _a_it = _tmp1_;
+#line 472 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 6357 "contacts-linking.c"
+                       GeeIterator* _tmp2_;
+                       ContactsPersonaAttribute* a = NULL;
+                       GeeIterator* _tmp3_;
+                       gpointer _tmp4_;
+                       GeeHashSet* _tmp5_;
+                       ContactsPersonaAttribute* _tmp6_;
+                       const gchar* _tmp7_;
+#line 472 "../src/contacts-linking.vala"
+                       _tmp2_ = _a_it;
+#line 472 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_tmp2_)) {
+#line 472 "../src/contacts-linking.vala"
+                               break;
+#line 6371 "contacts-linking.c"
+                       }
+#line 472 "../src/contacts-linking.vala"
+                       _tmp3_ = _a_it;
+#line 472 "../src/contacts-linking.vala"
+                       _tmp4_ = gee_iterator_get (_tmp3_);
+#line 472 "../src/contacts-linking.vala"
+                       a = (ContactsPersonaAttribute*) _tmp4_;
+#line 473 "../src/contacts-linking.vala"
+                       _tmp5_ = property_names;
+#line 473 "../src/contacts-linking.vala"
+                       _tmp6_ = a;
+#line 473 "../src/contacts-linking.vala"
+                       _tmp7_ = _tmp6_->property_name;
+#line 473 "../src/contacts-linking.vala"
+                       gee_abstract_collection_add ((GeeAbstractCollection*) _tmp5_, _tmp7_);
+#line 472 "../src/contacts-linking.vala"
+                       _g_object_unref0 (a);
+#line 6389 "contacts-linking.c"
+               }
+#line 472 "../src/contacts-linking.vala"
+               _g_object_unref0 (_a_it);
+#line 6393 "contacts-linking.c"
+       }
+       {
+               GeeIterator* _p_it = NULL;
+               GeeHashSet* _tmp8_;
+               GeeIterator* _tmp9_;
+#line 475 "../src/contacts-linking.vala"
+               _tmp8_ = property_names;
+#line 475 "../src/contacts-linking.vala"
+               _tmp9_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) _tmp8_);
+#line 475 "../src/contacts-linking.vala"
+               _p_it = _tmp9_;
+#line 475 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 6407 "contacts-linking.c"
+                       GeeIterator* _tmp10_;
+                       gchar* p = NULL;
+                       GeeIterator* _tmp11_;
+                       gpointer _tmp12_;
+                       const gchar* _tmp13_;
+                       gchar** _tmp14_;
+                       gint _tmp14__length1;
+                       gchar** _tmp15_;
+                       gint _tmp15__length1;
+#line 475 "../src/contacts-linking.vala"
+                       _tmp10_ = _p_it;
+#line 475 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_tmp10_)) {
+#line 475 "../src/contacts-linking.vala"
+                               break;
+#line 6423 "contacts-linking.c"
+                       }
+#line 475 "../src/contacts-linking.vala"
+                       _tmp11_ = _p_it;
+#line 475 "../src/contacts-linking.vala"
+                       _tmp12_ = gee_iterator_get (_tmp11_);
+#line 475 "../src/contacts-linking.vala"
+                       p = (gchar*) _tmp12_;
+#line 476 "../src/contacts-linking.vala"
+                       _tmp13_ = p;
+#line 476 "../src/contacts-linking.vala"
+                       _tmp14_ = folks_persona_get_writeable_properties (persona, &_tmp14__length1);
+#line 476 "../src/contacts-linking.vala"
+                       _tmp15_ = _tmp14_;
+#line 476 "../src/contacts-linking.vala"
+                       _tmp15__length1 = _tmp14__length1;
+#line 476 "../src/contacts-linking.vala"
+                       if (!_vala_string_array_contains (_tmp15_, _tmp15__length1, _tmp13_)) {
+#line 477 "../src/contacts-linking.vala"
+                               result = FALSE;
+#line 477 "../src/contacts-linking.vala"
+                               _g_free0 (p);
+#line 477 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_p_it);
+#line 477 "../src/contacts-linking.vala"
+                               _g_object_unref0 (property_names);
+#line 477 "../src/contacts-linking.vala"
+                               return result;
+#line 6451 "contacts-linking.c"
+                       }
+#line 475 "../src/contacts-linking.vala"
+                       _g_free0 (p);
+#line 6455 "contacts-linking.c"
+               }
+#line 475 "../src/contacts-linking.vala"
+               _g_object_unref0 (_p_it);
+#line 6459 "contacts-linking.c"
+       }
+#line 479 "../src/contacts-linking.vala"
+       result = TRUE;
+#line 479 "../src/contacts-linking.vala"
+       _g_object_unref0 (property_names);
+#line 479 "../src/contacts-linking.vala"
+       return result;
+#line 6467 "contacts-linking.c"
+}
+
+gboolean
+contacts_attr_type_equal (ContactsPersonaAttribute* a,
+                          ContactsPersonaAttribute* b)
+{
+       gboolean _tmp0_ = FALSE;
+       gboolean result = FALSE;
+#line 482 "../src/contacts-linking.vala"
+       g_return_val_if_fail (a != NULL, FALSE);
+#line 482 "../src/contacts-linking.vala"
+       g_return_val_if_fail (b != NULL, FALSE);
+#line 484 "../src/contacts-linking.vala"
+       if (G_TYPE_FROM_INSTANCE ((GObject*) a) == G_TYPE_FROM_INSTANCE ((GObject*) b)) {
+#line 6482 "contacts-linking.c"
+               const gchar* _tmp1_;
+               const gchar* _tmp2_;
+#line 485 "../src/contacts-linking.vala"
+               _tmp1_ = a->property_name;
+#line 485 "../src/contacts-linking.vala"
+               _tmp2_ = b->property_name;
+#line 485 "../src/contacts-linking.vala"
+               _tmp0_ = g_strcmp0 (_tmp1_, _tmp2_) == 0;
+#line 6491 "contacts-linking.c"
+       } else {
+#line 484 "../src/contacts-linking.vala"
+               _tmp0_ = FALSE;
+#line 6495 "contacts-linking.c"
+       }
+#line 483 "../src/contacts-linking.vala"
+       result = _tmp0_;
+#line 483 "../src/contacts-linking.vala"
+       return result;
+#line 6501 "contacts-linking.c"
+}
+
+static void
+contacts_persona_apply_attributes_data_free (gpointer _data)
+{
+       ContactsPersonaApplyAttributesData* _data_;
+       _data_ = _data;
+       _g_object_unref0 (_data_->persona);
+       _g_object_unref0 (_data_->added_attributes);
+       _g_object_unref0 (_data_->removed_attributes);
+       _g_object_unref0 (_data_->operation);
+       g_slice_free (ContactsPersonaApplyAttributesData, _data_);
+}
+
+void
+contacts_persona_apply_attributes (FolksPersona* persona,
+                                   GeeSet* added_attributes,
+                                   GeeSet* removed_attributes,
+                                   ContactsLinkOperation* operation,
+                                   GAsyncReadyCallback _callback_,
+                                   gpointer _user_data_)
+{
+       ContactsPersonaApplyAttributesData* _data_;
+       FolksPersona* _tmp0_;
+       GeeSet* _tmp1_;
+       GeeSet* _tmp2_;
+       ContactsLinkOperation* _tmp3_;
+       _data_ = g_slice_new0 (ContactsPersonaApplyAttributesData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_persona_apply_attributes_data_free);
+       _tmp0_ = _g_object_ref0 (persona);
+       _g_object_unref0 (_data_->persona);
+       _data_->persona = _tmp0_;
+       _tmp1_ = _g_object_ref0 (added_attributes);
+       _g_object_unref0 (_data_->added_attributes);
+       _data_->added_attributes = _tmp1_;
+       _tmp2_ = _g_object_ref0 (removed_attributes);
+       _g_object_unref0 (_data_->removed_attributes);
+       _data_->removed_attributes = _tmp2_;
+       _tmp3_ = _g_object_ref0 (operation);
+       _g_object_unref0 (_data_->operation);
+       _data_->operation = _tmp3_;
+       contacts_persona_apply_attributes_co (_data_);
+}
+
+void
+contacts_persona_apply_attributes_finish (GAsyncResult* _res_)
+{
+       ContactsPersonaApplyAttributesData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+}
+
+static void
+contacts_persona_apply_attributes_ready (GObject* source_object,
+                                         GAsyncResult* _res_,
+                                         gpointer _user_data_)
+{
+       ContactsPersonaApplyAttributesData* _data_;
+#line 520 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 520 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 520 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 520 "../src/contacts-linking.vala"
+       contacts_persona_apply_attributes_co (_data_);
+#line 6568 "contacts-linking.c"
+}
+
+static gboolean
+contacts_persona_apply_attributes_co (ContactsPersonaApplyAttributesData* _data_)
+{
+#line 488 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 488 "../src/contacts-linking.vala"
+               case 0:
+#line 6578 "contacts-linking.c"
+               goto _state_0;
+#line 488 "../src/contacts-linking.vala"
+               case 1:
+#line 6582 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 488 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 6587 "contacts-linking.c"
+       }
+       _state_0:
+#line 492 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = gee_hash_set_new (CONTACTS_TYPE_PERSONA_ATTRIBUTE, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 492 "../src/contacts-linking.vala"
+       _data_->properties = _data_->_tmp0_;
+#line 494 "../src/contacts-linking.vala"
+       if (_data_->added_attributes != NULL) {
+#line 6596 "contacts-linking.c"
+               {
+#line 495 "../src/contacts-linking.vala"
+                       _data_->_tmp1_ = gee_iterable_iterator ((GeeIterable*) _data_->added_attributes);
+#line 495 "../src/contacts-linking.vala"
+                       _data_->_a1_it = _data_->_tmp1_;
+#line 495 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 495 "../src/contacts-linking.vala"
+                               _data_->_tmp2_ = _data_->_a1_it;
+#line 495 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_data_->_tmp2_)) {
+#line 495 "../src/contacts-linking.vala"
+                                       break;
+#line 6610 "contacts-linking.c"
+                               }
+#line 495 "../src/contacts-linking.vala"
+                               _data_->_tmp3_ = _data_->_a1_it;
+#line 495 "../src/contacts-linking.vala"
+                               _data_->_tmp4_ = gee_iterator_get (_data_->_tmp3_);
+#line 495 "../src/contacts-linking.vala"
+                               _data_->a1 = (ContactsPersonaAttribute*) _data_->_tmp4_;
+#line 496 "../src/contacts-linking.vala"
+                               _data_->_tmp5_ = _data_->properties;
+#line 496 "../src/contacts-linking.vala"
+                               _data_->_tmp6_ = _data_->a1;
+#line 496 "../src/contacts-linking.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp5_, 
_data_->_tmp6_);
+#line 495 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->a1);
+#line 6626 "contacts-linking.c"
+                       }
+#line 495 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_a1_it);
+#line 6630 "contacts-linking.c"
+               }
+       }
+#line 499 "../src/contacts-linking.vala"
+       if (_data_->removed_attributes != NULL) {
+#line 6635 "contacts-linking.c"
+               {
+#line 500 "../src/contacts-linking.vala"
+                       _data_->_tmp7_ = gee_iterable_iterator ((GeeIterable*) _data_->removed_attributes);
+#line 500 "../src/contacts-linking.vala"
+                       _data_->_a2_it = _data_->_tmp7_;
+#line 500 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 500 "../src/contacts-linking.vala"
+                               _data_->_tmp8_ = _data_->_a2_it;
+#line 500 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_data_->_tmp8_)) {
+#line 500 "../src/contacts-linking.vala"
+                                       break;
+#line 6649 "contacts-linking.c"
+                               }
+#line 500 "../src/contacts-linking.vala"
+                               _data_->_tmp9_ = _data_->_a2_it;
+#line 500 "../src/contacts-linking.vala"
+                               _data_->_tmp10_ = gee_iterator_get (_data_->_tmp9_);
+#line 500 "../src/contacts-linking.vala"
+                               _data_->a2 = (ContactsPersonaAttribute*) _data_->_tmp10_;
+#line 501 "../src/contacts-linking.vala"
+                               _data_->_tmp11_ = _data_->properties;
+#line 501 "../src/contacts-linking.vala"
+                               _data_->_tmp12_ = _data_->a2;
+#line 501 "../src/contacts-linking.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp11_, 
_data_->_tmp12_);
+#line 500 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->a2);
+#line 6665 "contacts-linking.c"
+                       }
+#line 500 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_a2_it);
+#line 6669 "contacts-linking.c"
+               }
+       }
+       {
+#line 505 "../src/contacts-linking.vala"
+               _data_->_tmp13_ = _data_->properties;
+#line 505 "../src/contacts-linking.vala"
+               _data_->_tmp14_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) _data_->_tmp13_);
+#line 505 "../src/contacts-linking.vala"
+               _data_->_property_it = _data_->_tmp14_;
+#line 505 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 505 "../src/contacts-linking.vala"
+                       _data_->_tmp15_ = _data_->_property_it;
+#line 505 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp15_)) {
+#line 505 "../src/contacts-linking.vala"
+                               break;
+#line 6687 "contacts-linking.c"
+                       }
+#line 505 "../src/contacts-linking.vala"
+                       _data_->_tmp16_ = _data_->_property_it;
+#line 505 "../src/contacts-linking.vala"
+                       _data_->_tmp17_ = gee_iterator_get (_data_->_tmp16_);
+#line 505 "../src/contacts-linking.vala"
+                       _data_->property = (ContactsPersonaAttribute*) _data_->_tmp17_;
+#line 506 "../src/contacts-linking.vala"
+                       _data_->_tmp18_ = contacts_persona_attribute_create_set ();
+#line 506 "../src/contacts-linking.vala"
+                       _data_->added = _data_->_tmp18_;
+#line 507 "../src/contacts-linking.vala"
+                       _data_->_tmp19_ = contacts_persona_attribute_create_set ();
+#line 507 "../src/contacts-linking.vala"
+                       _data_->removed = _data_->_tmp19_;
+#line 508 "../src/contacts-linking.vala"
+                       if (_data_->added_attributes != NULL) {
+#line 6705 "contacts-linking.c"
+                               {
+#line 509 "../src/contacts-linking.vala"
+                                       _data_->_tmp20_ = gee_iterable_iterator ((GeeIterable*) 
_data_->added_attributes);
+#line 509 "../src/contacts-linking.vala"
+                                       _data_->_a3_it = _data_->_tmp20_;
+#line 509 "../src/contacts-linking.vala"
+                                       while (TRUE) {
+#line 509 "../src/contacts-linking.vala"
+                                               _data_->_tmp21_ = _data_->_a3_it;
+#line 509 "../src/contacts-linking.vala"
+                                               if (!gee_iterator_next (_data_->_tmp21_)) {
+#line 509 "../src/contacts-linking.vala"
+                                                       break;
+#line 6719 "contacts-linking.c"
+                                               }
+#line 509 "../src/contacts-linking.vala"
+                                               _data_->_tmp22_ = _data_->_a3_it;
+#line 509 "../src/contacts-linking.vala"
+                                               _data_->_tmp23_ = gee_iterator_get (_data_->_tmp22_);
+#line 509 "../src/contacts-linking.vala"
+                                               _data_->a3 = (ContactsPersonaAttribute*) _data_->_tmp23_;
+#line 510 "../src/contacts-linking.vala"
+                                               _data_->_tmp24_ = _data_->a3;
+#line 510 "../src/contacts-linking.vala"
+                                               _data_->_tmp25_ = _data_->property;
+#line 510 "../src/contacts-linking.vala"
+                                               if (contacts_attr_type_equal (_data_->_tmp24_, 
_data_->_tmp25_)) {
+#line 511 "../src/contacts-linking.vala"
+                                                       _data_->_tmp26_ = _data_->added;
+#line 511 "../src/contacts-linking.vala"
+                                                       _data_->_tmp27_ = _data_->a3;
+#line 511 "../src/contacts-linking.vala"
+                                                       gee_abstract_collection_add ((GeeAbstractCollection*) 
_data_->_tmp26_, _data_->_tmp27_);
+#line 6739 "contacts-linking.c"
+                                               }
+#line 509 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->a3);
+#line 6743 "contacts-linking.c"
+                                       }
+#line 509 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->_a3_it);
+#line 6747 "contacts-linking.c"
+                               }
+                       }
+#line 514 "../src/contacts-linking.vala"
+                       if (_data_->removed_attributes != NULL) {
+#line 6752 "contacts-linking.c"
+                               {
+#line 515 "../src/contacts-linking.vala"
+                                       _data_->_tmp28_ = gee_iterable_iterator ((GeeIterable*) 
_data_->removed_attributes);
+#line 515 "../src/contacts-linking.vala"
+                                       _data_->_a4_it = _data_->_tmp28_;
+#line 515 "../src/contacts-linking.vala"
+                                       while (TRUE) {
+#line 515 "../src/contacts-linking.vala"
+                                               _data_->_tmp29_ = _data_->_a4_it;
+#line 515 "../src/contacts-linking.vala"
+                                               if (!gee_iterator_next (_data_->_tmp29_)) {
+#line 515 "../src/contacts-linking.vala"
+                                                       break;
+#line 6766 "contacts-linking.c"
+                                               }
+#line 515 "../src/contacts-linking.vala"
+                                               _data_->_tmp30_ = _data_->_a4_it;
+#line 515 "../src/contacts-linking.vala"
+                                               _data_->_tmp31_ = gee_iterator_get (_data_->_tmp30_);
+#line 515 "../src/contacts-linking.vala"
+                                               _data_->a4 = (ContactsPersonaAttribute*) _data_->_tmp31_;
+#line 516 "../src/contacts-linking.vala"
+                                               _data_->_tmp32_ = _data_->a4;
+#line 516 "../src/contacts-linking.vala"
+                                               _data_->_tmp33_ = _data_->property;
+#line 516 "../src/contacts-linking.vala"
+                                               if (contacts_attr_type_equal (_data_->_tmp32_, 
_data_->_tmp33_)) {
+#line 517 "../src/contacts-linking.vala"
+                                                       _data_->_tmp34_ = _data_->removed;
+#line 517 "../src/contacts-linking.vala"
+                                                       _data_->_tmp35_ = _data_->a4;
+#line 517 "../src/contacts-linking.vala"
+                                                       gee_abstract_collection_add ((GeeAbstractCollection*) 
_data_->_tmp34_, _data_->_tmp35_);
+#line 6786 "contacts-linking.c"
+                                               }
+#line 515 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->a4);
+#line 6790 "contacts-linking.c"
+                                       }
+#line 515 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->_a4_it);
+#line 6794 "contacts-linking.c"
+                               }
+                       }
+#line 520 "../src/contacts-linking.vala"
+                       _data_->_tmp36_ = _data_->property;
+#line 520 "../src/contacts-linking.vala"
+                       _data_->_tmp37_ = _data_->added;
+#line 520 "../src/contacts-linking.vala"
+                       _data_->_tmp38_ = _data_->removed;
+#line 520 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 520 "../src/contacts-linking.vala"
+                       contacts_persona_attribute_persona_apply_attributes (_data_->_tmp36_, 
_data_->persona, (GeeSet*) _data_->_tmp37_, (GeeSet*) _data_->_tmp38_, _data_->operation, 
contacts_persona_apply_attributes_ready, _data_);
+#line 520 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 6809 "contacts-linking.c"
+                       _state_1:
+#line 520 "../src/contacts-linking.vala"
+                       contacts_persona_attribute_persona_apply_attributes_finish (_data_->_tmp36_, 
_data_->_res_);
+#line 505 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->removed);
+#line 505 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->added);
+#line 505 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->property);
+#line 6819 "contacts-linking.c"
+               }
+#line 505 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_property_it);
+#line 6823 "contacts-linking.c"
+       }
+#line 488 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->properties);
+#line 488 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 488 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 488 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 488 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 6835 "contacts-linking.c"
+               }
+       }
+#line 488 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 488 "../src/contacts-linking.vala"
+       return FALSE;
+#line 6842 "contacts-linking.c"
+}
+
+static void
+contacts_link_contacts_data_free (gpointer _data)
+{
+       ContactsLinkContactsData* _data_;
+       _data_ = _data;
+       _g_object_unref0 (_data_->main);
+       _g_object_unref0 (_data_->other);
+       _g_object_unref0 (_data_->contacts_store);
+       _g_object_unref0 (_data_->result);
+       g_slice_free (ContactsLinkContactsData, _data_);
+}
+
+void
+contacts_link_contacts (FolksIndividual* main,
+                        FolksIndividual* other,
+                        ContactsStore* contacts_store,
+                        GAsyncReadyCallback _callback_,
+                        gpointer _user_data_)
+{
+       ContactsLinkContactsData* _data_;
+       FolksIndividual* _tmp0_;
+       FolksIndividual* _tmp1_;
+       ContactsStore* _tmp2_;
+       _data_ = g_slice_new0 (ContactsLinkContactsData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_link_contacts_data_free);
+       _tmp0_ = _g_object_ref0 (main);
+       _g_object_unref0 (_data_->main);
+       _data_->main = _tmp0_;
+       _tmp1_ = _g_object_ref0 (other);
+       _g_object_unref0 (_data_->other);
+       _data_->other = _tmp1_;
+       _tmp2_ = _g_object_ref0 (contacts_store);
+       _g_object_unref0 (_data_->contacts_store);
+       _data_->contacts_store = _tmp2_;
+       contacts_link_contacts_co (_data_);
+}
+
+ContactsLinkOperation*
+contacts_link_contacts_finish (GAsyncResult* _res_)
+{
+       ContactsLinkOperation* result;
+       ContactsLinkContactsData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+       result = _data_->result;
+       _data_->result = NULL;
+       return result;
+}
+
+static void
+_g_free0_ (gpointer var)
+{
+#line 571 "../src/contacts-linking.vala"
+       var = (g_free (var), NULL);
+#line 6899 "contacts-linking.c"
+}
+
+static void
+_vala_GValue_free (GValue* self)
+{
+#line 571 "../src/contacts-linking.vala"
+       g_value_unset (self);
+#line 571 "../src/contacts-linking.vala"
+       g_free (self);
+#line 6909 "contacts-linking.c"
+}
+
+static void
+__vala_GValue_free0_ (gpointer var)
+{
+#line 571 "../src/contacts-linking.vala"
+       (var == NULL) ? NULL : (var = (_vala_GValue_free (var), NULL));
+#line 6917 "contacts-linking.c"
+}
+
+static GValue*
+_g_value_dup (GValue* self)
+{
+#line 575 "../src/contacts-linking.vala"
+       return g_boxed_copy (G_TYPE_VALUE, self);
+#line 6925 "contacts-linking.c"
+}
+
+static gpointer
+__g_value_dup0 (gpointer self)
+{
+#line 575 "../src/contacts-linking.vala"
+       return self ? _g_value_dup (self) : NULL;
+#line 6933 "contacts-linking.c"
+}
+
+static void
+contacts_link_contacts_ready (GObject* source_object,
+                              GAsyncResult* _res_,
+                              gpointer _user_data_)
+{
+       ContactsLinkContactsData* _data_;
+#line 576 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 576 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 576 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 576 "../src/contacts-linking.vala"
+       contacts_link_contacts_co (_data_);
+#line 6950 "contacts-linking.c"
+}
+
+static gboolean
+contacts_link_contacts_co (ContactsLinkContactsData* _data_)
+{
+#line 524 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 524 "../src/contacts-linking.vala"
+               case 0:
+#line 6960 "contacts-linking.c"
+               goto _state_0;
+#line 524 "../src/contacts-linking.vala"
+               case 1:
+#line 6964 "contacts-linking.c"
+               goto _state_1;
+#line 524 "../src/contacts-linking.vala"
+               case 2:
+#line 6968 "contacts-linking.c"
+               goto _state_2;
+               default:
+#line 524 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 6973 "contacts-linking.c"
+       }
+       _state_0:
+#line 527 "../src/contacts-linking.vala"
+       g_object_set_data_full ((GObject*) _data_->main, "contacts-master-at-join", (gpointer) ((gintptr) 
TRUE), NULL);
+#line 529 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = contacts_link_operation_new ();
+#line 529 "../src/contacts-linking.vala"
+       _data_->operation = _data_->_tmp0_;
+#line 530 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = _data_->operation;
+#line 530 "../src/contacts-linking.vala"
+       contacts_link_operation_set_split_out_contact (_data_->_tmp1_, _data_->other);
+#line 532 "../src/contacts-linking.vala"
+       _data_->_tmp2_ = contacts_get_linkable_attributes_for_individual (_data_->main);
+#line 532 "../src/contacts-linking.vala"
+       _data_->main_linkables = _data_->_tmp2_;
+#line 533 "../src/contacts-linking.vala"
+       _data_->other_linkables = NULL;
+#line 534 "../src/contacts-linking.vala"
+       if (_data_->other != NULL) {
+#line 535 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = contacts_get_linkable_attributes_for_individual (_data_->other);
+#line 535 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->other_linkables);
+#line 535 "../src/contacts-linking.vala"
+               _data_->other_linkables = _data_->_tmp3_;
+#line 7000 "contacts-linking.c"
+       }
+#line 536 "../src/contacts-linking.vala"
+       _data_->linkables = NULL;
+#line 539 "../src/contacts-linking.vala"
+       _data_->_tmp4_ = _data_->other_linkables;
+#line 539 "../src/contacts-linking.vala"
+       if (_data_->_tmp4_ != NULL) {
+#line 540 "../src/contacts-linking.vala"
+               _data_->_tmp5_ = _data_->main_linkables;
+#line 540 "../src/contacts-linking.vala"
+               _data_->_tmp6_ = _data_->other_linkables;
+#line 540 "../src/contacts-linking.vala"
+               gee_collection_remove_all ((GeeCollection*) _data_->_tmp5_, (GeeCollection*) _data_->_tmp6_);
+#line 541 "../src/contacts-linking.vala"
+               _data_->_tmp7_ = _data_->other_linkables;
+#line 541 "../src/contacts-linking.vala"
+               _data_->_tmp8_ = _data_->main_linkables;
+#line 541 "../src/contacts-linking.vala"
+               gee_collection_remove_all ((GeeCollection*) _data_->_tmp7_, (GeeCollection*) _data_->_tmp8_);
+#line 7020 "contacts-linking.c"
+       }
+#line 544 "../src/contacts-linking.vala"
+       _data_->write_persona = NULL;
+#line 7024 "contacts-linking.c"
+       {
+#line 545 "../src/contacts-linking.vala"
+               _data_->_tmp9_ = folks_individual_get_personas (_data_->main);
+#line 545 "../src/contacts-linking.vala"
+               _data_->_tmp10_ = _data_->_tmp9_;
+#line 545 "../src/contacts-linking.vala"
+               _data_->_tmp11_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp10_);
+#line 545 "../src/contacts-linking.vala"
+               _data_->_p1_it = _data_->_tmp11_;
+#line 545 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 545 "../src/contacts-linking.vala"
+                       _data_->_tmp12_ = _data_->_p1_it;
+#line 545 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp12_)) {
+#line 545 "../src/contacts-linking.vala"
+                               break;
+#line 7042 "contacts-linking.c"
+                       }
+#line 545 "../src/contacts-linking.vala"
+                       _data_->_tmp13_ = _data_->_p1_it;
+#line 545 "../src/contacts-linking.vala"
+                       _data_->_tmp14_ = gee_iterator_get (_data_->_tmp13_);
+#line 545 "../src/contacts-linking.vala"
+                       _data_->p1 = (FolksPersona*) _data_->_tmp14_;
+#line 546 "../src/contacts-linking.vala"
+                       _data_->_tmp16_ = _data_->other_linkables;
+#line 546 "../src/contacts-linking.vala"
+                       if (_data_->_tmp16_ != NULL) {
+#line 547 "../src/contacts-linking.vala"
+                               _data_->_tmp17_ = _data_->p1;
+#line 547 "../src/contacts-linking.vala"
+                               _data_->_tmp18_ = _data_->other_linkables;
+#line 547 "../src/contacts-linking.vala"
+                               _data_->_tmp15_ = contacts_persona_can_link_to (_data_->_tmp17_, 
_data_->_tmp18_);
+#line 7060 "contacts-linking.c"
+                       } else {
+#line 546 "../src/contacts-linking.vala"
+                               _data_->_tmp15_ = FALSE;
+#line 7064 "contacts-linking.c"
+                       }
+#line 546 "../src/contacts-linking.vala"
+                       if (_data_->_tmp15_) {
+#line 548 "../src/contacts-linking.vala"
+                               _data_->_tmp19_ = _data_->p1;
+#line 548 "../src/contacts-linking.vala"
+                               _data_->_tmp20_ = _g_object_ref0 (_data_->_tmp19_);
+#line 548 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->write_persona);
+#line 548 "../src/contacts-linking.vala"
+                               _data_->write_persona = _data_->_tmp20_;
+#line 549 "../src/contacts-linking.vala"
+                               _data_->_tmp21_ = _data_->other_linkables;
+#line 549 "../src/contacts-linking.vala"
+                               _data_->_tmp22_ = _g_object_ref0 (_data_->_tmp21_);
+#line 549 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->linkables);
+#line 549 "../src/contacts-linking.vala"
+                               _data_->linkables = _data_->_tmp22_;
+#line 550 "../src/contacts-linking.vala"
+                               _data_->_tmp23_ = _data_->write_persona;
+#line 550 "../src/contacts-linking.vala"
+                               _data_->_tmp24_ = folks_persona_get_store (_data_->_tmp23_);
+#line 550 "../src/contacts-linking.vala"
+                               _data_->_tmp25_ = _data_->_tmp24_;
+#line 550 "../src/contacts-linking.vala"
+                               _data_->_tmp26_ = folks_persona_store_get_is_primary_store (_data_->_tmp25_);
+#line 550 "../src/contacts-linking.vala"
+                               _data_->_tmp27_ = _data_->_tmp26_;
+#line 550 "../src/contacts-linking.vala"
+                               if (_data_->_tmp27_) {
+#line 551 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->p1);
+#line 551 "../src/contacts-linking.vala"
+                                       break;
+#line 7100 "contacts-linking.c"
+                               }
+                       }
+#line 545 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->p1);
+#line 7105 "contacts-linking.c"
+               }
+#line 545 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_p1_it);
+#line 7109 "contacts-linking.c"
+       }
+#line 555 "../src/contacts-linking.vala"
+       if (_data_->other != NULL) {
+#line 556 "../src/contacts-linking.vala"
+               _data_->_tmp30_ = _data_->write_persona;
+#line 556 "../src/contacts-linking.vala"
+               if (_data_->_tmp30_ == NULL) {
+#line 556 "../src/contacts-linking.vala"
+                       _data_->_tmp29_ = TRUE;
+#line 7119 "contacts-linking.c"
+               } else {
+#line 556 "../src/contacts-linking.vala"
+                       _data_->_tmp31_ = _data_->write_persona;
+#line 556 "../src/contacts-linking.vala"
+                       _data_->_tmp32_ = folks_persona_get_store (_data_->_tmp31_);
+#line 556 "../src/contacts-linking.vala"
+                       _data_->_tmp33_ = _data_->_tmp32_;
+#line 556 "../src/contacts-linking.vala"
+                       _data_->_tmp34_ = folks_persona_store_get_is_primary_store (_data_->_tmp33_);
+#line 556 "../src/contacts-linking.vala"
+                       _data_->_tmp35_ = _data_->_tmp34_;
+#line 556 "../src/contacts-linking.vala"
+                       _data_->_tmp29_ = !_data_->_tmp35_;
+#line 7133 "contacts-linking.c"
+               }
+#line 556 "../src/contacts-linking.vala"
+               _data_->_tmp28_ = _data_->_tmp29_;
+#line 7137 "contacts-linking.c"
+       } else {
+#line 555 "../src/contacts-linking.vala"
+               _data_->_tmp28_ = FALSE;
+#line 7141 "contacts-linking.c"
+       }
+#line 555 "../src/contacts-linking.vala"
+       if (_data_->_tmp28_) {
+#line 7145 "contacts-linking.c"
+               {
+#line 557 "../src/contacts-linking.vala"
+                       _data_->_tmp36_ = folks_individual_get_personas (_data_->other);
+#line 557 "../src/contacts-linking.vala"
+                       _data_->_tmp37_ = _data_->_tmp36_;
+#line 557 "../src/contacts-linking.vala"
+                       _data_->_tmp38_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp37_);
+#line 557 "../src/contacts-linking.vala"
+                       _data_->_p2_it = _data_->_tmp38_;
+#line 557 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 557 "../src/contacts-linking.vala"
+                               _data_->_tmp39_ = _data_->_p2_it;
+#line 557 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_data_->_tmp39_)) {
+#line 557 "../src/contacts-linking.vala"
+                                       break;
+#line 7163 "contacts-linking.c"
+                               }
+#line 557 "../src/contacts-linking.vala"
+                               _data_->_tmp40_ = _data_->_p2_it;
+#line 557 "../src/contacts-linking.vala"
+                               _data_->_tmp41_ = gee_iterator_get (_data_->_tmp40_);
+#line 557 "../src/contacts-linking.vala"
+                               _data_->p2 = (FolksPersona*) _data_->_tmp41_;
+#line 558 "../src/contacts-linking.vala"
+                               _data_->_tmp42_ = _data_->p2;
+#line 558 "../src/contacts-linking.vala"
+                               _data_->_tmp43_ = _data_->main_linkables;
+#line 558 "../src/contacts-linking.vala"
+                               if (contacts_persona_can_link_to (_data_->_tmp42_, _data_->_tmp43_)) {
+#line 560 "../src/contacts-linking.vala"
+                                       _data_->_tmp45_ = _data_->write_persona;
+#line 560 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp45_ == NULL) {
+#line 560 "../src/contacts-linking.vala"
+                                               _data_->_tmp44_ = TRUE;
+#line 7183 "contacts-linking.c"
+                                       } else {
+#line 560 "../src/contacts-linking.vala"
+                                               _data_->_tmp46_ = _data_->p2;
+#line 560 "../src/contacts-linking.vala"
+                                               _data_->_tmp47_ = folks_persona_get_store (_data_->_tmp46_);
+#line 560 "../src/contacts-linking.vala"
+                                               _data_->_tmp48_ = _data_->_tmp47_;
+#line 560 "../src/contacts-linking.vala"
+                                               _data_->_tmp49_ = folks_persona_store_get_is_primary_store 
(_data_->_tmp48_);
+#line 560 "../src/contacts-linking.vala"
+                                               _data_->_tmp50_ = _data_->_tmp49_;
+#line 560 "../src/contacts-linking.vala"
+                                               _data_->_tmp44_ = _data_->_tmp50_;
+#line 7197 "contacts-linking.c"
+                                       }
+#line 560 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp44_) {
+#line 561 "../src/contacts-linking.vala"
+                                               _data_->_tmp51_ = _data_->p2;
+#line 561 "../src/contacts-linking.vala"
+                                               _data_->_tmp52_ = _g_object_ref0 (_data_->_tmp51_);
+#line 561 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->write_persona);
+#line 561 "../src/contacts-linking.vala"
+                                               _data_->write_persona = _data_->_tmp52_;
+#line 562 "../src/contacts-linking.vala"
+                                               _data_->_tmp53_ = _data_->main_linkables;
+#line 562 "../src/contacts-linking.vala"
+                                               _data_->_tmp54_ = _g_object_ref0 (_data_->_tmp53_);
+#line 562 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->linkables);
+#line 562 "../src/contacts-linking.vala"
+                                               _data_->linkables = _data_->_tmp54_;
+#line 563 "../src/contacts-linking.vala"
+                                               _data_->_tmp55_ = _data_->write_persona;
+#line 563 "../src/contacts-linking.vala"
+                                               _data_->_tmp56_ = folks_persona_get_store (_data_->_tmp55_);
+#line 563 "../src/contacts-linking.vala"
+                                               _data_->_tmp57_ = _data_->_tmp56_;
+#line 563 "../src/contacts-linking.vala"
+                                               _data_->_tmp58_ = folks_persona_store_get_is_primary_store 
(_data_->_tmp57_);
+#line 563 "../src/contacts-linking.vala"
+                                               _data_->_tmp59_ = _data_->_tmp58_;
+#line 563 "../src/contacts-linking.vala"
+                                               if (_data_->_tmp59_) {
+#line 564 "../src/contacts-linking.vala"
+                                                       _g_object_unref0 (_data_->p2);
+#line 564 "../src/contacts-linking.vala"
+                                                       break;
+#line 7233 "contacts-linking.c"
+                                               }
+                                       }
+                               }
+#line 557 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->p2);
+#line 7239 "contacts-linking.c"
+                       }
+#line 557 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_p2_it);
+#line 7243 "contacts-linking.c"
+               }
+       }
+#line 570 "../src/contacts-linking.vala"
+       _data_->_tmp60_ = _data_->write_persona;
+#line 570 "../src/contacts-linking.vala"
+       if (_data_->_tmp60_ == NULL) {
+#line 571 "../src/contacts-linking.vala"
+               _data_->_tmp61_ = g_str_hash;
+#line 571 "../src/contacts-linking.vala"
+               _data_->_tmp62_ = g_str_equal;
+#line 571 "../src/contacts-linking.vala"
+               _data_->_tmp63_ = g_hash_table_new_full (_data_->_tmp61_, _data_->_tmp62_, _g_free0_, 
__vala_GValue_free0_);
+#line 571 "../src/contacts-linking.vala"
+               _data_->details = _data_->_tmp63_;
+#line 7258 "contacts-linking.c"
+               {
+#line 573 "../src/contacts-linking.vala"
+                       memset (&_data_->_tmp64_, 0, sizeof (GValue));
+#line 573 "../src/contacts-linking.vala"
+                       g_value_init (&_data_->_tmp64_, G_TYPE_STRING);
+#line 573 "../src/contacts-linking.vala"
+                       _data_->v = _data_->_tmp64_;
+#line 574 "../src/contacts-linking.vala"
+                       _data_->_tmp65_ = folks_individual_get_display_name (_data_->main);
+#line 574 "../src/contacts-linking.vala"
+                       _data_->_tmp66_ = _data_->_tmp65_;
+#line 574 "../src/contacts-linking.vala"
+                       g_value_set_string (&_data_->v, _data_->_tmp66_);
+#line 575 "../src/contacts-linking.vala"
+                       _data_->_tmp67_ = _data_->details;
+#line 575 "../src/contacts-linking.vala"
+                       _data_->_tmp68_ = g_strdup ("full-name");
+#line 575 "../src/contacts-linking.vala"
+                       _data_->_tmp69_ = _data_->v;
+#line 575 "../src/contacts-linking.vala"
+                       _data_->_tmp70_ = _data_->_tmp69_;
+#line 575 "../src/contacts-linking.vala"
+                       _data_->_tmp71_ = __g_value_dup0 (&_data_->_tmp70_);
+#line 575 "../src/contacts-linking.vala"
+                       g_hash_table_insert (_data_->_tmp67_, _data_->_tmp68_, _data_->_tmp71_);
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp73_ = contacts_store_get_aggregator (_data_->contacts_store);
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp74_ = _data_->_tmp73_;
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp75_ = folks_individual_aggregator_get_primary_store (_data_->_tmp74_);
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp76_ = _data_->_tmp75_;
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp77_ = _data_->details;
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 576 "../src/contacts-linking.vala"
+                       folks_persona_store_add_persona_from_details (_data_->_tmp76_, _data_->_tmp77_, 
contacts_link_contacts_ready, _data_);
+#line 576 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 7300 "contacts-linking.c"
+                       _state_1:
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp78_ = folks_persona_store_add_persona_from_details_finish 
(_data_->_tmp76_, _data_->_res_, &_data_->_inner_error0_);
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp72_ = _data_->_tmp78_;
+#line 576 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 576 "../src/contacts-linking.vala"
+                               G_IS_VALUE (&_data_->v) ? (g_value_unset (&_data_->v), NULL) : NULL;
+#line 7310 "contacts-linking.c"
+                               goto __catch21_g_error;
+                       }
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp79_ = _data_->_tmp72_;
+#line 576 "../src/contacts-linking.vala"
+                       _data_->_tmp72_ = NULL;
+#line 576 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->write_persona);
+#line 576 "../src/contacts-linking.vala"
+                       _data_->write_persona = _data_->_tmp79_;
+#line 577 "../src/contacts-linking.vala"
+                       _data_->_tmp80_ = _data_->operation;
+#line 577 "../src/contacts-linking.vala"
+                       _data_->_tmp81_ = _data_->write_persona;
+#line 577 "../src/contacts-linking.vala"
+                       contacts_link_operation_added_persona (_data_->_tmp80_, _data_->_tmp81_);
+#line 578 "../src/contacts-linking.vala"
+                       _data_->_tmp82_ = _data_->main_linkables;
+#line 578 "../src/contacts-linking.vala"
+                       _data_->_tmp83_ = _g_object_ref0 (_data_->_tmp82_);
+#line 578 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->linkables);
+#line 578 "../src/contacts-linking.vala"
+                       _data_->linkables = _data_->_tmp83_;
+#line 579 "../src/contacts-linking.vala"
+                       _data_->_tmp84_ = _data_->other_linkables;
+#line 579 "../src/contacts-linking.vala"
+                       if (_data_->_tmp84_ != NULL) {
+#line 580 "../src/contacts-linking.vala"
+                               _data_->_tmp85_ = _data_->linkables;
+#line 580 "../src/contacts-linking.vala"
+                               _data_->_tmp86_ = _data_->other_linkables;
+#line 580 "../src/contacts-linking.vala"
+                               gee_collection_add_all ((GeeCollection*) _data_->_tmp85_, (GeeCollection*) 
_data_->_tmp86_);
+#line 7345 "contacts-linking.c"
+                       }
+#line 572 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_tmp72_);
+#line 572 "../src/contacts-linking.vala"
+                       G_IS_VALUE (&_data_->v) ? (g_value_unset (&_data_->v), NULL) : NULL;
+#line 7351 "contacts-linking.c"
+               }
+               goto __finally21;
+               __catch21_g_error:
+               {
+#line 572 "../src/contacts-linking.vala"
+                       _data_->e = _data_->_inner_error0_;
+#line 572 "../src/contacts-linking.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 582 "../src/contacts-linking.vala"
+                       g_object_set_data_full ((GObject*) _data_->main, "contacts-master-at-join", 
(gpointer) ((gintptr) FALSE), NULL);
+#line 583 "../src/contacts-linking.vala"
+                       _data_->_tmp87_ = _data_->e;
+#line 583 "../src/contacts-linking.vala"
+                       _data_->_tmp88_ = _data_->_tmp87_->message;
+#line 583 "../src/contacts-linking.vala"
+                       g_warning ("contacts-linking.vala:583: Unable to create new persona when linking: " \
+"%s\n", _data_->_tmp88_);
+#line 584 "../src/contacts-linking.vala"
+                       _data_->result = _data_->operation;
+#line 584 "../src/contacts-linking.vala"
+                       _g_error_free0 (_data_->e);
+#line 584 "../src/contacts-linking.vala"
+                       _g_hash_table_unref0 (_data_->details);
+#line 584 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->write_persona);
+#line 584 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->linkables);
+#line 584 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->other_linkables);
+#line 584 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->main_linkables);
+#line 584 "../src/contacts-linking.vala"
+                       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 584 "../src/contacts-linking.vala"
+                       if (_data_->_state_ != 0) {
+#line 584 "../src/contacts-linking.vala"
+                               while (!g_task_get_completed (_data_->_async_result)) {
+#line 584 "../src/contacts-linking.vala"
+                                       g_main_context_iteration (g_task_get_context (_data_->_async_result), 
TRUE);
+#line 7390 "contacts-linking.c"
+                               }
+                       }
+#line 584 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 584 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 7397 "contacts-linking.c"
+               }
+               __finally21:
+#line 572 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 572 "../src/contacts-linking.vala"
+                       _g_hash_table_unref0 (_data_->details);
+#line 572 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->write_persona);
+#line 572 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->linkables);
+#line 572 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->other_linkables);
+#line 572 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->main_linkables);
+#line 572 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->operation);
+#line 572 "../src/contacts-linking.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 572 "../src/contacts-linking.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 572 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 572 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 7422 "contacts-linking.c"
+               }
+#line 570 "../src/contacts-linking.vala"
+               _g_hash_table_unref0 (_data_->details);
+#line 7426 "contacts-linking.c"
+       }
+#line 588 "../src/contacts-linking.vala"
+       _data_->_tmp89_ = _data_->write_persona;
+#line 588 "../src/contacts-linking.vala"
+       _data_->_tmp90_ = _data_->linkables;
+#line 588 "../src/contacts-linking.vala"
+       _data_->_tmp91_ = _data_->operation;
+#line 588 "../src/contacts-linking.vala"
+       _data_->_state_ = 2;
+#line 588 "../src/contacts-linking.vala"
+       contacts_persona_apply_attributes (_data_->_tmp89_, _data_->_tmp90_, NULL, _data_->_tmp91_, 
contacts_link_contacts_ready, _data_);
+#line 588 "../src/contacts-linking.vala"
+       return FALSE;
+#line 7440 "contacts-linking.c"
+       _state_2:
+#line 588 "../src/contacts-linking.vala"
+       contacts_persona_apply_attributes_finish (_data_->_res_);
+#line 590 "../src/contacts-linking.vala"
+       g_object_set_data_full ((GObject*) _data_->main, "contacts-master-at-join", (gpointer) ((gintptr) 
FALSE), NULL);
+#line 592 "../src/contacts-linking.vala"
+       _data_->result = _data_->operation;
+#line 592 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->write_persona);
+#line 592 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->linkables);
+#line 592 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->other_linkables);
+#line 592 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->main_linkables);
+#line 592 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 592 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 592 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 592 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 7464 "contacts-linking.c"
+               }
+       }
+#line 592 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 592 "../src/contacts-linking.vala"
+       return FALSE;
+#line 7471 "contacts-linking.c"
+}
+
+static void
+contacts_unlink_persona_data_free (gpointer _data)
+{
+       ContactsUnlinkPersonaData* _data_;
+       _data_ = _data;
+       _g_object_unref0 (_data_->store);
+       _g_object_unref0 (_data_->individual);
+       _g_object_unref0 (_data_->persona_to_unlink);
+       _g_object_unref0 (_data_->result);
+       g_slice_free (ContactsUnlinkPersonaData, _data_);
+}
+
+void
+contacts_unlink_persona (ContactsStore* store,
+                         FolksIndividual* individual,
+                         FolksPersona* persona_to_unlink,
+                         GAsyncReadyCallback _callback_,
+                         gpointer _user_data_)
+{
+       ContactsUnlinkPersonaData* _data_;
+       ContactsStore* _tmp0_;
+       FolksIndividual* _tmp1_;
+       FolksPersona* _tmp2_;
+       _data_ = g_slice_new0 (ContactsUnlinkPersonaData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_unlink_persona_data_free);
+       _tmp0_ = _g_object_ref0 (store);
+       _g_object_unref0 (_data_->store);
+       _data_->store = _tmp0_;
+       _tmp1_ = _g_object_ref0 (individual);
+       _g_object_unref0 (_data_->individual);
+       _data_->individual = _tmp1_;
+       _tmp2_ = _g_object_ref0 (persona_to_unlink);
+       _g_object_unref0 (_data_->persona_to_unlink);
+       _data_->persona_to_unlink = _tmp2_;
+       contacts_unlink_persona_co (_data_);
+}
+
+ContactsLinkOperation*
+contacts_unlink_persona_finish (GAsyncResult* _res_)
+{
+       ContactsLinkOperation* result;
+       ContactsUnlinkPersonaData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+       result = _data_->result;
+       _data_->result = NULL;
+       return result;
+}
+
+static void
+contacts_unlink_persona_ready (GObject* source_object,
+                               GAsyncResult* _res_,
+                               gpointer _user_data_)
+{
+       ContactsUnlinkPersonaData* _data_;
+#line 678 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 678 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 678 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 678 "../src/contacts-linking.vala"
+       contacts_unlink_persona_co (_data_);
+#line 7537 "contacts-linking.c"
+}
+
+static gboolean
+contacts_unlink_persona_co (ContactsUnlinkPersonaData* _data_)
+{
+#line 595 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 595 "../src/contacts-linking.vala"
+               case 0:
+#line 7547 "contacts-linking.c"
+               goto _state_0;
+#line 595 "../src/contacts-linking.vala"
+               case 1:
+#line 7551 "contacts-linking.c"
+               goto _state_1;
+#line 595 "../src/contacts-linking.vala"
+               case 2:
+#line 7555 "contacts-linking.c"
+               goto _state_2;
+#line 595 "../src/contacts-linking.vala"
+               case 3:
+#line 7559 "contacts-linking.c"
+               goto _state_3;
+#line 595 "../src/contacts-linking.vala"
+               case 4:
+#line 7563 "contacts-linking.c"
+               goto _state_4;
+#line 595 "../src/contacts-linking.vala"
+               case 5:
+#line 7567 "contacts-linking.c"
+               goto _state_5;
+               default:
+#line 595 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 7572 "contacts-linking.c"
+       }
+       _state_0:
+#line 596 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = contacts_persona_attribute_create_set ();
+#line 596 "../src/contacts-linking.vala"
+       _data_->persona_to_unlink_removals = _data_->_tmp0_;
+#line 597 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = contacts_persona_attribute_create_set ();
+#line 597 "../src/contacts-linking.vala"
+       _data_->other_personas_removals = _data_->_tmp1_;
+#line 599 "../src/contacts-linking.vala"
+       _data_->_tmp2_ = contacts_link_operation_new ();
+#line 599 "../src/contacts-linking.vala"
+       _data_->operation = _data_->_tmp2_;
+#line 600 "../src/contacts-linking.vala"
+       _data_->_tmp3_ = _data_->operation;
+#line 600 "../src/contacts-linking.vala"
+       contacts_link_operation_set_main_contact (_data_->_tmp3_, _data_->individual);
+#line 7591 "contacts-linking.c"
+       {
+#line 602 "../src/contacts-linking.vala"
+               _data_->_tmp4_ = contacts_get_linkable_attributes (_data_->persona_to_unlink);
+#line 602 "../src/contacts-linking.vala"
+               _data_->_tmp5_ = _data_->_tmp4_;
+#line 602 "../src/contacts-linking.vala"
+               _data_->_tmp6_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp5_);
+#line 602 "../src/contacts-linking.vala"
+               _data_->_tmp7_ = _data_->_tmp6_;
+#line 602 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_tmp5_);
+#line 602 "../src/contacts-linking.vala"
+               _data_->_a1_it = _data_->_tmp7_;
+#line 602 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 602 "../src/contacts-linking.vala"
+                       _data_->_tmp8_ = _data_->_a1_it;
+#line 602 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp8_)) {
+#line 602 "../src/contacts-linking.vala"
+                               break;
+#line 7613 "contacts-linking.c"
+                       }
+#line 602 "../src/contacts-linking.vala"
+                       _data_->_tmp9_ = _data_->_a1_it;
+#line 602 "../src/contacts-linking.vala"
+                       _data_->_tmp10_ = gee_iterator_get (_data_->_tmp9_);
+#line 602 "../src/contacts-linking.vala"
+                       _data_->a1 = (ContactsPersonaAttribute*) _data_->_tmp10_;
+#line 604 "../src/contacts-linking.vala"
+                       _data_->used_to_link = FALSE;
+#line 7623 "contacts-linking.c"
+                       {
+#line 605 "../src/contacts-linking.vala"
+                               _data_->_tmp11_ = folks_individual_get_personas (_data_->individual);
+#line 605 "../src/contacts-linking.vala"
+                               _data_->_tmp12_ = _data_->_tmp11_;
+#line 605 "../src/contacts-linking.vala"
+                               _data_->_tmp13_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp12_);
+#line 605 "../src/contacts-linking.vala"
+                               _data_->_persona_it = _data_->_tmp13_;
+#line 605 "../src/contacts-linking.vala"
+                               while (TRUE) {
+#line 605 "../src/contacts-linking.vala"
+                                       _data_->_tmp14_ = _data_->_persona_it;
+#line 605 "../src/contacts-linking.vala"
+                                       if (!gee_iterator_next (_data_->_tmp14_)) {
+#line 605 "../src/contacts-linking.vala"
+                                               break;
+#line 7641 "contacts-linking.c"
+                                       }
+#line 605 "../src/contacts-linking.vala"
+                                       _data_->_tmp15_ = _data_->_persona_it;
+#line 605 "../src/contacts-linking.vala"
+                                       _data_->_tmp16_ = gee_iterator_get (_data_->_tmp15_);
+#line 605 "../src/contacts-linking.vala"
+                                       _data_->persona = (FolksPersona*) _data_->_tmp16_;
+#line 606 "../src/contacts-linking.vala"
+                                       _data_->_tmp18_ = _data_->persona;
+#line 606 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp18_ != _data_->persona_to_unlink) {
+#line 607 "../src/contacts-linking.vala"
+                                               _data_->_tmp19_ = _data_->a1;
+#line 607 "../src/contacts-linking.vala"
+                                               _data_->_tmp20_ = _data_->persona;
+#line 607 "../src/contacts-linking.vala"
+                                               _data_->_tmp17_ = 
contacts_persona_attribute_is_referenced_by_persona (_data_->_tmp19_, _data_->_tmp20_);
+#line 7659 "contacts-linking.c"
+                                       } else {
+#line 606 "../src/contacts-linking.vala"
+                                               _data_->_tmp17_ = FALSE;
+#line 7663 "contacts-linking.c"
+                                       }
+#line 606 "../src/contacts-linking.vala"
+                                       if (_data_->_tmp17_) {
+#line 608 "../src/contacts-linking.vala"
+                                               _data_->used_to_link = TRUE;
+#line 609 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->persona);
+#line 609 "../src/contacts-linking.vala"
+                                               break;
+#line 7673 "contacts-linking.c"
+                                       }
+#line 605 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->persona);
+#line 7677 "contacts-linking.c"
+                               }
+#line 605 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_persona_it);
+#line 7681 "contacts-linking.c"
+                       }
+#line 612 "../src/contacts-linking.vala"
+                       if (!_data_->used_to_link) {
+#line 613 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->a1);
+#line 613 "../src/contacts-linking.vala"
+                               continue;
+#line 7689 "contacts-linking.c"
+                       }
+#line 615 "../src/contacts-linking.vala"
+                       _data_->_tmp21_ = _data_->a1;
+#line 615 "../src/contacts-linking.vala"
+                       if (contacts_persona_attribute_is_removable (_data_->_tmp21_, 
_data_->persona_to_unlink)) {
+#line 618 "../src/contacts-linking.vala"
+                               _data_->_tmp22_ = _data_->persona_to_unlink_removals;
+#line 618 "../src/contacts-linking.vala"
+                               _data_->_tmp23_ = _data_->a1;
+#line 618 "../src/contacts-linking.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp22_, 
_data_->_tmp23_);
+#line 7701 "contacts-linking.c"
+                       } else {
+#line 622 "../src/contacts-linking.vala"
+                               _data_->_tmp24_ = _data_->other_personas_removals;
+#line 622 "../src/contacts-linking.vala"
+                               _data_->_tmp25_ = _data_->a1;
+#line 622 "../src/contacts-linking.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp24_, 
_data_->_tmp25_);
+#line 7709 "contacts-linking.c"
+                       }
+#line 602 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->a1);
+#line 7713 "contacts-linking.c"
+               }
+#line 602 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_a1_it);
+#line 7717 "contacts-linking.c"
+       }
+#line 642 "../src/contacts-linking.vala"
+       _data_->_tmp26_ = contacts_persona_attribute_create_set ();
+#line 642 "../src/contacts-linking.vala"
+       _data_->main_persona_additions = _data_->_tmp26_;
+#line 7723 "contacts-linking.c"
+       {
+#line 643 "../src/contacts-linking.vala"
+               _data_->_tmp27_ = folks_individual_get_personas (_data_->individual);
+#line 643 "../src/contacts-linking.vala"
+               _data_->_tmp28_ = _data_->_tmp27_;
+#line 643 "../src/contacts-linking.vala"
+               _data_->_tmp29_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp28_);
+#line 643 "../src/contacts-linking.vala"
+               _data_->_p1_it = _data_->_tmp29_;
+#line 643 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 643 "../src/contacts-linking.vala"
+                       _data_->_tmp30_ = _data_->_p1_it;
+#line 643 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp30_)) {
+#line 643 "../src/contacts-linking.vala"
+                               break;
+#line 7741 "contacts-linking.c"
+                       }
+#line 643 "../src/contacts-linking.vala"
+                       _data_->_tmp31_ = _data_->_p1_it;
+#line 643 "../src/contacts-linking.vala"
+                       _data_->_tmp32_ = gee_iterator_get (_data_->_tmp31_);
+#line 643 "../src/contacts-linking.vala"
+                       _data_->p1 = (FolksPersona*) _data_->_tmp32_;
+#line 644 "../src/contacts-linking.vala"
+                       _data_->_tmp33_ = _data_->p1;
+#line 644 "../src/contacts-linking.vala"
+                       if (_data_->_tmp33_ == _data_->persona_to_unlink) {
+#line 645 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->p1);
+#line 645 "../src/contacts-linking.vala"
+                               continue;
+#line 7757 "contacts-linking.c"
+                       }
+                       {
+#line 646 "../src/contacts-linking.vala"
+                               _data_->_tmp34_ = _data_->p1;
+#line 646 "../src/contacts-linking.vala"
+                               _data_->_tmp35_ = contacts_get_linkable_attributes (_data_->_tmp34_);
+#line 646 "../src/contacts-linking.vala"
+                               _data_->_tmp36_ = _data_->_tmp35_;
+#line 646 "../src/contacts-linking.vala"
+                               _data_->_tmp37_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp36_);
+#line 646 "../src/contacts-linking.vala"
+                               _data_->_tmp38_ = _data_->_tmp37_;
+#line 646 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_tmp36_);
+#line 646 "../src/contacts-linking.vala"
+                               _data_->_a2_it = _data_->_tmp38_;
+#line 646 "../src/contacts-linking.vala"
+                               while (TRUE) {
+#line 646 "../src/contacts-linking.vala"
+                                       _data_->_tmp39_ = _data_->_a2_it;
+#line 646 "../src/contacts-linking.vala"
+                                       if (!gee_iterator_next (_data_->_tmp39_)) {
+#line 646 "../src/contacts-linking.vala"
+                                               break;
+#line 7782 "contacts-linking.c"
+                                       }
+#line 646 "../src/contacts-linking.vala"
+                                       _data_->_tmp40_ = _data_->_a2_it;
+#line 646 "../src/contacts-linking.vala"
+                                       _data_->_tmp41_ = gee_iterator_get (_data_->_tmp40_);
+#line 646 "../src/contacts-linking.vala"
+                                       _data_->a2 = (ContactsPersonaAttribute*) _data_->_tmp41_;
+#line 647 "../src/contacts-linking.vala"
+                                       _data_->_tmp42_ = _data_->other_personas_removals;
+#line 647 "../src/contacts-linking.vala"
+                                       _data_->_tmp43_ = _data_->a2;
+#line 647 "../src/contacts-linking.vala"
+                                       if (gee_abstract_collection_contains ((GeeAbstractCollection*) 
_data_->_tmp42_, _data_->_tmp43_)) {
+#line 648 "../src/contacts-linking.vala"
+                                               _g_object_unref0 (_data_->a2);
+#line 648 "../src/contacts-linking.vala"
+                                               continue;
+#line 7800 "contacts-linking.c"
+                                       }
+#line 649 "../src/contacts-linking.vala"
+                                       _data_->_tmp44_ = _data_->main_persona_additions;
+#line 649 "../src/contacts-linking.vala"
+                                       _data_->_tmp45_ = _data_->a2;
+#line 649 "../src/contacts-linking.vala"
+                                       gee_abstract_collection_add ((GeeAbstractCollection*) 
_data_->_tmp44_, _data_->_tmp45_);
+#line 646 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->a2);
+#line 7810 "contacts-linking.c"
+                               }
+#line 646 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_a2_it);
+#line 7814 "contacts-linking.c"
+                       }
+#line 643 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->p1);
+#line 7818 "contacts-linking.c"
+               }
+#line 643 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_p1_it);
+#line 7822 "contacts-linking.c"
+       }
+#line 655 "../src/contacts-linking.vala"
+       _data_->main_persona = NULL;
+#line 7826 "contacts-linking.c"
+       {
+#line 656 "../src/contacts-linking.vala"
+               _data_->_tmp46_ = folks_individual_get_personas (_data_->individual);
+#line 656 "../src/contacts-linking.vala"
+               _data_->_tmp47_ = _data_->_tmp46_;
+#line 656 "../src/contacts-linking.vala"
+               _data_->_tmp48_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp47_);
+#line 656 "../src/contacts-linking.vala"
+               _data_->_p2_it = _data_->_tmp48_;
+#line 656 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 656 "../src/contacts-linking.vala"
+                       _data_->_tmp49_ = _data_->_p2_it;
+#line 656 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp49_)) {
+#line 656 "../src/contacts-linking.vala"
+                               break;
+#line 7844 "contacts-linking.c"
+                       }
+#line 656 "../src/contacts-linking.vala"
+                       _data_->_tmp50_ = _data_->_p2_it;
+#line 656 "../src/contacts-linking.vala"
+                       _data_->_tmp51_ = gee_iterator_get (_data_->_tmp50_);
+#line 656 "../src/contacts-linking.vala"
+                       _data_->p2 = (FolksPersona*) _data_->_tmp51_;
+#line 657 "../src/contacts-linking.vala"
+                       _data_->_tmp53_ = _data_->p2;
+#line 657 "../src/contacts-linking.vala"
+                       if (_data_->_tmp53_ != _data_->persona_to_unlink) {
+#line 657 "../src/contacts-linking.vala"
+                               _data_->_tmp54_ = _data_->p2;
+#line 657 "../src/contacts-linking.vala"
+                               _data_->_tmp55_ = _data_->main_persona_additions;
+#line 657 "../src/contacts-linking.vala"
+                               _data_->_tmp52_ = contacts_persona_can_link_to (_data_->_tmp54_, (GeeSet*) 
_data_->_tmp55_);
+#line 7862 "contacts-linking.c"
+                       } else {
+#line 657 "../src/contacts-linking.vala"
+                               _data_->_tmp52_ = FALSE;
+#line 7866 "contacts-linking.c"
+                       }
+#line 657 "../src/contacts-linking.vala"
+                       if (_data_->_tmp52_) {
+#line 658 "../src/contacts-linking.vala"
+                               _data_->_tmp56_ = _data_->p2;
+#line 658 "../src/contacts-linking.vala"
+                               _data_->_tmp57_ = _g_object_ref0 (_data_->_tmp56_);
+#line 658 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->main_persona);
+#line 658 "../src/contacts-linking.vala"
+                               _data_->main_persona = _data_->_tmp57_;
+#line 659 "../src/contacts-linking.vala"
+                               _data_->_tmp58_ = _data_->main_persona;
+#line 659 "../src/contacts-linking.vala"
+                               _data_->_tmp59_ = folks_persona_get_store (_data_->_tmp58_);
+#line 659 "../src/contacts-linking.vala"
+                               _data_->_tmp60_ = _data_->_tmp59_;
+#line 659 "../src/contacts-linking.vala"
+                               _data_->_tmp61_ = folks_persona_store_get_is_primary_store (_data_->_tmp60_);
+#line 659 "../src/contacts-linking.vala"
+                               _data_->_tmp62_ = _data_->_tmp61_;
+#line 659 "../src/contacts-linking.vala"
+                               if (_data_->_tmp62_) {
+#line 660 "../src/contacts-linking.vala"
+                                       _g_object_unref0 (_data_->p2);
+#line 660 "../src/contacts-linking.vala"
+                                       break;
+#line 7894 "contacts-linking.c"
+                               }
+                       }
+#line 656 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->p2);
+#line 7899 "contacts-linking.c"
+               }
+#line 656 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_p2_it);
+#line 7903 "contacts-linking.c"
+       }
+#line 666 "../src/contacts-linking.vala"
+       _data_->_tmp63_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 666 "../src/contacts-linking.vala"
+       _data_->other_personas = _data_->_tmp63_;
+#line 7909 "contacts-linking.c"
+       {
+#line 667 "../src/contacts-linking.vala"
+               _data_->_tmp64_ = folks_individual_get_personas (_data_->individual);
+#line 667 "../src/contacts-linking.vala"
+               _data_->_tmp65_ = _data_->_tmp64_;
+#line 667 "../src/contacts-linking.vala"
+               _data_->_tmp66_ = gee_iterable_iterator ((GeeIterable*) _data_->_tmp65_);
+#line 667 "../src/contacts-linking.vala"
+               _data_->_p3_it = _data_->_tmp66_;
+#line 667 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 667 "../src/contacts-linking.vala"
+                       _data_->_tmp67_ = _data_->_p3_it;
+#line 667 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp67_)) {
+#line 667 "../src/contacts-linking.vala"
+                               break;
+#line 7927 "contacts-linking.c"
+                       }
+#line 667 "../src/contacts-linking.vala"
+                       _data_->_tmp68_ = _data_->_p3_it;
+#line 667 "../src/contacts-linking.vala"
+                       _data_->_tmp69_ = gee_iterator_get (_data_->_tmp68_);
+#line 667 "../src/contacts-linking.vala"
+                       _data_->p3 = (FolksPersona*) _data_->_tmp69_;
+#line 668 "../src/contacts-linking.vala"
+                       _data_->_tmp71_ = _data_->p3;
+#line 668 "../src/contacts-linking.vala"
+                       if (_data_->_tmp71_ != _data_->persona_to_unlink) {
+#line 669 "../src/contacts-linking.vala"
+                               _data_->_tmp72_ = _data_->p3;
+#line 669 "../src/contacts-linking.vala"
+                               _data_->_tmp73_ = _data_->main_persona;
+#line 669 "../src/contacts-linking.vala"
+                               _data_->_tmp70_ = _data_->_tmp72_ != _data_->_tmp73_;
+#line 7945 "contacts-linking.c"
+                       } else {
+#line 668 "../src/contacts-linking.vala"
+                               _data_->_tmp70_ = FALSE;
+#line 7949 "contacts-linking.c"
+                       }
+#line 668 "../src/contacts-linking.vala"
+                       if (_data_->_tmp70_) {
+#line 670 "../src/contacts-linking.vala"
+                               _data_->_tmp74_ = _data_->other_personas;
+#line 670 "../src/contacts-linking.vala"
+                               _data_->_tmp75_ = _data_->p3;
+#line 670 "../src/contacts-linking.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _data_->_tmp74_, 
_data_->_tmp75_);
+#line 7959 "contacts-linking.c"
+                       }
+#line 667 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->p3);
+#line 7963 "contacts-linking.c"
+               }
+#line 667 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_p3_it);
+#line 7967 "contacts-linking.c"
+       }
+#line 675 "../src/contacts-linking.vala"
+       _data_->_tmp77_ = _data_->main_persona;
+#line 675 "../src/contacts-linking.vala"
+       if (_data_->_tmp77_ == NULL) {
+#line 675 "../src/contacts-linking.vala"
+               _data_->_tmp78_ = _data_->other_personas;
+#line 675 "../src/contacts-linking.vala"
+               _data_->_tmp79_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _data_->_tmp78_);
+#line 675 "../src/contacts-linking.vala"
+               _data_->_tmp80_ = _data_->_tmp79_;
+#line 675 "../src/contacts-linking.vala"
+               _data_->_tmp76_ = _data_->_tmp80_ > 1;
+#line 7981 "contacts-linking.c"
+       } else {
+#line 675 "../src/contacts-linking.vala"
+               _data_->_tmp76_ = FALSE;
+#line 7985 "contacts-linking.c"
+       }
+#line 675 "../src/contacts-linking.vala"
+       if (_data_->_tmp76_) {
+#line 676 "../src/contacts-linking.vala"
+               _data_->_tmp81_ = g_str_hash;
+#line 676 "../src/contacts-linking.vala"
+               _data_->_tmp82_ = g_str_equal;
+#line 676 "../src/contacts-linking.vala"
+               _data_->_tmp83_ = g_hash_table_new_full (_data_->_tmp81_, _data_->_tmp82_, _g_free0_, 
__vala_GValue_free0_);
+#line 676 "../src/contacts-linking.vala"
+               _data_->details = _data_->_tmp83_;
+#line 7997 "contacts-linking.c"
+               {
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp85_ = contacts_store_get_aggregator (_data_->store);
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp86_ = _data_->_tmp85_;
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp87_ = folks_individual_aggregator_get_primary_store (_data_->_tmp86_);
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp88_ = _data_->_tmp87_;
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp89_ = _data_->details;
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 678 "../src/contacts-linking.vala"
+                       folks_persona_store_add_persona_from_details (_data_->_tmp88_, _data_->_tmp89_, 
contacts_unlink_persona_ready, _data_);
+#line 678 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 8015 "contacts-linking.c"
+                       _state_1:
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp90_ = folks_persona_store_add_persona_from_details_finish 
(_data_->_tmp88_, _data_->_res_, &_data_->_inner_error0_);
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp84_ = _data_->_tmp90_;
+#line 678 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 8023 "contacts-linking.c"
+                               goto __catch22_g_error;
+                       }
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp91_ = _data_->_tmp84_;
+#line 678 "../src/contacts-linking.vala"
+                       _data_->_tmp84_ = NULL;
+#line 678 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->main_persona);
+#line 678 "../src/contacts-linking.vala"
+                       _data_->main_persona = _data_->_tmp91_;
+#line 679 "../src/contacts-linking.vala"
+                       _data_->_tmp92_ = _data_->main_persona;
+#line 679 "../src/contacts-linking.vala"
+                       _data_->_tmp93_ = folks_individual_get_display_name (_data_->individual);
+#line 679 "../src/contacts-linking.vala"
+                       _data_->_tmp94_ = _data_->_tmp93_;
+#line 679 "../src/contacts-linking.vala"
+                       _data_->_state_ = 2;
+#line 679 "../src/contacts-linking.vala"
+                       folks_name_details_change_full_name (G_TYPE_CHECK_INSTANCE_TYPE (_data_->_tmp92_, 
FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->_tmp92_) : NULL, _data_->_tmp94_, 
contacts_unlink_persona_ready, _data_);
+#line 679 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 8046 "contacts-linking.c"
+                       _state_2:
+#line 679 "../src/contacts-linking.vala"
+                       folks_name_details_change_full_name_finish (G_TYPE_CHECK_INSTANCE_TYPE 
(_data_->_tmp92_, FOLKS_TYPE_NAME_DETAILS) ? ((FolksNameDetails*) _data_->_tmp92_) : NULL, _data_->_res_, 
&_data_->_inner_error0_);
+#line 679 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 679 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_tmp84_);
+#line 8054 "contacts-linking.c"
+                               goto __catch22_g_error;
+                       }
+#line 680 "../src/contacts-linking.vala"
+                       _data_->_tmp95_ = _data_->operation;
+#line 680 "../src/contacts-linking.vala"
+                       _data_->_tmp96_ = _data_->main_persona;
+#line 680 "../src/contacts-linking.vala"
+                       contacts_link_operation_added_persona (_data_->_tmp95_, _data_->_tmp96_);
+#line 677 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_tmp84_);
+#line 8065 "contacts-linking.c"
+               }
+               goto __finally22;
+               __catch22_g_error:
+               {
+#line 677 "../src/contacts-linking.vala"
+                       _data_->e = _data_->_inner_error0_;
+#line 677 "../src/contacts-linking.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 682 "../src/contacts-linking.vala"
+                       _data_->_tmp97_ = _data_->e;
+#line 682 "../src/contacts-linking.vala"
+                       _data_->_tmp98_ = _data_->_tmp97_->message;
+#line 682 "../src/contacts-linking.vala"
+                       g_warning ("contacts-linking.vala:682: Unable to create new persona when unlinking" \
+": %s\n", _data_->_tmp98_);
+#line 683 "../src/contacts-linking.vala"
+                       _data_->result = _data_->operation;
+#line 683 "../src/contacts-linking.vala"
+                       _g_error_free0 (_data_->e);
+#line 683 "../src/contacts-linking.vala"
+                       _g_hash_table_unref0 (_data_->details);
+#line 683 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->other_personas);
+#line 683 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->main_persona);
+#line 683 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->main_persona_additions);
+#line 683 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->other_personas_removals);
+#line 683 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->persona_to_unlink_removals);
+#line 683 "../src/contacts-linking.vala"
+                       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 683 "../src/contacts-linking.vala"
+                       if (_data_->_state_ != 0) {
+#line 683 "../src/contacts-linking.vala"
+                               while (!g_task_get_completed (_data_->_async_result)) {
+#line 683 "../src/contacts-linking.vala"
+                                       g_main_context_iteration (g_task_get_context (_data_->_async_result), 
TRUE);
+#line 8104 "contacts-linking.c"
+                               }
+                       }
+#line 683 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 683 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 8111 "contacts-linking.c"
+               }
+               __finally22:
+#line 677 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 677 "../src/contacts-linking.vala"
+                       _g_hash_table_unref0 (_data_->details);
+#line 677 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->other_personas);
+#line 677 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->main_persona);
+#line 677 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->main_persona_additions);
+#line 677 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->operation);
+#line 677 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->other_personas_removals);
+#line 677 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->persona_to_unlink_removals);
+#line 677 "../src/contacts-linking.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 677 "../src/contacts-linking.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 677 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 677 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 8138 "contacts-linking.c"
+               }
+#line 675 "../src/contacts-linking.vala"
+               _g_hash_table_unref0 (_data_->details);
+#line 8142 "contacts-linking.c"
+       }
+#line 687 "../src/contacts-linking.vala"
+       g_object_set_data_full ((GObject*) _data_->persona_to_unlink, "contacts-new-contact", (gpointer) 
((gintptr) TRUE), NULL);
+#line 691 "../src/contacts-linking.vala"
+       _data_->_tmp99_ = _data_->main_persona;
+#line 691 "../src/contacts-linking.vala"
+       if (_data_->_tmp99_ != NULL) {
+#line 692 "../src/contacts-linking.vala"
+               _data_->_tmp100_ = _data_->main_persona;
+#line 692 "../src/contacts-linking.vala"
+               _data_->_tmp101_ = _data_->main_persona_additions;
+#line 692 "../src/contacts-linking.vala"
+               _data_->_tmp102_ = _data_->other_personas_removals;
+#line 692 "../src/contacts-linking.vala"
+               _data_->_tmp103_ = _data_->operation;
+#line 692 "../src/contacts-linking.vala"
+               _data_->_state_ = 3;
+#line 692 "../src/contacts-linking.vala"
+               contacts_persona_apply_attributes (_data_->_tmp100_, (GeeSet*) _data_->_tmp101_, (GeeSet*) 
_data_->_tmp102_, _data_->_tmp103_, contacts_unlink_persona_ready, _data_);
+#line 692 "../src/contacts-linking.vala"
+               return FALSE;
+#line 8164 "contacts-linking.c"
+               _state_3:
+#line 692 "../src/contacts-linking.vala"
+               contacts_persona_apply_attributes_finish (_data_->_res_);
+#line 8168 "contacts-linking.c"
+       }
+       {
+#line 693 "../src/contacts-linking.vala"
+               _data_->_tmp104_ = _data_->other_personas;
+#line 693 "../src/contacts-linking.vala"
+               _data_->_tmp105_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) 
_data_->_tmp104_);
+#line 693 "../src/contacts-linking.vala"
+               _data_->_p_it = _data_->_tmp105_;
+#line 693 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 693 "../src/contacts-linking.vala"
+                       _data_->_tmp106_ = _data_->_p_it;
+#line 693 "../src/contacts-linking.vala"
+                       if (!gee_iterator_next (_data_->_tmp106_)) {
+#line 693 "../src/contacts-linking.vala"
+                               break;
+#line 8185 "contacts-linking.c"
+                       }
+#line 693 "../src/contacts-linking.vala"
+                       _data_->_tmp107_ = _data_->_p_it;
+#line 693 "../src/contacts-linking.vala"
+                       _data_->_tmp108_ = gee_iterator_get (_data_->_tmp107_);
+#line 693 "../src/contacts-linking.vala"
+                       _data_->p = (FolksPersona*) _data_->_tmp108_;
+#line 694 "../src/contacts-linking.vala"
+                       _data_->_tmp109_ = _data_->p;
+#line 694 "../src/contacts-linking.vala"
+                       _data_->_tmp110_ = _data_->other_personas_removals;
+#line 694 "../src/contacts-linking.vala"
+                       _data_->_tmp111_ = _data_->operation;
+#line 694 "../src/contacts-linking.vala"
+                       _data_->_state_ = 4;
+#line 694 "../src/contacts-linking.vala"
+                       contacts_persona_apply_attributes (_data_->_tmp109_, NULL, (GeeSet*) 
_data_->_tmp110_, _data_->_tmp111_, contacts_unlink_persona_ready, _data_);
+#line 694 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 8205 "contacts-linking.c"
+                       _state_4:
+#line 694 "../src/contacts-linking.vala"
+                       contacts_persona_apply_attributes_finish (_data_->_res_);
+#line 693 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->p);
+#line 8211 "contacts-linking.c"
+               }
+#line 693 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_p_it);
+#line 8215 "contacts-linking.c"
+       }
+#line 697 "../src/contacts-linking.vala"
+       _data_->_tmp112_ = _data_->persona_to_unlink_removals;
+#line 697 "../src/contacts-linking.vala"
+       _data_->_tmp113_ = _data_->operation;
+#line 697 "../src/contacts-linking.vala"
+       _data_->_state_ = 5;
+#line 697 "../src/contacts-linking.vala"
+       contacts_persona_apply_attributes (_data_->persona_to_unlink, NULL, (GeeSet*) _data_->_tmp112_, 
_data_->_tmp113_, contacts_unlink_persona_ready, _data_);
+#line 697 "../src/contacts-linking.vala"
+       return FALSE;
+#line 8227 "contacts-linking.c"
+       _state_5:
+#line 697 "../src/contacts-linking.vala"
+       contacts_persona_apply_attributes_finish (_data_->_res_);
+#line 699 "../src/contacts-linking.vala"
+       g_object_set_data_full ((GObject*) _data_->persona_to_unlink, "contacts-new-contact", (gpointer) 
((gintptr) FALSE), NULL);
+#line 701 "../src/contacts-linking.vala"
+       _data_->result = _data_->operation;
+#line 701 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->other_personas);
+#line 701 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->main_persona);
+#line 701 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->main_persona_additions);
+#line 701 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->other_personas_removals);
+#line 701 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->persona_to_unlink_removals);
+#line 701 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 701 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 701 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 701 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 8253 "contacts-linking.c"
+               }
+       }
+#line 701 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 701 "../src/contacts-linking.vala"
+       return FALSE;
+#line 8260 "contacts-linking.c"
+}
+
+static inline gpointer
+contacts_link_operation2_get_instance_private (ContactsLinkOperation2* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsLinkOperation2_private_offset);
+}
+
+ContactsLinkOperation2*
+contacts_link_operation2_construct (GType object_type,
+                                    ContactsStore* contacts_store)
+{
+       ContactsLinkOperation2 * self = NULL;
+       ContactsStore* _tmp0_;
+       GeeLinkedList* _tmp1_;
+#line 711 "../src/contacts-linking.vala"
+       g_return_val_if_fail (contacts_store != NULL, NULL);
+#line 711 "../src/contacts-linking.vala"
+       self = (ContactsLinkOperation2*) g_object_new (object_type, NULL);
+#line 712 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (contacts_store);
+#line 712 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->contacts_store);
+#line 712 "../src/contacts-linking.vala"
+       self->priv->contacts_store = _tmp0_;
+#line 714 "../src/contacts-linking.vala"
+       _tmp1_ = gee_linked_list_new (GEE_TYPE_HASH_SET, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 
g_object_unref, NULL, NULL, NULL);
+#line 714 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->old_personas_distribution);
+#line 714 "../src/contacts-linking.vala"
+       self->priv->old_personas_distribution = _tmp1_;
+#line 711 "../src/contacts-linking.vala"
+       return self;
+#line 8294 "contacts-linking.c"
+}
+
+ContactsLinkOperation2*
+contacts_link_operation2_new (ContactsStore* contacts_store)
+{
+#line 711 "../src/contacts-linking.vala"
+       return contacts_link_operation2_construct (CONTACTS_TYPE_LINK_OPERATION2, contacts_store);
+#line 8302 "contacts-linking.c"
+}
+
+void
+contacts_link_operation2_add_persona_set (ContactsLinkOperation2* self,
+                                          GeeSet* persona_set)
+{
+       gint _tmp0_;
+       gint _tmp1_;
+#line 717 "../src/contacts-linking.vala"
+       g_return_if_fail (self != NULL);
+#line 717 "../src/contacts-linking.vala"
+       g_return_if_fail (persona_set != NULL);
+#line 718 "../src/contacts-linking.vala"
+       _tmp0_ = gee_collection_get_size ((GeeCollection*) persona_set);
+#line 718 "../src/contacts-linking.vala"
+       _tmp1_ = _tmp0_;
+#line 718 "../src/contacts-linking.vala"
+       if (_tmp1_ > 0) {
+#line 8321 "contacts-linking.c"
+               GeeHashSet* s = NULL;
+               GeeHashSet* _tmp2_;
+               GeeLinkedList* _tmp9_;
+               GeeHashSet* _tmp10_;
+#line 719 "../src/contacts-linking.vala"
+               _tmp2_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 719 "../src/contacts-linking.vala"
+               s = _tmp2_;
+#line 8330 "contacts-linking.c"
+               {
+                       GeeIterator* _p_it = NULL;
+                       GeeIterator* _tmp3_;
+#line 720 "../src/contacts-linking.vala"
+                       _tmp3_ = gee_iterable_iterator ((GeeIterable*) persona_set);
+#line 720 "../src/contacts-linking.vala"
+                       _p_it = _tmp3_;
+#line 720 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 8340 "contacts-linking.c"
+                               GeeIterator* _tmp4_;
+                               FolksPersona* p = NULL;
+                               GeeIterator* _tmp5_;
+                               gpointer _tmp6_;
+                               GeeHashSet* _tmp7_;
+                               FolksPersona* _tmp8_;
+#line 720 "../src/contacts-linking.vala"
+                               _tmp4_ = _p_it;
+#line 720 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_tmp4_)) {
+#line 720 "../src/contacts-linking.vala"
+                                       break;
+#line 8353 "contacts-linking.c"
+                               }
+#line 720 "../src/contacts-linking.vala"
+                               _tmp5_ = _p_it;
+#line 720 "../src/contacts-linking.vala"
+                               _tmp6_ = gee_iterator_get (_tmp5_);
+#line 720 "../src/contacts-linking.vala"
+                               p = (FolksPersona*) _tmp6_;
+#line 721 "../src/contacts-linking.vala"
+                               _tmp7_ = s;
+#line 721 "../src/contacts-linking.vala"
+                               _tmp8_ = p;
+#line 721 "../src/contacts-linking.vala"
+                               gee_abstract_collection_add ((GeeAbstractCollection*) _tmp7_, _tmp8_);
+#line 720 "../src/contacts-linking.vala"
+                               _g_object_unref0 (p);
+#line 8369 "contacts-linking.c"
+                       }
+#line 720 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_p_it);
+#line 8373 "contacts-linking.c"
+               }
+#line 723 "../src/contacts-linking.vala"
+               _tmp9_ = self->priv->old_personas_distribution;
+#line 723 "../src/contacts-linking.vala"
+               _tmp10_ = s;
+#line 723 "../src/contacts-linking.vala"
+               gee_abstract_collection_add ((GeeAbstractCollection*) _tmp9_, _tmp10_);
+#line 718 "../src/contacts-linking.vala"
+               _g_object_unref0 (s);
+#line 8383 "contacts-linking.c"
+       }
+}
+
+static void
+contacts_link_operation2_undo_data_free (gpointer _data)
+{
+       ContactsLinkOperation2UndoData* _data_;
+       _data_ = _data;
+#line 704 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->self);
+#line 704 "../src/contacts-linking.vala"
+       g_slice_free (ContactsLinkOperation2UndoData, _data_);
+#line 8396 "contacts-linking.c"
+}
+
+void
+contacts_link_operation2_undo (ContactsLinkOperation2* self,
+                               GAsyncReadyCallback _callback_,
+                               gpointer _user_data_)
+{
+       ContactsLinkOperation2UndoData* _data_;
+       ContactsLinkOperation2* _tmp0_;
+#line 704 "../src/contacts-linking.vala"
+       _data_ = g_slice_new0 (ContactsLinkOperation2UndoData);
+#line 704 "../src/contacts-linking.vala"
+       _data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
+#line 704 "../src/contacts-linking.vala"
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_link_operation2_undo_data_free);
+#line 704 "../src/contacts-linking.vala"
+       _tmp0_ = _g_object_ref0 (self);
+#line 704 "../src/contacts-linking.vala"
+       _data_->self = _tmp0_;
+#line 704 "../src/contacts-linking.vala"
+       contacts_link_operation2_undo_co (_data_);
+#line 8418 "contacts-linking.c"
+}
+
+void
+contacts_link_operation2_undo_finish (ContactsLinkOperation2* self,
+                                      GAsyncResult* _res_)
+{
+       ContactsLinkOperation2UndoData* _data_;
+#line 704 "../src/contacts-linking.vala"
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+#line 8428 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation2_undo_ready (GObject* source_object,
+                                     GAsyncResult* _res_,
+                                     gpointer _user_data_)
+{
+       ContactsLinkOperation2UndoData* _data_;
+#line 738 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 738 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 738 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 738 "../src/contacts-linking.vala"
+       contacts_link_operation2_undo_co (_data_);
+#line 8445 "contacts-linking.c"
+}
+
+static gboolean
+contacts_link_operation2_undo_co (ContactsLinkOperation2UndoData* _data_)
+{
+#line 727 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 727 "../src/contacts-linking.vala"
+               case 0:
+#line 8455 "contacts-linking.c"
+               goto _state_0;
+#line 727 "../src/contacts-linking.vala"
+               case 1:
+#line 8459 "contacts-linking.c"
+               goto _state_1;
+#line 727 "../src/contacts-linking.vala"
+               case 2:
+#line 8463 "contacts-linking.c"
+               goto _state_2;
+               default:
+#line 727 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 8468 "contacts-linking.c"
+       }
+       _state_0:
+#line 728 "../src/contacts-linking.vala"
+       _data_->ind = NULL;
+#line 729 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = _data_->self->priv->old_personas_distribution;
+#line 729 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _data_->_tmp0_);
+#line 729 "../src/contacts-linking.vala"
+       _data_->_tmp2_ = _data_->_tmp1_;
+#line 729 "../src/contacts-linking.vala"
+       if (_data_->_tmp2_ > 0) {
+#line 730 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = _data_->self->priv->old_personas_distribution;
+#line 730 "../src/contacts-linking.vala"
+               _data_->_tmp4_ = gee_linked_list_first (_data_->_tmp3_);
+#line 730 "../src/contacts-linking.vala"
+               _data_->ps = (GeeHashSet*) _data_->_tmp4_;
+#line 8487 "contacts-linking.c"
+               {
+#line 731 "../src/contacts-linking.vala"
+                       _data_->_tmp5_ = _data_->ps;
+#line 731 "../src/contacts-linking.vala"
+                       _data_->_tmp6_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) 
_data_->_tmp5_);
+#line 731 "../src/contacts-linking.vala"
+                       _data_->_p_it = _data_->_tmp6_;
+#line 731 "../src/contacts-linking.vala"
+                       while (TRUE) {
+#line 731 "../src/contacts-linking.vala"
+                               _data_->_tmp7_ = _data_->_p_it;
+#line 731 "../src/contacts-linking.vala"
+                               if (!gee_iterator_next (_data_->_tmp7_)) {
+#line 731 "../src/contacts-linking.vala"
+                                       break;
+#line 8503 "contacts-linking.c"
+                               }
+#line 731 "../src/contacts-linking.vala"
+                               _data_->_tmp8_ = _data_->_p_it;
+#line 731 "../src/contacts-linking.vala"
+                               _data_->_tmp9_ = gee_iterator_get (_data_->_tmp8_);
+#line 731 "../src/contacts-linking.vala"
+                               _data_->p = (FolksPersona*) _data_->_tmp9_;
+#line 732 "../src/contacts-linking.vala"
+                               _data_->_tmp10_ = _data_->p;
+#line 732 "../src/contacts-linking.vala"
+                               _data_->_tmp11_ = folks_persona_get_individual (_data_->_tmp10_);
+#line 732 "../src/contacts-linking.vala"
+                               _data_->_tmp12_ = _data_->_tmp11_;
+#line 732 "../src/contacts-linking.vala"
+                               _data_->_tmp13_ = _g_object_ref0 (_data_->_tmp12_);
+#line 732 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->ind);
+#line 732 "../src/contacts-linking.vala"
+                               _data_->ind = _data_->_tmp13_;
+#line 733 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->p);
+#line 733 "../src/contacts-linking.vala"
+                               break;
+#line 8527 "contacts-linking.c"
+                       }
+#line 731 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_p_it);
+#line 8531 "contacts-linking.c"
+               }
+#line 729 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->ps);
+#line 8535 "contacts-linking.c"
+       }
+#line 736 "../src/contacts-linking.vala"
+       _data_->_tmp14_ = _data_->ind;
+#line 736 "../src/contacts-linking.vala"
+       if (_data_->_tmp14_ != NULL) {
+#line 8541 "contacts-linking.c"
+               {
+#line 738 "../src/contacts-linking.vala"
+                       _data_->_tmp15_ = _data_->self->priv->contacts_store;
+#line 738 "../src/contacts-linking.vala"
+                       _data_->_tmp16_ = contacts_store_get_aggregator (_data_->_tmp15_);
+#line 738 "../src/contacts-linking.vala"
+                       _data_->_tmp17_ = _data_->_tmp16_;
+#line 738 "../src/contacts-linking.vala"
+                       _data_->_tmp18_ = _data_->ind;
+#line 738 "../src/contacts-linking.vala"
+                       _data_->_state_ = 1;
+#line 738 "../src/contacts-linking.vala"
+                       folks_individual_aggregator_unlink_individual (_data_->_tmp17_, _data_->_tmp18_, 
contacts_link_operation2_undo_ready, _data_);
+#line 738 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 8557 "contacts-linking.c"
+                       _state_1:
+#line 738 "../src/contacts-linking.vala"
+                       folks_individual_aggregator_unlink_individual_finish (_data_->_tmp17_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 738 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 8563 "contacts-linking.c"
+                               goto __catch23_g_error;
+                       }
+               }
+               goto __finally23;
+               __catch23_g_error:
+               {
+#line 737 "../src/contacts-linking.vala"
+                       _data_->e1 = _data_->_inner_error0_;
+#line 737 "../src/contacts-linking.vala"
+                       _data_->_inner_error0_ = NULL;
+#line 740 "../src/contacts-linking.vala"
+                       _data_->_tmp19_ = _data_->ind;
+#line 740 "../src/contacts-linking.vala"
+                       _data_->_tmp20_ = folks_individual_get_id (_data_->_tmp19_);
+#line 740 "../src/contacts-linking.vala"
+                       _data_->_tmp21_ = _data_->_tmp20_;
+#line 740 "../src/contacts-linking.vala"
+                       _data_->_tmp22_ = _data_->e1;
+#line 740 "../src/contacts-linking.vala"
+                       _data_->_tmp23_ = _data_->_tmp22_->message;
+#line 740 "../src/contacts-linking.vala"
+                       g_warning ("contacts-linking.vala:740: Error unlinking individual ‘%s’: %s", 
_data_->_tmp21_, _data_->_tmp23_);
+#line 737 "../src/contacts-linking.vala"
+                       _g_error_free0 (_data_->e1);
+#line 8588 "contacts-linking.c"
+               }
+               __finally23:
+#line 737 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 737 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->ind);
+#line 737 "../src/contacts-linking.vala"
+                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 737 "../src/contacts-linking.vala"
+                       g_clear_error (&_data_->_inner_error0_);
+#line 737 "../src/contacts-linking.vala"
+                       g_object_unref (_data_->_async_result);
+#line 737 "../src/contacts-linking.vala"
+                       return FALSE;
+#line 8603 "contacts-linking.c"
+               }
+       }
+       {
+#line 744 "../src/contacts-linking.vala"
+               _data_->_tmp24_ = _data_->self->priv->old_personas_distribution;
+#line 744 "../src/contacts-linking.vala"
+               _data_->_tmp25_ = _g_object_ref0 (_data_->_tmp24_);
+#line 744 "../src/contacts-linking.vala"
+               _data_->_ps_list = _data_->_tmp25_;
+#line 744 "../src/contacts-linking.vala"
+               _data_->_tmp26_ = _data_->_ps_list;
+#line 744 "../src/contacts-linking.vala"
+               _data_->_tmp27_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _data_->_tmp26_);
+#line 744 "../src/contacts-linking.vala"
+               _data_->_tmp28_ = _data_->_tmp27_;
+#line 744 "../src/contacts-linking.vala"
+               _data_->_ps_size = _data_->_tmp28_;
+#line 744 "../src/contacts-linking.vala"
+               _data_->_ps_index = -1;
+#line 744 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 744 "../src/contacts-linking.vala"
+                       _data_->_ps_index = _data_->_ps_index + 1;
+#line 744 "../src/contacts-linking.vala"
+                       if (!(_data_->_ps_index < _data_->_ps_size)) {
+#line 744 "../src/contacts-linking.vala"
+                               break;
+#line 8631 "contacts-linking.c"
+                       }
+#line 744 "../src/contacts-linking.vala"
+                       _data_->_tmp29_ = _data_->_ps_list;
+#line 744 "../src/contacts-linking.vala"
+                       _data_->_tmp30_ = gee_abstract_list_get ((GeeAbstractList*) _data_->_tmp29_, 
_data_->_ps_index);
+#line 744 "../src/contacts-linking.vala"
+                       _data_->_vala1_ps = (GeeHashSet*) _data_->_tmp30_;
+#line 8639 "contacts-linking.c"
+                       {
+#line 746 "../src/contacts-linking.vala"
+                               _data_->_tmp31_ = _data_->self->priv->contacts_store;
+#line 746 "../src/contacts-linking.vala"
+                               _data_->_tmp32_ = contacts_store_get_aggregator (_data_->_tmp31_);
+#line 746 "../src/contacts-linking.vala"
+                               _data_->_tmp33_ = _data_->_tmp32_;
+#line 746 "../src/contacts-linking.vala"
+                               _data_->_tmp34_ = _data_->_vala1_ps;
+#line 746 "../src/contacts-linking.vala"
+                               _data_->_state_ = 2;
+#line 746 "../src/contacts-linking.vala"
+                               folks_individual_aggregator_link_personas (_data_->_tmp33_, (GeeSet*) 
_data_->_tmp34_, contacts_link_operation2_undo_ready, _data_);
+#line 746 "../src/contacts-linking.vala"
+                               return FALSE;
+#line 8655 "contacts-linking.c"
+                               _state_2:
+#line 746 "../src/contacts-linking.vala"
+                               folks_individual_aggregator_link_personas_finish (_data_->_tmp33_, 
_data_->_res_, &_data_->_inner_error0_);
+#line 746 "../src/contacts-linking.vala"
+                               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 8661 "contacts-linking.c"
+                                       goto __catch24_g_error;
+                               }
+                       }
+                       goto __finally24;
+                       __catch24_g_error:
+                       {
+#line 745 "../src/contacts-linking.vala"
+                               _data_->_vala1_e1 = _data_->_inner_error0_;
+#line 745 "../src/contacts-linking.vala"
+                               _data_->_inner_error0_ = NULL;
+#line 748 "../src/contacts-linking.vala"
+                               _data_->_tmp35_ = _data_->_vala1_e1;
+#line 748 "../src/contacts-linking.vala"
+                               _data_->_tmp36_ = _data_->_tmp35_->message;
+#line 748 "../src/contacts-linking.vala"
+                               g_warning ("contacts-linking.vala:748: Error linking personas: %s", 
_data_->_tmp36_);
+#line 745 "../src/contacts-linking.vala"
+                               _g_error_free0 (_data_->_vala1_e1);
+#line 8680 "contacts-linking.c"
+                       }
+                       __finally24:
+#line 745 "../src/contacts-linking.vala"
+                       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 745 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_vala1_ps);
+#line 745 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->_ps_list);
+#line 745 "../src/contacts-linking.vala"
+                               _g_object_unref0 (_data_->ind);
+#line 745 "../src/contacts-linking.vala"
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, 
__LINE__, _data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 745 "../src/contacts-linking.vala"
+                               g_clear_error (&_data_->_inner_error0_);
+#line 745 "../src/contacts-linking.vala"
+                               g_object_unref (_data_->_async_result);
+#line 745 "../src/contacts-linking.vala"
+                               return FALSE;
+#line 8699 "contacts-linking.c"
+                       }
+#line 744 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->_vala1_ps);
+#line 8703 "contacts-linking.c"
+               }
+#line 744 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_ps_list);
+#line 8707 "contacts-linking.c"
+       }
+#line 727 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->ind);
+#line 727 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 727 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 727 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 727 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 8719 "contacts-linking.c"
+               }
+       }
+#line 727 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 727 "../src/contacts-linking.vala"
+       return FALSE;
+#line 8726 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation2_class_init (ContactsLinkOperation2Class * klass,
+                                     gpointer klass_data)
+{
+#line 704 "../src/contacts-linking.vala"
+       contacts_link_operation2_parent_class = g_type_class_peek_parent (klass);
+#line 704 "../src/contacts-linking.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsLinkOperation2_private_offset);
+#line 704 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_link_operation2_finalize;
+#line 8739 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation2_instance_init (ContactsLinkOperation2 * self,
+                                        gpointer klass)
+{
+#line 704 "../src/contacts-linking.vala"
+       self->priv = contacts_link_operation2_get_instance_private (self);
+#line 8748 "contacts-linking.c"
+}
+
+static void
+contacts_link_operation2_finalize (GObject * obj)
+{
+       ContactsLinkOperation2 * self;
+#line 704 "../src/contacts-linking.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_LINK_OPERATION2, ContactsLinkOperation2);
+#line 705 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->contacts_store);
+#line 709 "../src/contacts-linking.vala"
+       _g_object_unref0 (self->priv->old_personas_distribution);
+#line 704 "../src/contacts-linking.vala"
+       G_OBJECT_CLASS (contacts_link_operation2_parent_class)->finalize (obj);
+#line 8763 "contacts-linking.c"
+}
+
+static GType
+contacts_link_operation2_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsLinkOperation2Class), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_link_operation2_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsLinkOperation2), 0, (GInstanceInitFunc) contacts_link_operation2_instance_init, 
NULL };
+       GType contacts_link_operation2_type_id;
+       contacts_link_operation2_type_id = g_type_register_static (G_TYPE_OBJECT, "ContactsLinkOperation2", 
&g_define_type_info, 0);
+       ContactsLinkOperation2_private_offset = g_type_add_instance_private 
(contacts_link_operation2_type_id, sizeof (ContactsLinkOperation2Private));
+       return contacts_link_operation2_type_id;
+}
+
+GType
+contacts_link_operation2_get_type (void)
+{
+       static volatile gsize contacts_link_operation2_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_link_operation2_type_id__volatile)) {
+               GType contacts_link_operation2_type_id;
+               contacts_link_operation2_type_id = contacts_link_operation2_get_type_once ();
+               g_once_init_leave (&contacts_link_operation2_type_id__volatile, 
contacts_link_operation2_type_id);
+       }
+       return contacts_link_operation2_type_id__volatile;
+}
+
+static void
+contacts_link_contacts_list_data_free (gpointer _data)
+{
+       ContactsLinkContactsListData* _data_;
+       _data_ = _data;
+       _g_object_unref0 (_data_->contact_list);
+       _g_object_unref0 (_data_->contacts_store);
+       _g_object_unref0 (_data_->result);
+       g_slice_free (ContactsLinkContactsListData, _data_);
+}
+
+void
+contacts_link_contacts_list (GeeLinkedList* contact_list,
+                             ContactsStore* contacts_store,
+                             GAsyncReadyCallback _callback_,
+                             gpointer _user_data_)
+{
+       ContactsLinkContactsListData* _data_;
+       GeeLinkedList* _tmp0_;
+       ContactsStore* _tmp1_;
+       _data_ = g_slice_new0 (ContactsLinkContactsListData);
+       _data_->_async_result = g_task_new (NULL, NULL, _callback_, _user_data_);
+       g_task_set_task_data (_data_->_async_result, _data_, contacts_link_contacts_list_data_free);
+       _tmp0_ = _g_object_ref0 (contact_list);
+       _g_object_unref0 (_data_->contact_list);
+       _data_->contact_list = _tmp0_;
+       _tmp1_ = _g_object_ref0 (contacts_store);
+       _g_object_unref0 (_data_->contacts_store);
+       _data_->contacts_store = _tmp1_;
+       contacts_link_contacts_list_co (_data_);
+}
+
+ContactsLinkOperation2*
+contacts_link_contacts_list_finish (GAsyncResult* _res_)
+{
+       ContactsLinkOperation2* result;
+       ContactsLinkContactsListData* _data_;
+       _data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
+       result = _data_->result;
+       _data_->result = NULL;
+       return result;
+}
+
+static void
+contacts_link_contacts_list_ready (GObject* source_object,
+                                   GAsyncResult* _res_,
+                                   gpointer _user_data_)
+{
+       ContactsLinkContactsListData* _data_;
+#line 765 "../src/contacts-linking.vala"
+       _data_ = _user_data_;
+#line 765 "../src/contacts-linking.vala"
+       _data_->_source_object_ = source_object;
+#line 765 "../src/contacts-linking.vala"
+       _data_->_res_ = _res_;
+#line 765 "../src/contacts-linking.vala"
+       contacts_link_contacts_list_co (_data_);
+#line 8845 "contacts-linking.c"
+}
+
+static gboolean
+contacts_link_contacts_list_co (ContactsLinkContactsListData* _data_)
+{
+#line 754 "../src/contacts-linking.vala"
+       switch (_data_->_state_) {
+#line 754 "../src/contacts-linking.vala"
+               case 0:
+#line 8855 "contacts-linking.c"
+               goto _state_0;
+#line 754 "../src/contacts-linking.vala"
+               case 1:
+#line 8859 "contacts-linking.c"
+               goto _state_1;
+               default:
+#line 754 "../src/contacts-linking.vala"
+               g_assert_not_reached ();
+#line 8864 "contacts-linking.c"
+       }
+       _state_0:
+#line 755 "../src/contacts-linking.vala"
+       _data_->_tmp0_ = contacts_link_operation2_new (_data_->contacts_store);
+#line 755 "../src/contacts-linking.vala"
+       _data_->operation = _data_->_tmp0_;
+#line 757 "../src/contacts-linking.vala"
+       _data_->_tmp1_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 757 "../src/contacts-linking.vala"
+       _data_->all_personas = _data_->_tmp1_;
+#line 8875 "contacts-linking.c"
+       {
+#line 758 "../src/contacts-linking.vala"
+               _data_->_tmp2_ = _g_object_ref0 (_data_->contact_list);
+#line 758 "../src/contacts-linking.vala"
+               _data_->_i_list = _data_->_tmp2_;
+#line 758 "../src/contacts-linking.vala"
+               _data_->_tmp3_ = _data_->_i_list;
+#line 758 "../src/contacts-linking.vala"
+               _data_->_tmp4_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _data_->_tmp3_);
+#line 758 "../src/contacts-linking.vala"
+               _data_->_tmp5_ = _data_->_tmp4_;
+#line 758 "../src/contacts-linking.vala"
+               _data_->_i_size = _data_->_tmp5_;
+#line 758 "../src/contacts-linking.vala"
+               _data_->_i_index = -1;
+#line 758 "../src/contacts-linking.vala"
+               while (TRUE) {
+#line 758 "../src/contacts-linking.vala"
+                       _data_->_i_index = _data_->_i_index + 1;
+#line 758 "../src/contacts-linking.vala"
+                       if (!(_data_->_i_index < _data_->_i_size)) {
+#line 758 "../src/contacts-linking.vala"
+                               break;
+#line 8899 "contacts-linking.c"
+                       }
+#line 758 "../src/contacts-linking.vala"
+                       _data_->_tmp6_ = _data_->_i_list;
+#line 758 "../src/contacts-linking.vala"
+                       _data_->_tmp7_ = gee_abstract_list_get ((GeeAbstractList*) _data_->_tmp6_, 
_data_->_i_index);
+#line 758 "../src/contacts-linking.vala"
+                       _data_->i = (FolksIndividual*) _data_->_tmp7_;
+#line 759 "../src/contacts-linking.vala"
+                       _data_->_tmp8_ = _data_->i;
+#line 759 "../src/contacts-linking.vala"
+                       _data_->_tmp9_ = folks_individual_get_personas (_data_->_tmp8_);
+#line 759 "../src/contacts-linking.vala"
+                       _data_->_tmp10_ = _data_->_tmp9_;
+#line 759 "../src/contacts-linking.vala"
+                       _data_->_tmp11_ = _g_object_ref0 (_data_->_tmp10_);
+#line 759 "../src/contacts-linking.vala"
+                       _data_->ps = _data_->_tmp11_;
+#line 760 "../src/contacts-linking.vala"
+                       _data_->_tmp12_ = _data_->all_personas;
+#line 760 "../src/contacts-linking.vala"
+                       _data_->_tmp13_ = _data_->ps;
+#line 760 "../src/contacts-linking.vala"
+                       gee_collection_add_all ((GeeCollection*) _data_->_tmp12_, (GeeCollection*) 
_data_->_tmp13_);
+#line 761 "../src/contacts-linking.vala"
+                       _data_->_tmp14_ = _data_->operation;
+#line 761 "../src/contacts-linking.vala"
+                       _data_->_tmp15_ = _data_->ps;
+#line 761 "../src/contacts-linking.vala"
+                       contacts_link_operation2_add_persona_set (_data_->_tmp14_, _data_->_tmp15_);
+#line 758 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->ps);
+#line 758 "../src/contacts-linking.vala"
+                       _g_object_unref0 (_data_->i);
+#line 8933 "contacts-linking.c"
+               }
+#line 758 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->_i_list);
+#line 8937 "contacts-linking.c"
+       }
+       {
+#line 765 "../src/contacts-linking.vala"
+               _data_->_tmp16_ = contacts_store_get_aggregator (_data_->contacts_store);
+#line 765 "../src/contacts-linking.vala"
+               _data_->_tmp17_ = _data_->_tmp16_;
+#line 765 "../src/contacts-linking.vala"
+               _data_->_tmp18_ = _data_->all_personas;
+#line 765 "../src/contacts-linking.vala"
+               _data_->_state_ = 1;
+#line 765 "../src/contacts-linking.vala"
+               folks_individual_aggregator_link_personas (_data_->_tmp17_, (GeeSet*) _data_->_tmp18_, 
contacts_link_contacts_list_ready, _data_);
+#line 765 "../src/contacts-linking.vala"
+               return FALSE;
+#line 8952 "contacts-linking.c"
+               _state_1:
+#line 765 "../src/contacts-linking.vala"
+               folks_individual_aggregator_link_personas_finish (_data_->_tmp17_, _data_->_res_, 
&_data_->_inner_error0_);
+#line 765 "../src/contacts-linking.vala"
+               if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 8958 "contacts-linking.c"
+                       goto __catch25_g_error;
+               }
+       }
+       goto __finally25;
+       __catch25_g_error:
+       {
+#line 764 "../src/contacts-linking.vala"
+               _data_->e1 = _data_->_inner_error0_;
+#line 764 "../src/contacts-linking.vala"
+               _data_->_inner_error0_ = NULL;
+#line 767 "../src/contacts-linking.vala"
+               _data_->_tmp19_ = _data_->e1;
+#line 767 "../src/contacts-linking.vala"
+               _data_->_tmp20_ = _data_->_tmp19_->message;
+#line 767 "../src/contacts-linking.vala"
+               g_warning ("contacts-linking.vala:767: Error linking personas: %s", _data_->_tmp20_);
+#line 764 "../src/contacts-linking.vala"
+               _g_error_free0 (_data_->e1);
+#line 8977 "contacts-linking.c"
+       }
+       __finally25:
+#line 764 "../src/contacts-linking.vala"
+       if (G_UNLIKELY (_data_->_inner_error0_ != NULL)) {
+#line 764 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->all_personas);
+#line 764 "../src/contacts-linking.vala"
+               _g_object_unref0 (_data_->operation);
+#line 764 "../src/contacts-linking.vala"
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, 
_data_->_inner_error0_->message, g_quark_to_string (_data_->_inner_error0_->domain), 
_data_->_inner_error0_->code);
+#line 764 "../src/contacts-linking.vala"
+               g_clear_error (&_data_->_inner_error0_);
+#line 764 "../src/contacts-linking.vala"
+               g_object_unref (_data_->_async_result);
+#line 764 "../src/contacts-linking.vala"
+               return FALSE;
+#line 8994 "contacts-linking.c"
+       }
+#line 770 "../src/contacts-linking.vala"
+       _data_->result = _data_->operation;
+#line 770 "../src/contacts-linking.vala"
+       _g_object_unref0 (_data_->all_personas);
+#line 770 "../src/contacts-linking.vala"
+       g_task_return_pointer (_data_->_async_result, _data_, NULL);
+#line 770 "../src/contacts-linking.vala"
+       if (_data_->_state_ != 0) {
+#line 770 "../src/contacts-linking.vala"
+               while (!g_task_get_completed (_data_->_async_result)) {
+#line 770 "../src/contacts-linking.vala"
+                       g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
+#line 9008 "contacts-linking.c"
+               }
+       }
+#line 770 "../src/contacts-linking.vala"
+       g_object_unref (_data_->_async_result);
+#line 770 "../src/contacts-linking.vala"
+       return FALSE;
+#line 9015 "contacts-linking.c"
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-list-pane.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-list-pane.c
new file mode 100644
index 0000000..4f8d157
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-list-pane.c
@@ -0,0 +1,873 @@
+/* contacts-list-pane.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-list-pane.vala, do not modify */
+
+/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include "contacts.h"
+#include <folks/folks.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+#define CONTACTS_TYPE_LIST_PANE (contacts_list_pane_get_type ())
+#define CONTACTS_LIST_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LIST_PANE, 
ContactsListPane))
+#define CONTACTS_LIST_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_LIST_PANE, 
ContactsListPaneClass))
+#define CONTACTS_IS_LIST_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LIST_PANE))
+#define CONTACTS_IS_LIST_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_LIST_PANE))
+#define CONTACTS_LIST_PANE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_LIST_PANE, 
ContactsListPaneClass))
+
+typedef struct _ContactsListPane ContactsListPane;
+typedef struct _ContactsListPaneClass ContactsListPaneClass;
+typedef struct _ContactsListPanePrivate ContactsListPanePrivate;
+
+#define CONTACTS_TYPE_CONTACT_LIST (contacts_contact_list_get_type ())
+#define CONTACTS_CONTACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_LIST, 
ContactsContactList))
+#define CONTACTS_CONTACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_LIST, 
ContactsContactListClass))
+#define CONTACTS_IS_CONTACT_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_LIST))
+#define CONTACTS_IS_CONTACT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_LIST))
+#define CONTACTS_CONTACT_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_LIST, 
ContactsContactListClass))
+
+typedef struct _ContactsContactList ContactsContactList;
+typedef struct _ContactsContactListClass ContactsContactListClass;
+typedef enum  {
+       CONTACTS_UI_STATE_NORMAL,
+       CONTACTS_UI_STATE_SHOWING,
+       CONTACTS_UI_STATE_SELECTING,
+       CONTACTS_UI_STATE_UPDATING,
+       CONTACTS_UI_STATE_CREATING
+} ContactsUiState;
+
+#define CONTACTS_TYPE_UI_STATE (contacts_ui_state_get_type ())
+enum  {
+       CONTACTS_LIST_PANE_0_PROPERTY,
+       CONTACTS_LIST_PANE_STATE_PROPERTY,
+       CONTACTS_LIST_PANE_NUM_PROPERTIES
+};
+static GParamSpec* contacts_list_pane_properties[CONTACTS_LIST_PANE_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_SETTINGS (contacts_settings_get_type ())
+#define CONTACTS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETTINGS, ContactsSettings))
+#define CONTACTS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+#define CONTACTS_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+
+typedef struct _ContactsSettings ContactsSettings;
+typedef struct _ContactsSettingsClass ContactsSettingsClass;
+enum  {
+       CONTACTS_LIST_PANE_SELECTION_CHANGED_SIGNAL,
+       CONTACTS_LIST_PANE_LINK_CONTACTS_SIGNAL,
+       CONTACTS_LIST_PANE_DELETE_CONTACTS_SIGNAL,
+       CONTACTS_LIST_PANE_CONTACTS_MARKED_SIGNAL,
+       CONTACTS_LIST_PANE_NUM_SIGNALS
+};
+static guint contacts_list_pane_signals[CONTACTS_LIST_PANE_NUM_SIGNALS] = {0};
+
+struct _ContactsListPane {
+       GtkFrame parent_instance;
+       ContactsListPanePrivate * priv;
+       GtkSearchEntry* filter_entry;
+};
+
+struct _ContactsListPaneClass {
+       GtkFrameClass parent_class;
+};
+
+struct _ContactsListPanePrivate {
+       ContactsStore* store;
+       GtkScrolledWindow* contacts_list_container;
+       ContactsContactList* contacts_list;
+       FolksSimpleQuery* filter_query;
+       GtkButton* link_button;
+       GtkButton* delete_button;
+       GtkActionBar* actions_bar;
+       ContactsUiState _state;
+};
+
+static gint ContactsListPane_private_offset;
+static gpointer contacts_list_pane_parent_class = NULL;
+
+GType contacts_list_pane_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsListPane, g_object_unref)
+GType contacts_contact_list_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactList, g_object_unref)
+GType contacts_ui_state_get_type (void) G_GNUC_CONST;
+GType contacts_settings_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSettings, g_object_unref)
+ContactsListPane* contacts_list_pane_new (ContactsSettings* settings,
+                                          ContactsStore* contacts_store);
+ContactsListPane* contacts_list_pane_construct (GType object_type,
+                                                ContactsSettings* settings,
+                                                ContactsStore* contacts_store);
+static void contacts_list_pane_on_ui_state_changed (ContactsListPane* self,
+                                             GObject* obj,
+                                             GParamSpec* pspec);
+static void _contacts_list_pane_on_ui_state_changed_g_object_notify (GObject* _sender,
+                                                              GParamSpec* pspec,
+                                                              gpointer self);
+static gchar** _vala_array_dup1 (gchar** self,
+                          gint length);
+static void _vala_array_add1 (gchar** * array,
+                       gint* length,
+                       gint* size,
+                       gchar* value);
+ContactsContactList* contacts_contact_list_new (ContactsSettings* settings,
+                                                ContactsStore* store,
+                                                FolksQuery* query);
+ContactsContactList* contacts_contact_list_construct (GType object_type,
+                                                      ContactsSettings* settings,
+                                                      ContactsStore* store,
+                                                      FolksQuery* query);
+static void __lambda8_ (ContactsListPane* self,
+                 ContactsContactList* l,
+                 FolksIndividual* individual);
+static void ___lambda8__contacts_contact_list_selection_changed (ContactsContactList* _sender,
+                                                          FolksIndividual* individual,
+                                                          gpointer self);
+static void __lambda9_ (ContactsListPane* self,
+                 gint nr_contacts_marked);
+static void ___lambda9__contacts_contact_list_contacts_marked (ContactsContactList* _sender,
+                                                        gint contacts_marked,
+                                                        gpointer self);
+void contacts_list_pane_undo_deletion (ContactsListPane* self);
+ContactsUiState contacts_list_pane_get_state (ContactsListPane* self);
+gboolean contacts_ui_state_editing (ContactsUiState self);
+static void contacts_list_pane_filter_entry_changed (ContactsListPane* self,
+                                              GtkEditable* editable);
+static void _contacts_list_pane_filter_entry_changed_gtk_search_entry_search_changed (GtkSearchEntry* 
_sender,
+                                                                               gpointer self);
+void contacts_list_pane_select_contact (ContactsListPane* self,
+                                        FolksIndividual* individual);
+void contacts_contact_list_select_contact (ContactsContactList* self,
+                                           FolksIndividual* individual);
+void contacts_list_pane_hide_contact (ContactsListPane* self,
+                                      FolksIndividual* individual);
+void contacts_contact_list_hide_contact (ContactsContactList* self,
+                                         FolksIndividual* individual);
+static void contacts_list_pane_on_link_button_clicked (ContactsListPane* self,
+                                                GtkButton* link_button);
+GeeLinkedList* contacts_contact_list_get_marked_contacts (ContactsContactList* self);
+static void _contacts_list_pane_on_link_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                    gpointer self);
+static void contacts_list_pane_on_delete_button_clicked (ContactsListPane* self,
+                                                  GtkButton* delete_button);
+GeeLinkedList* contacts_contact_list_get_marked_contacts_and_hide (ContactsContactList* self);
+static void _contacts_list_pane_on_delete_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                      gpointer self);
+static void contacts_list_pane_real_get_preferred_width (GtkWidget* base,
+                                                  gint* minimum_width,
+                                                  gint* natural_width);
+void contacts_list_pane_set_state (ContactsListPane* self,
+                                   ContactsUiState value);
+static void contacts_list_pane_finalize (GObject * obj);
+static GType contacts_list_pane_get_type_once (void);
+static void _vala_contacts_list_pane_get_property (GObject * object,
+                                            guint property_id,
+                                            GValue * value,
+                                            GParamSpec * pspec);
+static void _vala_contacts_list_pane_set_property (GObject * object,
+                                            guint property_id,
+                                            const GValue * value,
+                                            GParamSpec * pspec);
+static void _vala_array_destroy (gpointer array,
+                          gint array_length,
+                          GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array,
+                       gint array_length,
+                       GDestroyNotify destroy_func);
+
+static inline gpointer
+contacts_list_pane_get_instance_private (ContactsListPane* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsListPane_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 52 "../src/contacts-list-pane.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 212 "contacts-list-pane.c"
+}
+
+static void
+_contacts_list_pane_on_ui_state_changed_g_object_notify (GObject* _sender,
+                                                         GParamSpec* pspec,
+                                                         gpointer self)
+{
+#line 53 "../src/contacts-list-pane.vala"
+       contacts_list_pane_on_ui_state_changed ((ContactsListPane*) self, _sender, pspec);
+#line 222 "contacts-list-pane.c"
+}
+
+static gchar**
+_vala_array_dup1 (gchar** self,
+                  gint length)
+{
+       gchar** result;
+       gint i;
+#line 56 "../src/contacts-list-pane.vala"
+       result = g_new0 (gchar*, length + 1);
+#line 56 "../src/contacts-list-pane.vala"
+       for (i = 0; i < length; i++) {
+#line 235 "contacts-list-pane.c"
+               gchar* _tmp0_;
+#line 56 "../src/contacts-list-pane.vala"
+               _tmp0_ = g_strdup (self[i]);
+#line 56 "../src/contacts-list-pane.vala"
+               result[i] = _tmp0_;
+#line 241 "contacts-list-pane.c"
+       }
+#line 56 "../src/contacts-list-pane.vala"
+       return result;
+#line 245 "contacts-list-pane.c"
+}
+
+static void
+_vala_array_add1 (gchar** * array,
+                  gint* length,
+                  gint* size,
+                  gchar* value)
+{
+#line 58 "../src/contacts-list-pane.vala"
+       if ((*length) == (*size)) {
+#line 58 "../src/contacts-list-pane.vala"
+               *size = (*size) ? (2 * (*size)) : 4;
+#line 58 "../src/contacts-list-pane.vala"
+               *array = g_renew (gchar*, *array, (*size) + 1);
+#line 260 "contacts-list-pane.c"
+       }
+#line 58 "../src/contacts-list-pane.vala"
+       (*array)[(*length)++] = value;
+#line 58 "../src/contacts-list-pane.vala"
+       (*array)[*length] = NULL;
+#line 266 "contacts-list-pane.c"
+}
+
+static void
+__lambda8_ (ContactsListPane* self,
+            ContactsContactList* l,
+            FolksIndividual* individual)
+{
+#line 67 "../src/contacts-list-pane.vala"
+       g_return_if_fail (l != NULL);
+#line 68 "../src/contacts-list-pane.vala"
+       g_signal_emit (self, contacts_list_pane_signals[CONTACTS_LIST_PANE_SELECTION_CHANGED_SIGNAL], 0, 
individual);
+#line 278 "contacts-list-pane.c"
+}
+
+static void
+___lambda8__contacts_contact_list_selection_changed (ContactsContactList* _sender,
+                                                     FolksIndividual* individual,
+                                                     gpointer self)
+{
+#line 67 "../src/contacts-list-pane.vala"
+       __lambda8_ ((ContactsListPane*) self, _sender, individual);
+#line 288 "contacts-list-pane.c"
+}
+
+static void
+__lambda9_ (ContactsListPane* self,
+            gint nr_contacts_marked)
+{
+       GtkButton* _tmp0_;
+       GtkButton* _tmp1_;
+#line 72 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->delete_button;
+#line 72 "../src/contacts-list-pane.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp0_, nr_contacts_marked > 0);
+#line 73 "../src/contacts-list-pane.vala"
+       _tmp1_ = self->priv->link_button;
+#line 73 "../src/contacts-list-pane.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp1_, nr_contacts_marked > 1);
+#line 74 "../src/contacts-list-pane.vala"
+       g_signal_emit (self, contacts_list_pane_signals[CONTACTS_LIST_PANE_CONTACTS_MARKED_SIGNAL], 0, 
nr_contacts_marked);
+#line 307 "contacts-list-pane.c"
+}
+
+static void
+___lambda9__contacts_contact_list_contacts_marked (ContactsContactList* _sender,
+                                                   gint contacts_marked,
+                                                   gpointer self)
+{
+#line 71 "../src/contacts-list-pane.vala"
+       __lambda9_ ((ContactsListPane*) self, contacts_marked);
+#line 317 "contacts-list-pane.c"
+}
+
+ContactsListPane*
+contacts_list_pane_construct (GType object_type,
+                              ContactsSettings* settings,
+                              ContactsStore* contacts_store)
+{
+       ContactsListPane * self = NULL;
+       ContactsStore* _tmp0_;
+       gchar** filtered_fields = NULL;
+       gchar** _tmp1_;
+       gint _tmp1__length1;
+       gint filtered_fields_length1;
+       gint _filtered_fields_size_;
+       gchar** _tmp5_;
+       gint _tmp5__length1;
+       FolksSimpleQuery* _tmp6_;
+       FolksSimpleQuery* _tmp7_;
+       ContactsContactList* _tmp8_;
+       ContactsContactList* _tmp9_;
+       GtkScrolledWindow* _tmp10_;
+       ContactsContactList* _tmp11_;
+       ContactsContactList* _tmp12_;
+       ContactsContactList* _tmp13_;
+#line 51 "../src/contacts-list-pane.vala"
+       g_return_val_if_fail (settings != NULL, NULL);
+#line 51 "../src/contacts-list-pane.vala"
+       g_return_val_if_fail (contacts_store != NULL, NULL);
+#line 51 "../src/contacts-list-pane.vala"
+       self = (ContactsListPane*) g_object_new (object_type, NULL);
+#line 52 "../src/contacts-list-pane.vala"
+       _tmp0_ = _g_object_ref0 (contacts_store);
+#line 52 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->store);
+#line 52 "../src/contacts-list-pane.vala"
+       self->priv->store = _tmp0_;
+#line 53 "../src/contacts-list-pane.vala"
+       g_signal_connect_object ((GObject*) self, "notify::state", (GCallback) 
_contacts_list_pane_on_ui_state_changed_g_object_notify, self, 0);
+#line 56 "../src/contacts-list-pane.vala"
+       _tmp1_ = (FOLKS_QUERY_MATCH_FIELDS_NAMES != NULL) ? _vala_array_dup1 (FOLKS_QUERY_MATCH_FIELDS_NAMES, 
G_N_ELEMENTS (FOLKS_QUERY_MATCH_FIELDS_NAMES)) : ((gpointer) FOLKS_QUERY_MATCH_FIELDS_NAMES);
+#line 56 "../src/contacts-list-pane.vala"
+       _tmp1__length1 = G_N_ELEMENTS (FOLKS_QUERY_MATCH_FIELDS_NAMES);
+#line 56 "../src/contacts-list-pane.vala"
+       filtered_fields = _tmp1_;
+#line 56 "../src/contacts-list-pane.vala"
+       filtered_fields_length1 = _tmp1__length1;
+#line 56 "../src/contacts-list-pane.vala"
+       _filtered_fields_size_ = filtered_fields_length1;
+#line 366 "contacts-list-pane.c"
+       {
+               const gchar** field_collection = NULL;
+               gint field_collection_length1 = 0;
+               gint _field_collection_size_ = 0;
+               gint field_it = 0;
+#line 57 "../src/contacts-list-pane.vala"
+               field_collection = FOLKS_QUERY_MATCH_FIELDS_ADDRESSES;
+#line 57 "../src/contacts-list-pane.vala"
+               field_collection_length1 = G_N_ELEMENTS (FOLKS_QUERY_MATCH_FIELDS_ADDRESSES);
+#line 57 "../src/contacts-list-pane.vala"
+               for (field_it = 0; field_it < field_collection_length1; field_it = field_it + 1) {
+#line 378 "contacts-list-pane.c"
+                       const gchar* field = NULL;
+#line 57 "../src/contacts-list-pane.vala"
+                       field = field_collection[field_it];
+#line 382 "contacts-list-pane.c"
+                       {
+                               gchar** _tmp2_;
+                               gint _tmp2__length1;
+                               const gchar* _tmp3_;
+                               gchar* _tmp4_;
+#line 58 "../src/contacts-list-pane.vala"
+                               _tmp2_ = filtered_fields;
+#line 58 "../src/contacts-list-pane.vala"
+                               _tmp2__length1 = filtered_fields_length1;
+#line 58 "../src/contacts-list-pane.vala"
+                               _tmp3_ = field;
+#line 58 "../src/contacts-list-pane.vala"
+                               _tmp4_ = g_strdup (_tmp3_);
+#line 58 "../src/contacts-list-pane.vala"
+                               _vala_array_add1 (&filtered_fields, &filtered_fields_length1, 
&_filtered_fields_size_, _tmp4_);
+#line 398 "contacts-list-pane.c"
+                       }
+               }
+       }
+#line 59 "../src/contacts-list-pane.vala"
+       _tmp5_ = filtered_fields;
+#line 59 "../src/contacts-list-pane.vala"
+       _tmp5__length1 = filtered_fields_length1;
+#line 59 "../src/contacts-list-pane.vala"
+       _tmp6_ = folks_simple_query_new ("", _tmp5_, _tmp5__length1);
+#line 59 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->filter_query);
+#line 59 "../src/contacts-list-pane.vala"
+       self->priv->filter_query = _tmp6_;
+#line 63 "../src/contacts-list-pane.vala"
+       _tmp7_ = self->priv->filter_query;
+#line 63 "../src/contacts-list-pane.vala"
+       _tmp8_ = contacts_contact_list_new (settings, contacts_store, (FolksQuery*) _tmp7_);
+#line 63 "../src/contacts-list-pane.vala"
+       g_object_ref_sink (_tmp8_);
+#line 63 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->contacts_list);
+#line 63 "../src/contacts-list-pane.vala"
+       self->priv->contacts_list = _tmp8_;
+#line 64 "../src/contacts-list-pane.vala"
+       _tmp9_ = self->priv->contacts_list;
+#line 64 "../src/contacts-list-pane.vala"
+       g_object_bind_property_with_closures ((GObject*) self, "state", (GObject*) _tmp9_, "state", 
G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new 
((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new 
((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 65 "../src/contacts-list-pane.vala"
+       _tmp10_ = self->priv->contacts_list_container;
+#line 65 "../src/contacts-list-pane.vala"
+       _tmp11_ = self->priv->contacts_list;
+#line 65 "../src/contacts-list-pane.vala"
+       gtk_container_add ((GtkContainer*) _tmp10_, (GtkWidget*) _tmp11_);
+#line 67 "../src/contacts-list-pane.vala"
+       _tmp12_ = self->priv->contacts_list;
+#line 67 "../src/contacts-list-pane.vala"
+       g_signal_connect_object (_tmp12_, "selection-changed", (GCallback) 
___lambda8__contacts_contact_list_selection_changed, self, 0);
+#line 71 "../src/contacts-list-pane.vala"
+       _tmp13_ = self->priv->contacts_list;
+#line 71 "../src/contacts-list-pane.vala"
+       g_signal_connect_object (_tmp13_, "contacts-marked", (GCallback) 
___lambda9__contacts_contact_list_contacts_marked, self, 0);
+#line 51 "../src/contacts-list-pane.vala"
+       filtered_fields = (_vala_array_free (filtered_fields, filtered_fields_length1, (GDestroyNotify) 
g_free), NULL);
+#line 51 "../src/contacts-list-pane.vala"
+       return self;
+#line 444 "contacts-list-pane.c"
+}
+
+ContactsListPane*
+contacts_list_pane_new (ContactsSettings* settings,
+                        ContactsStore* contacts_store)
+{
+#line 51 "../src/contacts-list-pane.vala"
+       return contacts_list_pane_construct (CONTACTS_TYPE_LIST_PANE, settings, contacts_store);
+#line 453 "contacts-list-pane.c"
+}
+
+void
+contacts_list_pane_undo_deletion (ContactsListPane* self)
+{
+       ContactsContactList* _tmp0_;
+#line 78 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 79 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->contacts_list;
+#line 79 "../src/contacts-list-pane.vala"
+       gtk_widget_show_all ((GtkWidget*) _tmp0_);
+#line 466 "contacts-list-pane.c"
+}
+
+static void
+contacts_list_pane_on_ui_state_changed (ContactsListPane* self,
+                                        GObject* obj,
+                                        GParamSpec* pspec)
+{
+       GtkSearchEntry* _tmp0_;
+       ContactsContactList* _tmp1_;
+       ContactsUiState _tmp2_;
+       GtkActionBar* _tmp3_;
+       ContactsUiState _tmp4_;
+#line 82 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 82 "../src/contacts-list-pane.vala"
+       g_return_if_fail (obj != NULL);
+#line 82 "../src/contacts-list-pane.vala"
+       g_return_if_fail (pspec != NULL);
+#line 84 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->filter_entry;
+#line 84 "../src/contacts-list-pane.vala"
+       _tmp1_ = self->priv->contacts_list;
+#line 84 "../src/contacts-list-pane.vala"
+       _tmp2_ = self->priv->_state;
+#line 84 "../src/contacts-list-pane.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp1_, !contacts_ui_state_editing (_tmp2_));
+#line 84 "../src/contacts-list-pane.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp0_, !contacts_ui_state_editing (_tmp2_));
+#line 88 "../src/contacts-list-pane.vala"
+       _tmp3_ = self->priv->actions_bar;
+#line 88 "../src/contacts-list-pane.vala"
+       _tmp4_ = self->priv->_state;
+#line 88 "../src/contacts-list-pane.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp3_, _tmp4_ == CONTACTS_UI_STATE_SELECTING);
+#line 501 "contacts-list-pane.c"
+}
+
+static void
+contacts_list_pane_filter_entry_changed (ContactsListPane* self,
+                                         GtkEditable* editable)
+{
+       FolksSimpleQuery* _tmp0_;
+       GtkSearchEntry* _tmp1_;
+       const gchar* _tmp2_;
+       const gchar* _tmp3_;
+#line 92 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 92 "../src/contacts-list-pane.vala"
+       g_return_if_fail (editable != NULL);
+#line 93 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->filter_query;
+#line 93 "../src/contacts-list-pane.vala"
+       _tmp1_ = self->filter_entry;
+#line 93 "../src/contacts-list-pane.vala"
+       _tmp2_ = gtk_entry_get_text ((GtkEntry*) _tmp1_);
+#line 93 "../src/contacts-list-pane.vala"
+       _tmp3_ = _tmp2_;
+#line 93 "../src/contacts-list-pane.vala"
+       folks_simple_query_set_query_string (_tmp0_, _tmp3_);
+#line 526 "contacts-list-pane.c"
+}
+
+static void
+_contacts_list_pane_filter_entry_changed_gtk_search_entry_search_changed (GtkSearchEntry* _sender,
+                                                                          gpointer self)
+{
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_filter_entry_changed ((ContactsListPane*) self, _sender);
+#line 535 "contacts-list-pane.c"
+}
+
+void
+contacts_list_pane_select_contact (ContactsListPane* self,
+                                   FolksIndividual* individual)
+{
+       ContactsContactList* _tmp0_;
+#line 96 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 97 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->contacts_list;
+#line 97 "../src/contacts-list-pane.vala"
+       contacts_contact_list_select_contact (_tmp0_, individual);
+#line 549 "contacts-list-pane.c"
+}
+
+void
+contacts_list_pane_hide_contact (ContactsListPane* self,
+                                 FolksIndividual* individual)
+{
+       ContactsContactList* _tmp0_;
+#line 100 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 101 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->contacts_list;
+#line 101 "../src/contacts-list-pane.vala"
+       contacts_contact_list_hide_contact (_tmp0_, individual);
+#line 563 "contacts-list-pane.c"
+}
+
+static void
+contacts_list_pane_on_link_button_clicked (ContactsListPane* self,
+                                           GtkButton* link_button)
+{
+       ContactsContactList* _tmp0_;
+       GeeLinkedList* _tmp1_;
+       GeeLinkedList* _tmp2_;
+#line 105 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 105 "../src/contacts-list-pane.vala"
+       g_return_if_fail (link_button != NULL);
+#line 106 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->contacts_list;
+#line 106 "../src/contacts-list-pane.vala"
+       _tmp1_ = contacts_contact_list_get_marked_contacts (_tmp0_);
+#line 106 "../src/contacts-list-pane.vala"
+       _tmp2_ = _tmp1_;
+#line 106 "../src/contacts-list-pane.vala"
+       g_signal_emit (self, contacts_list_pane_signals[CONTACTS_LIST_PANE_LINK_CONTACTS_SIGNAL], 0, _tmp2_);
+#line 106 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (_tmp2_);
+#line 587 "contacts-list-pane.c"
+}
+
+static void
+_contacts_list_pane_on_link_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                               gpointer self)
+{
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_on_link_button_clicked ((ContactsListPane*) self, _sender);
+#line 596 "contacts-list-pane.c"
+}
+
+static void
+contacts_list_pane_on_delete_button_clicked (ContactsListPane* self,
+                                             GtkButton* delete_button)
+{
+       ContactsContactList* _tmp0_;
+       GeeLinkedList* _tmp1_;
+       GeeLinkedList* _tmp2_;
+#line 110 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 110 "../src/contacts-list-pane.vala"
+       g_return_if_fail (delete_button != NULL);
+#line 111 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->contacts_list;
+#line 111 "../src/contacts-list-pane.vala"
+       _tmp1_ = contacts_contact_list_get_marked_contacts_and_hide (_tmp0_);
+#line 111 "../src/contacts-list-pane.vala"
+       _tmp2_ = _tmp1_;
+#line 111 "../src/contacts-list-pane.vala"
+       g_signal_emit (self, contacts_list_pane_signals[CONTACTS_LIST_PANE_DELETE_CONTACTS_SIGNAL], 0, 
_tmp2_);
+#line 111 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (_tmp2_);
+#line 620 "contacts-list-pane.c"
+}
+
+static void
+_contacts_list_pane_on_delete_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                 gpointer self)
+{
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_on_delete_button_clicked ((ContactsListPane*) self, _sender);
+#line 629 "contacts-list-pane.c"
+}
+
+static void
+contacts_list_pane_real_get_preferred_width (GtkWidget* base,
+                                             gint* minimum_width,
+                                             gint* natural_width)
+{
+       ContactsListPane * self;
+       gint _vala_minimum_width = 0;
+       gint _vala_natural_width = 0;
+#line 115 "../src/contacts-list-pane.vala"
+       self = (ContactsListPane*) base;
+#line 116 "../src/contacts-list-pane.vala"
+       _vala_natural_width = 300;
+#line 116 "../src/contacts-list-pane.vala"
+       _vala_minimum_width = _vala_natural_width;
+#line 115 "../src/contacts-list-pane.vala"
+       if (minimum_width) {
+#line 115 "../src/contacts-list-pane.vala"
+               *minimum_width = _vala_minimum_width;
+#line 650 "contacts-list-pane.c"
+       }
+#line 115 "../src/contacts-list-pane.vala"
+       if (natural_width) {
+#line 115 "../src/contacts-list-pane.vala"
+               *natural_width = _vala_natural_width;
+#line 656 "contacts-list-pane.c"
+       }
+}
+
+ContactsUiState
+contacts_list_pane_get_state (ContactsListPane* self)
+{
+       ContactsUiState result;
+       ContactsUiState _tmp0_;
+#line 44 "../src/contacts-list-pane.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 44 "../src/contacts-list-pane.vala"
+       _tmp0_ = self->priv->_state;
+#line 44 "../src/contacts-list-pane.vala"
+       result = _tmp0_;
+#line 44 "../src/contacts-list-pane.vala"
+       return result;
+#line 673 "contacts-list-pane.c"
+}
+
+void
+contacts_list_pane_set_state (ContactsListPane* self,
+                              ContactsUiState value)
+{
+#line 44 "../src/contacts-list-pane.vala"
+       g_return_if_fail (self != NULL);
+#line 44 "../src/contacts-list-pane.vala"
+       if (contacts_list_pane_get_state (self) != value) {
+#line 44 "../src/contacts-list-pane.vala"
+               self->priv->_state = value;
+#line 44 "../src/contacts-list-pane.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_list_pane_properties[CONTACTS_LIST_PANE_STATE_PROPERTY]);
+#line 688 "contacts-list-pane.c"
+       }
+}
+
+static void
+contacts_list_pane_class_init (ContactsListPaneClass * klass,
+                               gpointer klass_data)
+{
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_parent_class = g_type_class_peek_parent (klass);
+#line 24 "../src/contacts-list-pane.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsListPane_private_offset);
+#line 24 "../src/contacts-list-pane.vala"
+       ((GtkWidgetClass *) klass)->get_preferred_width = (void (*) (GtkWidget*, gint*, gint*)) 
contacts_list_pane_real_get_preferred_width;
+#line 24 "../src/contacts-list-pane.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_list_pane_get_property;
+#line 24 "../src/contacts-list-pane.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_list_pane_set_property;
+#line 24 "../src/contacts-list-pane.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_list_pane_finalize;
+#line 24 "../src/contacts-list-pane.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_LIST_PANE_STATE_PROPERTY, 
contacts_list_pane_properties[CONTACTS_LIST_PANE_STATE_PROPERTY] = g_param_spec_enum ("state", "state", 
"state", CONTACTS_TYPE_UI_STATE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-list-pane.ui");
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_signals[CONTACTS_LIST_PANE_SELECTION_CHANGED_SIGNAL] = g_signal_new 
("selection-changed", CONTACTS_TYPE_LIST_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, FOLKS_TYPE_INDIVIDUAL);
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_signals[CONTACTS_LIST_PANE_LINK_CONTACTS_SIGNAL] = g_signal_new ("link-contacts", 
CONTACTS_TYPE_LIST_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, 
GEE_TYPE_LINKED_LIST);
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_signals[CONTACTS_LIST_PANE_DELETE_CONTACTS_SIGNAL] = g_signal_new 
("delete-contacts", CONTACTS_TYPE_LIST_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, 
g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GEE_TYPE_LINKED_LIST);
+#line 24 "../src/contacts-list-pane.vala"
+       contacts_list_pane_signals[CONTACTS_LIST_PANE_CONTACTS_MARKED_SIGNAL] = g_signal_new 
("contacts-marked", CONTACTS_TYPE_LIST_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, 
G_TYPE_NONE, 1, G_TYPE_INT);
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "contacts_list_container", 
FALSE, ContactsListPane_private_offset + G_STRUCT_OFFSET (ContactsListPanePrivate, contacts_list_container));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "filter_entry", FALSE, 
G_STRUCT_OFFSET (ContactsListPane, filter_entry));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "link_button", FALSE, 
ContactsListPane_private_offset + G_STRUCT_OFFSET (ContactsListPanePrivate, link_button));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "delete_button", FALSE, 
ContactsListPane_private_offset + G_STRUCT_OFFSET (ContactsListPanePrivate, delete_button));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "actions_bar", FALSE, 
ContactsListPane_private_offset + G_STRUCT_OFFSET (ContactsListPanePrivate, actions_bar));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "filter_entry_changed", 
G_CALLBACK(_contacts_list_pane_filter_entry_changed_gtk_search_entry_search_changed));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_link_button_clicked", 
G_CALLBACK(_contacts_list_pane_on_link_button_clicked_gtk_button_clicked));
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_delete_button_clicked", 
G_CALLBACK(_contacts_list_pane_on_delete_button_clicked_gtk_button_clicked));
+#line 736 "contacts-list-pane.c"
+}
+
+static void
+contacts_list_pane_instance_init (ContactsListPane * self,
+                                  gpointer klass)
+{
+#line 24 "../src/contacts-list-pane.vala"
+       self->priv = contacts_list_pane_get_instance_private (self);
+#line 24 "../src/contacts-list-pane.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 747 "contacts-list-pane.c"
+}
+
+static void
+contacts_list_pane_finalize (GObject * obj)
+{
+       ContactsListPane * self;
+#line 24 "../src/contacts-list-pane.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_LIST_PANE, ContactsListPane);
+#line 25 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->store);
+#line 28 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->contacts_list_container);
+#line 29 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->contacts_list);
+#line 32 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->filter_entry);
+#line 33 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->filter_query);
+#line 36 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->link_button);
+#line 39 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->delete_button);
+#line 42 "../src/contacts-list-pane.vala"
+       _g_object_unref0 (self->priv->actions_bar);
+#line 24 "../src/contacts-list-pane.vala"
+       G_OBJECT_CLASS (contacts_list_pane_parent_class)->finalize (obj);
+#line 774 "contacts-list-pane.c"
+}
+
+static GType
+contacts_list_pane_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsListPaneClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_list_pane_class_init, (GClassFinalizeFunc) NULL, NULL, 
sizeof (ContactsListPane), 0, (GInstanceInitFunc) contacts_list_pane_instance_init, NULL };
+       GType contacts_list_pane_type_id;
+       contacts_list_pane_type_id = g_type_register_static (gtk_frame_get_type (), "ContactsListPane", 
&g_define_type_info, 0);
+       ContactsListPane_private_offset = g_type_add_instance_private (contacts_list_pane_type_id, sizeof 
(ContactsListPanePrivate));
+       return contacts_list_pane_type_id;
+}
+
+GType
+contacts_list_pane_get_type (void)
+{
+       static volatile gsize contacts_list_pane_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_list_pane_type_id__volatile)) {
+               GType contacts_list_pane_type_id;
+               contacts_list_pane_type_id = contacts_list_pane_get_type_once ();
+               g_once_init_leave (&contacts_list_pane_type_id__volatile, contacts_list_pane_type_id);
+       }
+       return contacts_list_pane_type_id__volatile;
+}
+
+static void
+_vala_contacts_list_pane_get_property (GObject * object,
+                                       guint property_id,
+                                       GValue * value,
+                                       GParamSpec * pspec)
+{
+       ContactsListPane * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_LIST_PANE, ContactsListPane);
+#line 24 "../src/contacts-list-pane.vala"
+       switch (property_id) {
+#line 24 "../src/contacts-list-pane.vala"
+               case CONTACTS_LIST_PANE_STATE_PROPERTY:
+#line 24 "../src/contacts-list-pane.vala"
+               g_value_set_enum (value, contacts_list_pane_get_state (self));
+#line 24 "../src/contacts-list-pane.vala"
+               break;
+#line 815 "contacts-list-pane.c"
+               default:
+#line 24 "../src/contacts-list-pane.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 24 "../src/contacts-list-pane.vala"
+               break;
+#line 821 "contacts-list-pane.c"
+       }
+}
+
+static void
+_vala_contacts_list_pane_set_property (GObject * object,
+                                       guint property_id,
+                                       const GValue * value,
+                                       GParamSpec * pspec)
+{
+       ContactsListPane * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_LIST_PANE, ContactsListPane);
+#line 24 "../src/contacts-list-pane.vala"
+       switch (property_id) {
+#line 24 "../src/contacts-list-pane.vala"
+               case CONTACTS_LIST_PANE_STATE_PROPERTY:
+#line 24 "../src/contacts-list-pane.vala"
+               contacts_list_pane_set_state (self, g_value_get_enum (value));
+#line 24 "../src/contacts-list-pane.vala"
+               break;
+#line 841 "contacts-list-pane.c"
+               default:
+#line 24 "../src/contacts-list-pane.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 24 "../src/contacts-list-pane.vala"
+               break;
+#line 847 "contacts-list-pane.c"
+       }
+}
+
+static void
+_vala_array_destroy (gpointer array,
+                     gint array_length,
+                     GDestroyNotify destroy_func)
+{
+       if ((array != NULL) && (destroy_func != NULL)) {
+               gint i;
+               for (i = 0; i < array_length; i = i + 1) {
+                       if (((gpointer*) array)[i] != NULL) {
+                               destroy_func (((gpointer*) array)[i]);
+                       }
+               }
+       }
+}
+
+static void
+_vala_array_free (gpointer array,
+                  gint array_length,
+                  GDestroyNotify destroy_func)
+{
+       _vala_array_destroy (array, array_length, destroy_func);
+       g_free (array);
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c
new file mode 100644
index 0000000..99abf8e
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-max-width-bin.c
@@ -0,0 +1,463 @@
+/* contacts-max-width-bin.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-max-width-bin.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <glib.h>
+#include <cairo.h>
+
+#define CONTACTS_TYPE_MAX_WIDTH_BIN (contacts_max_width_bin_get_type ())
+#define CONTACTS_MAX_WIDTH_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_MAX_WIDTH_BIN, 
ContactsMaxWidthBin))
+#define CONTACTS_MAX_WIDTH_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_MAX_WIDTH_BIN, 
ContactsMaxWidthBinClass))
+#define CONTACTS_IS_MAX_WIDTH_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_MAX_WIDTH_BIN))
+#define CONTACTS_IS_MAX_WIDTH_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_MAX_WIDTH_BIN))
+#define CONTACTS_MAX_WIDTH_BIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_MAX_WIDTH_BIN, ContactsMaxWidthBinClass))
+
+typedef struct _ContactsMaxWidthBin ContactsMaxWidthBin;
+typedef struct _ContactsMaxWidthBinClass ContactsMaxWidthBinClass;
+typedef struct _ContactsMaxWidthBinPrivate ContactsMaxWidthBinPrivate;
+enum  {
+       CONTACTS_MAX_WIDTH_BIN_0_PROPERTY,
+       CONTACTS_MAX_WIDTH_BIN_MAX_WIDTH_PROPERTY,
+       CONTACTS_MAX_WIDTH_BIN_NUM_PROPERTIES
+};
+static GParamSpec* contacts_max_width_bin_properties[CONTACTS_MAX_WIDTH_BIN_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+struct _ContactsMaxWidthBin {
+       GtkBin parent_instance;
+       ContactsMaxWidthBinPrivate * priv;
+};
+
+struct _ContactsMaxWidthBinClass {
+       GtkBinClass parent_class;
+};
+
+struct _ContactsMaxWidthBinPrivate {
+       gint _max_width;
+};
+
+static gint ContactsMaxWidthBin_private_offset;
+static gpointer contacts_max_width_bin_parent_class = NULL;
+
+GType contacts_max_width_bin_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsMaxWidthBin, g_object_unref)
+static void contacts_max_width_bin_real_get_preferred_height (GtkWidget* base,
+                                                       gint* minimum_height,
+                                                       gint* natural_height);
+static void contacts_max_width_bin_real_get_preferred_width (GtkWidget* base,
+                                                      gint* minimum_width,
+                                                      gint* natural_width);
+static void contacts_max_width_bin_real_size_allocate (GtkWidget* base,
+                                                GtkAllocation* allocation);
+gint contacts_max_width_bin_get_max_width (ContactsMaxWidthBin* self);
+ContactsMaxWidthBin* contacts_max_width_bin_new (void);
+ContactsMaxWidthBin* contacts_max_width_bin_construct (GType object_type);
+void contacts_max_width_bin_set_max_width (ContactsMaxWidthBin* self,
+                                           gint value);
+static void contacts_max_width_bin_finalize (GObject * obj);
+static GType contacts_max_width_bin_get_type_once (void);
+static void _vala_contacts_max_width_bin_get_property (GObject * object,
+                                                guint property_id,
+                                                GValue * value,
+                                                GParamSpec * pspec);
+static void _vala_contacts_max_width_bin_set_property (GObject * object,
+                                                guint property_id,
+                                                const GValue * value,
+                                                GParamSpec * pspec);
+
+static inline gpointer
+contacts_max_width_bin_get_instance_private (ContactsMaxWidthBin* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsMaxWidthBin_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 28 "../src/contacts-max-width-bin.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 98 "contacts-max-width-bin.c"
+}
+
+static void
+contacts_max_width_bin_real_get_preferred_height (GtkWidget* base,
+                                                  gint* minimum_height,
+                                                  gint* natural_height)
+{
+       ContactsMaxWidthBin * self;
+       gint _vala_minimum_height = 0;
+       gint _vala_natural_height = 0;
+       GtkWidget* child = NULL;
+       GtkWidget* _tmp0_;
+       GtkWidget* _tmp1_;
+       GtkWidget* _tmp2_;
+#line 27 "../src/contacts-max-width-bin.vala"
+       self = (ContactsMaxWidthBin*) base;
+#line 28 "../src/contacts-max-width-bin.vala"
+       _tmp0_ = gtk_bin_get_child ((GtkBin*) self);
+#line 28 "../src/contacts-max-width-bin.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 28 "../src/contacts-max-width-bin.vala"
+       child = _tmp1_;
+#line 29 "../src/contacts-max-width-bin.vala"
+       _tmp2_ = child;
+#line 29 "../src/contacts-max-width-bin.vala"
+       if (_tmp2_ != NULL) {
+#line 125 "contacts-max-width-bin.c"
+               gint min = 0;
+               gint nat = 0;
+               GtkWidget* _tmp3_;
+               gint _tmp4_ = 0;
+               gint _tmp5_ = 0;
+#line 31 "../src/contacts-max-width-bin.vala"
+               _tmp3_ = child;
+#line 31 "../src/contacts-max-width-bin.vala"
+               gtk_widget_get_preferred_height (_tmp3_, &_tmp4_, &_tmp5_);
+#line 31 "../src/contacts-max-width-bin.vala"
+               min = _tmp4_;
+#line 31 "../src/contacts-max-width-bin.vala"
+               nat = _tmp5_;
+#line 32 "../src/contacts-max-width-bin.vala"
+               _vala_minimum_height = min;
+#line 33 "../src/contacts-max-width-bin.vala"
+               _vala_natural_height = nat;
+#line 143 "contacts-max-width-bin.c"
+       } else {
+#line 35 "../src/contacts-max-width-bin.vala"
+               _vala_minimum_height = -1;
+#line 36 "../src/contacts-max-width-bin.vala"
+               _vala_natural_height = -1;
+#line 149 "contacts-max-width-bin.c"
+       }
+#line 27 "../src/contacts-max-width-bin.vala"
+       _g_object_unref0 (child);
+#line 27 "../src/contacts-max-width-bin.vala"
+       if (minimum_height) {
+#line 27 "../src/contacts-max-width-bin.vala"
+               *minimum_height = _vala_minimum_height;
+#line 157 "contacts-max-width-bin.c"
+       }
+#line 27 "../src/contacts-max-width-bin.vala"
+       if (natural_height) {
+#line 27 "../src/contacts-max-width-bin.vala"
+               *natural_height = _vala_natural_height;
+#line 163 "contacts-max-width-bin.c"
+       }
+}
+
+static void
+contacts_max_width_bin_real_get_preferred_width (GtkWidget* base,
+                                                 gint* minimum_width,
+                                                 gint* natural_width)
+{
+       ContactsMaxWidthBin * self;
+       gint _vala_minimum_width = 0;
+       gint _vala_natural_width = 0;
+       GtkWidget* child = NULL;
+       GtkWidget* _tmp0_;
+       GtkWidget* _tmp1_;
+       GtkWidget* _tmp2_;
+#line 40 "../src/contacts-max-width-bin.vala"
+       self = (ContactsMaxWidthBin*) base;
+#line 41 "../src/contacts-max-width-bin.vala"
+       _tmp0_ = gtk_bin_get_child ((GtkBin*) self);
+#line 41 "../src/contacts-max-width-bin.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 41 "../src/contacts-max-width-bin.vala"
+       child = _tmp1_;
+#line 42 "../src/contacts-max-width-bin.vala"
+       _tmp2_ = child;
+#line 42 "../src/contacts-max-width-bin.vala"
+       if (_tmp2_ != NULL) {
+#line 191 "contacts-max-width-bin.c"
+               gint min = 0;
+               gint nat = 0;
+               GtkWidget* _tmp3_;
+               gint _tmp4_ = 0;
+               gint _tmp5_ = 0;
+#line 44 "../src/contacts-max-width-bin.vala"
+               _tmp3_ = child;
+#line 44 "../src/contacts-max-width-bin.vala"
+               gtk_widget_get_preferred_width (_tmp3_, &_tmp4_, &_tmp5_);
+#line 44 "../src/contacts-max-width-bin.vala"
+               min = _tmp4_;
+#line 44 "../src/contacts-max-width-bin.vala"
+               nat = _tmp5_;
+#line 45 "../src/contacts-max-width-bin.vala"
+               _vala_minimum_width = min;
+#line 46 "../src/contacts-max-width-bin.vala"
+               _vala_natural_width = nat;
+#line 209 "contacts-max-width-bin.c"
+       } else {
+#line 48 "../src/contacts-max-width-bin.vala"
+               _vala_minimum_width = -1;
+#line 49 "../src/contacts-max-width-bin.vala"
+               _vala_natural_width = -1;
+#line 215 "contacts-max-width-bin.c"
+       }
+#line 40 "../src/contacts-max-width-bin.vala"
+       _g_object_unref0 (child);
+#line 40 "../src/contacts-max-width-bin.vala"
+       if (minimum_width) {
+#line 40 "../src/contacts-max-width-bin.vala"
+               *minimum_width = _vala_minimum_width;
+#line 223 "contacts-max-width-bin.c"
+       }
+#line 40 "../src/contacts-max-width-bin.vala"
+       if (natural_width) {
+#line 40 "../src/contacts-max-width-bin.vala"
+               *natural_width = _vala_natural_width;
+#line 229 "contacts-max-width-bin.c"
+       }
+}
+
+static void
+contacts_max_width_bin_real_size_allocate (GtkWidget* base,
+                                           GtkAllocation* allocation)
+{
+       ContactsMaxWidthBin * self;
+       GtkAllocation new_alloc = {0};
+       GtkAllocation _tmp0_;
+       GtkAllocation _tmp1_;
+       GtkAllocation _tmp2_;
+       gint _tmp3_;
+       GtkWidget* child = NULL;
+       GtkWidget* _tmp6_;
+       GtkWidget* _tmp7_;
+       GtkAllocation _tmp8_;
+#line 53 "../src/contacts-max-width-bin.vala"
+       self = (ContactsMaxWidthBin*) base;
+#line 53 "../src/contacts-max-width-bin.vala"
+       g_return_if_fail (allocation != NULL);
+#line 56 "../src/contacts-max-width-bin.vala"
+       _tmp0_ = *allocation;
+#line 56 "../src/contacts-max-width-bin.vala"
+       gtk_widget_set_allocation ((GtkWidget*) self, &_tmp0_);
+#line 57 "../src/contacts-max-width-bin.vala"
+       _tmp1_ = *allocation;
+#line 57 "../src/contacts-max-width-bin.vala"
+       new_alloc = _tmp1_;
+#line 58 "../src/contacts-max-width-bin.vala"
+       _tmp2_ = *allocation;
+#line 58 "../src/contacts-max-width-bin.vala"
+       _tmp3_ = self->priv->_max_width;
+#line 58 "../src/contacts-max-width-bin.vala"
+       if (_tmp2_.width > _tmp3_) {
+#line 265 "contacts-max-width-bin.c"
+               gint _tmp4_;
+               GtkAllocation _tmp5_;
+#line 59 "../src/contacts-max-width-bin.vala"
+               _tmp4_ = self->priv->_max_width;
+#line 59 "../src/contacts-max-width-bin.vala"
+               new_alloc.width = _tmp4_;
+#line 60 "../src/contacts-max-width-bin.vala"
+               _tmp5_ = *allocation;
+#line 60 "../src/contacts-max-width-bin.vala"
+               new_alloc.x = _tmp5_.x;
+#line 276 "contacts-max-width-bin.c"
+       }
+#line 63 "../src/contacts-max-width-bin.vala"
+       _tmp6_ = gtk_bin_get_child ((GtkBin*) self);
+#line 63 "../src/contacts-max-width-bin.vala"
+       _tmp7_ = _g_object_ref0 (_tmp6_);
+#line 63 "../src/contacts-max-width-bin.vala"
+       child = _tmp7_;
+#line 64 "../src/contacts-max-width-bin.vala"
+       _tmp8_ = new_alloc;
+#line 64 "../src/contacts-max-width-bin.vala"
+       gtk_widget_size_allocate (child, &_tmp8_);
+#line 53 "../src/contacts-max-width-bin.vala"
+       _g_object_unref0 (child);
+#line 290 "contacts-max-width-bin.c"
+}
+
+ContactsMaxWidthBin*
+contacts_max_width_bin_construct (GType object_type)
+{
+       ContactsMaxWidthBin * self = NULL;
+#line 23 "../src/contacts-max-width-bin.vala"
+       self = (ContactsMaxWidthBin*) g_object_new (object_type, NULL);
+#line 23 "../src/contacts-max-width-bin.vala"
+       return self;
+#line 301 "contacts-max-width-bin.c"
+}
+
+ContactsMaxWidthBin*
+contacts_max_width_bin_new (void)
+{
+#line 23 "../src/contacts-max-width-bin.vala"
+       return contacts_max_width_bin_construct (CONTACTS_TYPE_MAX_WIDTH_BIN);
+#line 309 "contacts-max-width-bin.c"
+}
+
+gint
+contacts_max_width_bin_get_max_width (ContactsMaxWidthBin* self)
+{
+       gint result;
+#line 25 "../src/contacts-max-width-bin.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 25 "../src/contacts-max-width-bin.vala"
+       result = self->priv->_max_width;
+#line 25 "../src/contacts-max-width-bin.vala"
+       return result;
+#line 322 "contacts-max-width-bin.c"
+}
+
+void
+contacts_max_width_bin_set_max_width (ContactsMaxWidthBin* self,
+                                      gint value)
+{
+#line 25 "../src/contacts-max-width-bin.vala"
+       g_return_if_fail (self != NULL);
+#line 25 "../src/contacts-max-width-bin.vala"
+       if (contacts_max_width_bin_get_max_width (self) != value) {
+#line 25 "../src/contacts-max-width-bin.vala"
+               self->priv->_max_width = value;
+#line 25 "../src/contacts-max-width-bin.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_max_width_bin_properties[CONTACTS_MAX_WIDTH_BIN_MAX_WIDTH_PROPERTY]);
+#line 337 "contacts-max-width-bin.c"
+       }
+}
+
+static void
+contacts_max_width_bin_class_init (ContactsMaxWidthBinClass * klass,
+                                   gpointer klass_data)
+{
+#line 23 "../src/contacts-max-width-bin.vala"
+       contacts_max_width_bin_parent_class = g_type_class_peek_parent (klass);
+#line 23 "../src/contacts-max-width-bin.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsMaxWidthBin_private_offset);
+#line 23 "../src/contacts-max-width-bin.vala"
+       ((GtkWidgetClass *) klass)->get_preferred_height = (void (*) (GtkWidget*, gint*, gint*)) 
contacts_max_width_bin_real_get_preferred_height;
+#line 23 "../src/contacts-max-width-bin.vala"
+       ((GtkWidgetClass *) klass)->get_preferred_width = (void (*) (GtkWidget*, gint*, gint*)) 
contacts_max_width_bin_real_get_preferred_width;
+#line 23 "../src/contacts-max-width-bin.vala"
+       ((GtkWidgetClass *) klass)->size_allocate = (void (*) (GtkWidget*, GtkAllocation*)) 
contacts_max_width_bin_real_size_allocate;
+#line 23 "../src/contacts-max-width-bin.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_max_width_bin_get_property;
+#line 23 "../src/contacts-max-width-bin.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_max_width_bin_set_property;
+#line 23 "../src/contacts-max-width-bin.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_max_width_bin_finalize;
+#line 23 "../src/contacts-max-width-bin.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_MAX_WIDTH_BIN_MAX_WIDTH_PROPERTY, 
contacts_max_width_bin_properties[CONTACTS_MAX_WIDTH_BIN_MAX_WIDTH_PROPERTY] = g_param_spec_int ("max-width", 
"max-width", "max-width", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | 
G_PARAM_WRITABLE));
+#line 363 "contacts-max-width-bin.c"
+}
+
+static void
+contacts_max_width_bin_instance_init (ContactsMaxWidthBin * self,
+                                      gpointer klass)
+{
+#line 23 "../src/contacts-max-width-bin.vala"
+       self->priv = contacts_max_width_bin_get_instance_private (self);
+#line 372 "contacts-max-width-bin.c"
+}
+
+static void
+contacts_max_width_bin_finalize (GObject * obj)
+{
+       ContactsMaxWidthBin * self;
+#line 23 "../src/contacts-max-width-bin.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_MAX_WIDTH_BIN, ContactsMaxWidthBin);
+#line 23 "../src/contacts-max-width-bin.vala"
+       G_OBJECT_CLASS (contacts_max_width_bin_parent_class)->finalize (obj);
+#line 383 "contacts-max-width-bin.c"
+}
+
+/**
+ * The MaxWidthBin is a very basic helper class to restrict a given widget's
+ * width to a given maximum. Set the widget as the child of this Bin to
+ * restrict its width.
+ */
+static GType
+contacts_max_width_bin_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsMaxWidthBinClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_max_width_bin_class_init, (GClassFinalizeFunc) 
NULL, NULL, sizeof (ContactsMaxWidthBin), 0, (GInstanceInitFunc) contacts_max_width_bin_instance_init, NULL };
+       GType contacts_max_width_bin_type_id;
+       contacts_max_width_bin_type_id = g_type_register_static (gtk_bin_get_type (), "ContactsMaxWidthBin", 
&g_define_type_info, 0);
+       ContactsMaxWidthBin_private_offset = g_type_add_instance_private (contacts_max_width_bin_type_id, 
sizeof (ContactsMaxWidthBinPrivate));
+       return contacts_max_width_bin_type_id;
+}
+
+GType
+contacts_max_width_bin_get_type (void)
+{
+       static volatile gsize contacts_max_width_bin_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_max_width_bin_type_id__volatile)) {
+               GType contacts_max_width_bin_type_id;
+               contacts_max_width_bin_type_id = contacts_max_width_bin_get_type_once ();
+               g_once_init_leave (&contacts_max_width_bin_type_id__volatile, contacts_max_width_bin_type_id);
+       }
+       return contacts_max_width_bin_type_id__volatile;
+}
+
+static void
+_vala_contacts_max_width_bin_get_property (GObject * object,
+                                           guint property_id,
+                                           GValue * value,
+                                           GParamSpec * pspec)
+{
+       ContactsMaxWidthBin * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_MAX_WIDTH_BIN, ContactsMaxWidthBin);
+#line 23 "../src/contacts-max-width-bin.vala"
+       switch (property_id) {
+#line 23 "../src/contacts-max-width-bin.vala"
+               case CONTACTS_MAX_WIDTH_BIN_MAX_WIDTH_PROPERTY:
+#line 23 "../src/contacts-max-width-bin.vala"
+               g_value_set_int (value, contacts_max_width_bin_get_max_width (self));
+#line 23 "../src/contacts-max-width-bin.vala"
+               break;
+#line 429 "contacts-max-width-bin.c"
+               default:
+#line 23 "../src/contacts-max-width-bin.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 23 "../src/contacts-max-width-bin.vala"
+               break;
+#line 435 "contacts-max-width-bin.c"
+       }
+}
+
+static void
+_vala_contacts_max_width_bin_set_property (GObject * object,
+                                           guint property_id,
+                                           const GValue * value,
+                                           GParamSpec * pspec)
+{
+       ContactsMaxWidthBin * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_MAX_WIDTH_BIN, ContactsMaxWidthBin);
+#line 23 "../src/contacts-max-width-bin.vala"
+       switch (property_id) {
+#line 23 "../src/contacts-max-width-bin.vala"
+               case CONTACTS_MAX_WIDTH_BIN_MAX_WIDTH_PROPERTY:
+#line 23 "../src/contacts-max-width-bin.vala"
+               contacts_max_width_bin_set_max_width (self, g_value_get_int (value));
+#line 23 "../src/contacts-max-width-bin.vala"
+               break;
+#line 455 "contacts-max-width-bin.c"
+               default:
+#line 23 "../src/contacts-max-width-bin.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 23 "../src/contacts-max-width-bin.vala"
+               break;
+#line 461 "contacts-max-width-bin.c"
+       }
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-settings.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-settings.c
new file mode 100644
index 0000000..fa6961b
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-settings.c
@@ -0,0 +1,302 @@
+/* contacts-settings.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-settings.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gio/gio.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#define CONTACTS_TYPE_SETTINGS (contacts_settings_get_type ())
+#define CONTACTS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETTINGS, ContactsSettings))
+#define CONTACTS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+#define CONTACTS_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+
+typedef struct _ContactsSettings ContactsSettings;
+typedef struct _ContactsSettingsClass ContactsSettingsClass;
+typedef struct _ContactsSettingsPrivate ContactsSettingsPrivate;
+enum  {
+       CONTACTS_SETTINGS_0_PROPERTY,
+       CONTACTS_SETTINGS_DID_INITIAL_SETUP_PROPERTY,
+       CONTACTS_SETTINGS_SORT_ON_SURNAME_PROPERTY,
+       CONTACTS_SETTINGS_NUM_PROPERTIES
+};
+static GParamSpec* contacts_settings_properties[CONTACTS_SETTINGS_NUM_PROPERTIES];
+
+#define CONTACTS_TYPE_APP (contacts_app_get_type ())
+#define CONTACTS_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_APP, ContactsApp))
+#define CONTACTS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_APP, ContactsAppClass))
+#define CONTACTS_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_APP))
+#define CONTACTS_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_APP))
+#define CONTACTS_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_APP, ContactsAppClass))
+
+typedef struct _ContactsApp ContactsApp;
+typedef struct _ContactsAppClass ContactsAppClass;
+
+struct _ContactsSettings {
+       GSettings parent_instance;
+       ContactsSettingsPrivate * priv;
+};
+
+struct _ContactsSettingsClass {
+       GSettingsClass parent_class;
+};
+
+static gpointer contacts_settings_parent_class = NULL;
+
+GType contacts_settings_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSettings, g_object_unref)
+#define CONTACTS_SETTINGS_DID_INITIAL_SETUP_KEY "did-initial-setup"
+#define CONTACTS_SETTINGS_SORT_ON_SURNAME_KEY "sort-on-surname"
+#define CONTACTS_SETTINGS_WINDOW_WIDTH_KEY "window-width"
+#define CONTACTS_SETTINGS_WINDOW_HEIGHT_KEY "window-height"
+#define CONTACTS_SETTINGS_WINDOW_MAXIMIZED_KEY "window-maximized"
+GType contacts_app_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsApp, g_object_unref)
+ContactsSettings* contacts_settings_new (ContactsApp* app);
+ContactsSettings* contacts_settings_construct (GType object_type,
+                                               ContactsApp* app);
+void contacts_settings_bind_default (ContactsSettings* self,
+                                     const gchar* key,
+                                     GObject* object,
+                                     const gchar* property);
+gboolean contacts_settings_get_did_initial_setup (ContactsSettings* self);
+void contacts_settings_set_did_initial_setup (ContactsSettings* self,
+                                              gboolean value);
+gboolean contacts_settings_get_sort_on_surname (ContactsSettings* self);
+void contacts_settings_set_sort_on_surname (ContactsSettings* self,
+                                            gboolean value);
+static GType contacts_settings_get_type_once (void);
+static void _vala_contacts_settings_get_property (GObject * object,
+                                           guint property_id,
+                                           GValue * value,
+                                           GParamSpec * pspec);
+static void _vala_contacts_settings_set_property (GObject * object,
+                                           guint property_id,
+                                           const GValue * value,
+                                           GParamSpec * pspec);
+
+ContactsSettings*
+contacts_settings_construct (GType object_type,
+                             ContactsApp* app)
+{
+       ContactsSettings * self = NULL;
+#line 39 "../src/contacts-settings.vala"
+       g_return_val_if_fail (app != NULL, NULL);
+#line 40 "../src/contacts-settings.vala"
+       self = (ContactsSettings*) g_object_new (object_type, "schema-id", "org.gnome.Contacts", NULL);
+#line 39 "../src/contacts-settings.vala"
+       return self;
+#line 111 "contacts-settings.c"
+}
+
+ContactsSettings*
+contacts_settings_new (ContactsApp* app)
+{
+#line 39 "../src/contacts-settings.vala"
+       return contacts_settings_construct (CONTACTS_TYPE_SETTINGS, app);
+#line 119 "contacts-settings.c"
+}
+
+void
+contacts_settings_bind_default (ContactsSettings* self,
+                                const gchar* key,
+                                GObject* object,
+                                const gchar* property)
+{
+#line 43 "../src/contacts-settings.vala"
+       g_return_if_fail (self != NULL);
+#line 43 "../src/contacts-settings.vala"
+       g_return_if_fail (key != NULL);
+#line 43 "../src/contacts-settings.vala"
+       g_return_if_fail (object != NULL);
+#line 43 "../src/contacts-settings.vala"
+       g_return_if_fail (property != NULL);
+#line 44 "../src/contacts-settings.vala"
+       g_settings_bind ((GSettings*) self, key, object, property, G_SETTINGS_BIND_DEFAULT);
+#line 138 "contacts-settings.c"
+}
+
+gboolean
+contacts_settings_get_did_initial_setup (ContactsSettings* self)
+{
+       gboolean result;
+#line 30 "../src/contacts-settings.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 30 "../src/contacts-settings.vala"
+       result = g_settings_get_boolean ((GSettings*) self, CONTACTS_SETTINGS_DID_INITIAL_SETUP_KEY);
+#line 30 "../src/contacts-settings.vala"
+       return result;
+#line 151 "contacts-settings.c"
+}
+
+void
+contacts_settings_set_did_initial_setup (ContactsSettings* self,
+                                         gboolean value)
+{
+#line 31 "../src/contacts-settings.vala"
+       g_return_if_fail (self != NULL);
+#line 31 "../src/contacts-settings.vala"
+       g_settings_set_boolean ((GSettings*) self, CONTACTS_SETTINGS_DID_INITIAL_SETUP_KEY, value);
+#line 31 "../src/contacts-settings.vala"
+       g_object_notify_by_pspec ((GObject *) self, 
contacts_settings_properties[CONTACTS_SETTINGS_DID_INITIAL_SETUP_PROPERTY]);
+#line 164 "contacts-settings.c"
+}
+
+gboolean
+contacts_settings_get_sort_on_surname (ContactsSettings* self)
+{
+       gboolean result;
+#line 35 "../src/contacts-settings.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 35 "../src/contacts-settings.vala"
+       result = g_settings_get_boolean ((GSettings*) self, CONTACTS_SETTINGS_SORT_ON_SURNAME_KEY);
+#line 35 "../src/contacts-settings.vala"
+       return result;
+#line 177 "contacts-settings.c"
+}
+
+void
+contacts_settings_set_sort_on_surname (ContactsSettings* self,
+                                       gboolean value)
+{
+#line 36 "../src/contacts-settings.vala"
+       g_return_if_fail (self != NULL);
+#line 36 "../src/contacts-settings.vala"
+       g_settings_set_boolean ((GSettings*) self, CONTACTS_SETTINGS_SORT_ON_SURNAME_KEY, value);
+#line 36 "../src/contacts-settings.vala"
+       g_object_notify_by_pspec ((GObject *) self, 
contacts_settings_properties[CONTACTS_SETTINGS_SORT_ON_SURNAME_PROPERTY]);
+#line 190 "contacts-settings.c"
+}
+
+static void
+contacts_settings_class_init (ContactsSettingsClass * klass,
+                              gpointer klass_data)
+{
+#line 21 "../src/contacts-settings.vala"
+       contacts_settings_parent_class = g_type_class_peek_parent (klass);
+#line 21 "../src/contacts-settings.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_settings_get_property;
+#line 21 "../src/contacts-settings.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_settings_set_property;
+#line 21 "../src/contacts-settings.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_SETTINGS_DID_INITIAL_SETUP_PROPERTY, 
contacts_settings_properties[CONTACTS_SETTINGS_DID_INITIAL_SETUP_PROPERTY] = g_param_spec_boolean 
("did-initial-setup", "did-initial-setup", "did-initial-setup", FALSE, G_PARAM_STATIC_STRINGS | 
G_PARAM_READABLE | G_PARAM_WRITABLE));
+#line 21 "../src/contacts-settings.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_SETTINGS_SORT_ON_SURNAME_PROPERTY, 
contacts_settings_properties[CONTACTS_SETTINGS_SORT_ON_SURNAME_PROPERTY] = g_param_spec_boolean 
("sort-on-surname", "sort-on-surname", "sort-on-surname", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | 
G_PARAM_WRITABLE));
+#line 207 "contacts-settings.c"
+}
+
+static void
+contacts_settings_instance_init (ContactsSettings * self,
+                                 gpointer klass)
+{
+}
+
+/**
+ * Provides a convenient interface to deal with the settings.
+ */
+static GType
+contacts_settings_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsSettingsClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_settings_class_init, (GClassFinalizeFunc) NULL, NULL, 
sizeof (ContactsSettings), 0, (GInstanceInitFunc) contacts_settings_instance_init, NULL };
+       GType contacts_settings_type_id;
+       contacts_settings_type_id = g_type_register_static (g_settings_get_type (), "ContactsSettings", 
&g_define_type_info, 0);
+       return contacts_settings_type_id;
+}
+
+GType
+contacts_settings_get_type (void)
+{
+       static volatile gsize contacts_settings_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_settings_type_id__volatile)) {
+               GType contacts_settings_type_id;
+               contacts_settings_type_id = contacts_settings_get_type_once ();
+               g_once_init_leave (&contacts_settings_type_id__volatile, contacts_settings_type_id);
+       }
+       return contacts_settings_type_id__volatile;
+}
+
+static void
+_vala_contacts_settings_get_property (GObject * object,
+                                      guint property_id,
+                                      GValue * value,
+                                      GParamSpec * pspec)
+{
+       ContactsSettings * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_SETTINGS, ContactsSettings);
+#line 21 "../src/contacts-settings.vala"
+       switch (property_id) {
+#line 21 "../src/contacts-settings.vala"
+               case CONTACTS_SETTINGS_DID_INITIAL_SETUP_PROPERTY:
+#line 21 "../src/contacts-settings.vala"
+               g_value_set_boolean (value, contacts_settings_get_did_initial_setup (self));
+#line 21 "../src/contacts-settings.vala"
+               break;
+#line 21 "../src/contacts-settings.vala"
+               case CONTACTS_SETTINGS_SORT_ON_SURNAME_PROPERTY:
+#line 21 "../src/contacts-settings.vala"
+               g_value_set_boolean (value, contacts_settings_get_sort_on_surname (self));
+#line 21 "../src/contacts-settings.vala"
+               break;
+#line 262 "contacts-settings.c"
+               default:
+#line 21 "../src/contacts-settings.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 21 "../src/contacts-settings.vala"
+               break;
+#line 268 "contacts-settings.c"
+       }
+}
+
+static void
+_vala_contacts_settings_set_property (GObject * object,
+                                      guint property_id,
+                                      const GValue * value,
+                                      GParamSpec * pspec)
+{
+       ContactsSettings * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_SETTINGS, ContactsSettings);
+#line 21 "../src/contacts-settings.vala"
+       switch (property_id) {
+#line 21 "../src/contacts-settings.vala"
+               case CONTACTS_SETTINGS_DID_INITIAL_SETUP_PROPERTY:
+#line 21 "../src/contacts-settings.vala"
+               contacts_settings_set_did_initial_setup (self, g_value_get_boolean (value));
+#line 21 "../src/contacts-settings.vala"
+               break;
+#line 21 "../src/contacts-settings.vala"
+               case CONTACTS_SETTINGS_SORT_ON_SURNAME_PROPERTY:
+#line 21 "../src/contacts-settings.vala"
+               contacts_settings_set_sort_on_surname (self, g_value_get_boolean (value));
+#line 21 "../src/contacts-settings.vala"
+               break;
+#line 294 "contacts-settings.c"
+               default:
+#line 21 "../src/contacts-settings.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 21 "../src/contacts-settings.vala"
+               break;
+#line 300 "contacts-settings.c"
+       }
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-setup-window.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-setup-window.c
new file mode 100644
index 0000000..c5687ac
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-setup-window.c
@@ -0,0 +1,491 @@
+/* contacts-setup-window.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-setup-window.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <handy.h>
+#include "contacts.h"
+#include <glib.h>
+#include <folks/folks.h>
+#include <folks/folks-eds.h>
+#include <config.h>
+
+#define CONTACTS_TYPE_SETUP_WINDOW (contacts_setup_window_get_type ())
+#define CONTACTS_SETUP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETUP_WINDOW, 
ContactsSetupWindow))
+#define CONTACTS_SETUP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETUP_WINDOW, 
ContactsSetupWindowClass))
+#define CONTACTS_IS_SETUP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETUP_WINDOW))
+#define CONTACTS_IS_SETUP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETUP_WINDOW))
+#define CONTACTS_SETUP_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETUP_WINDOW, 
ContactsSetupWindowClass))
+
+typedef struct _ContactsSetupWindow ContactsSetupWindow;
+typedef struct _ContactsSetupWindowClass ContactsSetupWindowClass;
+typedef struct _ContactsSetupWindowPrivate ContactsSetupWindowPrivate;
+
+#define CONTACTS_TYPE_ACCOUNTS_LIST (contacts_accounts_list_get_type ())
+#define CONTACTS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_ACCOUNTS_LIST, 
ContactsAccountsList))
+#define CONTACTS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_ACCOUNTS_LIST, 
ContactsAccountsListClass))
+#define CONTACTS_IS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_ACCOUNTS_LIST))
+#define CONTACTS_IS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_ACCOUNTS_LIST))
+#define CONTACTS_ACCOUNTS_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_ACCOUNTS_LIST, ContactsAccountsListClass))
+
+typedef struct _ContactsAccountsList ContactsAccountsList;
+typedef struct _ContactsAccountsListClass ContactsAccountsListClass;
+enum  {
+       CONTACTS_SETUP_WINDOW_0_PROPERTY,
+       CONTACTS_SETUP_WINDOW_NUM_PROPERTIES
+};
+static GParamSpec* contacts_setup_window_properties[CONTACTS_SETUP_WINDOW_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_APP (contacts_app_get_type ())
+#define CONTACTS_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_APP, ContactsApp))
+#define CONTACTS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_APP, ContactsAppClass))
+#define CONTACTS_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_APP))
+#define CONTACTS_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_APP))
+#define CONTACTS_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_APP, ContactsAppClass))
+
+typedef struct _ContactsApp ContactsApp;
+typedef struct _ContactsAppClass ContactsAppClass;
+typedef struct _Block23Data Block23Data;
+typedef struct _ContactsAccountsListPrivate ContactsAccountsListPrivate;
+enum  {
+       CONTACTS_SETUP_WINDOW_SETUP_DONE_SIGNAL,
+       CONTACTS_SETUP_WINDOW_NUM_SIGNALS
+};
+static guint contacts_setup_window_signals[CONTACTS_SETUP_WINDOW_NUM_SIGNALS] = {0};
+
+struct _ContactsSetupWindow {
+       GtkApplicationWindow parent_instance;
+       ContactsSetupWindowPrivate * priv;
+};
+
+struct _ContactsSetupWindowClass {
+       GtkApplicationWindowClass parent_class;
+};
+
+struct _ContactsSetupWindowPrivate {
+       HdyColumn* content;
+       GtkButton* setup_done_button;
+       ContactsAccountsList* setup_accounts_list;
+};
+
+struct _Block23Data {
+       int _ref_count_;
+       ContactsSetupWindow* self;
+       gulong id2;
+};
+
+struct _ContactsAccountsList {
+       GtkListBox parent_instance;
+       ContactsAccountsListPrivate * priv;
+       FolksPersonaStore* selected_store;
+};
+
+struct _ContactsAccountsListClass {
+       GtkListBoxClass parent_class;
+};
+
+static gint ContactsSetupWindow_private_offset;
+static gpointer contacts_setup_window_parent_class = NULL;
+
+GType contacts_setup_window_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSetupWindow, g_object_unref)
+GType contacts_accounts_list_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsAccountsList, g_object_unref)
+GType contacts_app_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsApp, g_object_unref)
+ContactsSetupWindow* contacts_setup_window_new (ContactsApp* app,
+                                                ContactsStore* store);
+ContactsSetupWindow* contacts_setup_window_construct (GType object_type,
+                                                      ContactsApp* app,
+                                                      ContactsStore* store);
+static Block23Data* block23_data_ref (Block23Data* _data23_);
+static void block23_data_unref (void * _userdata_);
+ContactsAccountsList* contacts_accounts_list_new (ContactsStore* contacts_store);
+ContactsAccountsList* contacts_accounts_list_construct (GType object_type,
+                                                        ContactsStore* contacts_store);
+static void __lambda69_ (ContactsSetupWindow* self);
+void contacts_accounts_list_update_contents (ContactsAccountsList* self,
+                                             gboolean select_active);
+static void ___lambda69__folks_backend_store_backend_available (FolksBackendStore* _sender,
+                                                         FolksBackend* backend,
+                                                         gpointer self);
+static void __lambda70_ (Block23Data* _data23_);
+static void ___lambda70__contacts_accounts_list_account_selected (ContactsAccountsList* _sender,
+                                                           gpointer self);
+static void contacts_setup_window_fill_accounts_list (ContactsSetupWindow* self,
+                                               ContactsStore* store);
+static void __lambda72_ (ContactsSetupWindow* self);
+static void ___lambda72__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void __lambda71_ (ContactsSetupWindow* self);
+static void ___lambda71__contacts_store_prepared (ContactsStore* _sender,
+                                           gpointer self);
+static void contacts_setup_window_finalize (GObject * obj);
+static GType contacts_setup_window_get_type_once (void);
+
+static inline gpointer
+contacts_setup_window_get_instance_private (ContactsSetupWindow* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsSetupWindow_private_offset);
+}
+
+static Block23Data*
+block23_data_ref (Block23Data* _data23_)
+{
+#line 38 "../src/contacts-setup-window.vala"
+       g_atomic_int_inc (&_data23_->_ref_count_);
+#line 38 "../src/contacts-setup-window.vala"
+       return _data23_;
+#line 158 "contacts-setup-window.c"
+}
+
+static void
+block23_data_unref (void * _userdata_)
+{
+       Block23Data* _data23_;
+       _data23_ = (Block23Data*) _userdata_;
+#line 38 "../src/contacts-setup-window.vala"
+       if (g_atomic_int_dec_and_test (&_data23_->_ref_count_)) {
+#line 168 "contacts-setup-window.c"
+               ContactsSetupWindow* self;
+#line 38 "../src/contacts-setup-window.vala"
+               self = _data23_->self;
+#line 38 "../src/contacts-setup-window.vala"
+               _g_object_unref0 (self);
+#line 38 "../src/contacts-setup-window.vala"
+               g_slice_free (Block23Data, _data23_);
+#line 176 "contacts-setup-window.c"
+       }
+}
+
+static void
+__lambda69_ (ContactsSetupWindow* self)
+{
+       ContactsAccountsList* _tmp0_;
+#line 47 "../src/contacts-setup-window.vala"
+       _tmp0_ = self->priv->setup_accounts_list;
+#line 47 "../src/contacts-setup-window.vala"
+       contacts_accounts_list_update_contents (_tmp0_, FALSE);
+#line 188 "contacts-setup-window.c"
+}
+
+static void
+___lambda69__folks_backend_store_backend_available (FolksBackendStore* _sender,
+                                                    FolksBackend* backend,
+                                                    gpointer self)
+{
+#line 46 "../src/contacts-setup-window.vala"
+       __lambda69_ ((ContactsSetupWindow*) self);
+#line 198 "contacts-setup-window.c"
+}
+
+static void
+__lambda70_ (Block23Data* _data23_)
+{
+       ContactsSetupWindow* self;
+       GtkButton* _tmp0_;
+       ContactsAccountsList* _tmp1_;
+#line 51 "../src/contacts-setup-window.vala"
+       self = _data23_->self;
+#line 52 "../src/contacts-setup-window.vala"
+       _tmp0_ = self->priv->setup_done_button;
+#line 52 "../src/contacts-setup-window.vala"
+       gtk_widget_set_sensitive ((GtkWidget*) _tmp0_, TRUE);
+#line 53 "../src/contacts-setup-window.vala"
+       _tmp1_ = self->priv->setup_accounts_list;
+#line 53 "../src/contacts-setup-window.vala"
+       g_signal_handler_disconnect ((GObject*) _tmp1_, _data23_->id2);
+#line 217 "contacts-setup-window.c"
+}
+
+static void
+___lambda70__contacts_accounts_list_account_selected (ContactsAccountsList* _sender,
+                                                      gpointer self)
+{
+#line 51 "../src/contacts-setup-window.vala"
+       __lambda70_ (self);
+#line 226 "contacts-setup-window.c"
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 59 "../src/contacts-setup-window.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 234 "contacts-setup-window.c"
+}
+
+static void
+__lambda72_ (ContactsSetupWindow* self)
+{
+       EdsfPersonaStore* selected_store = NULL;
+       ContactsAccountsList* _tmp0_;
+       FolksPersonaStore* _tmp1_;
+       EdsfPersonaStore* _tmp2_;
+#line 59 "../src/contacts-setup-window.vala"
+       _tmp0_ = self->priv->setup_accounts_list;
+#line 59 "../src/contacts-setup-window.vala"
+       _tmp1_ = _tmp0_->selected_store;
+#line 59 "../src/contacts-setup-window.vala"
+       _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, EDSF_TYPE_PERSONA_STORE) ? 
((EdsfPersonaStore*) _tmp1_) : NULL);
+#line 59 "../src/contacts-setup-window.vala"
+       selected_store = _tmp2_;
+#line 60 "../src/contacts-setup-window.vala"
+       g_signal_emit (self, contacts_setup_window_signals[CONTACTS_SETUP_WINDOW_SETUP_DONE_SIGNAL], 0, 
selected_store);
+#line 58 "../src/contacts-setup-window.vala"
+       _g_object_unref0 (selected_store);
+#line 256 "contacts-setup-window.c"
+}
+
+static void
+___lambda72__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 58 "../src/contacts-setup-window.vala"
+       __lambda72_ ((ContactsSetupWindow*) self);
+#line 265 "contacts-setup-window.c"
+}
+
+ContactsSetupWindow*
+contacts_setup_window_construct (GType object_type,
+                                 ContactsApp* app,
+                                 ContactsStore* store)
+{
+       ContactsSetupWindow * self = NULL;
+       Block23Data* _data23_;
+       ContactsAccountsList* _tmp0_;
+       ContactsAccountsList* _tmp1_;
+       ContactsAccountsList* _tmp2_;
+       HdyColumn* _tmp3_;
+       ContactsAccountsList* _tmp4_;
+       FolksBackendStore* _tmp5_;
+       FolksBackendStore* _tmp6_;
+       ContactsAccountsList* _tmp7_;
+       gulong _tmp8_;
+       GtkButton* _tmp9_;
+#line 38 "../src/contacts-setup-window.vala"
+       g_return_val_if_fail (app != NULL, NULL);
+#line 38 "../src/contacts-setup-window.vala"
+       g_return_val_if_fail (store != NULL, NULL);
+#line 38 "../src/contacts-setup-window.vala"
+       _data23_ = g_slice_new0 (Block23Data);
+#line 38 "../src/contacts-setup-window.vala"
+       _data23_->_ref_count_ = 1;
+#line 39 "../src/contacts-setup-window.vala"
+       self = (ContactsSetupWindow*) g_object_new (object_type, "application", app, NULL);
+#line 39 "../src/contacts-setup-window.vala"
+       _data23_->self = g_object_ref (self);
+#line 40 "../src/contacts-setup-window.vala"
+       _tmp0_ = contacts_accounts_list_new (store);
+#line 40 "../src/contacts-setup-window.vala"
+       g_object_ref_sink (_tmp0_);
+#line 40 "../src/contacts-setup-window.vala"
+       _g_object_unref0 (self->priv->setup_accounts_list);
+#line 40 "../src/contacts-setup-window.vala"
+       self->priv->setup_accounts_list = _tmp0_;
+#line 41 "../src/contacts-setup-window.vala"
+       _tmp1_ = self->priv->setup_accounts_list;
+#line 41 "../src/contacts-setup-window.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp1_, TRUE);
+#line 42 "../src/contacts-setup-window.vala"
+       _tmp2_ = self->priv->setup_accounts_list;
+#line 42 "../src/contacts-setup-window.vala"
+       gtk_widget_show ((GtkWidget*) _tmp2_);
+#line 43 "../src/contacts-setup-window.vala"
+       _tmp3_ = self->priv->content;
+#line 43 "../src/contacts-setup-window.vala"
+       _tmp4_ = self->priv->setup_accounts_list;
+#line 43 "../src/contacts-setup-window.vala"
+       gtk_container_add ((GtkContainer*) _tmp3_, (GtkWidget*) _tmp4_);
+#line 46 "../src/contacts-setup-window.vala"
+       _tmp5_ = contacts_store_get_backend_store (store);
+#line 46 "../src/contacts-setup-window.vala"
+       _tmp6_ = _tmp5_;
+#line 46 "../src/contacts-setup-window.vala"
+       g_signal_connect_object (_tmp6_, "backend-available", (GCallback) 
___lambda69__folks_backend_store_backend_available, self, 0);
+#line 50 "../src/contacts-setup-window.vala"
+       _data23_->id2 = (gulong) 0;
+#line 51 "../src/contacts-setup-window.vala"
+       _tmp7_ = self->priv->setup_accounts_list;
+#line 51 "../src/contacts-setup-window.vala"
+       _tmp8_ = g_signal_connect_data (_tmp7_, "account-selected", (GCallback) 
___lambda70__contacts_accounts_list_account_selected, block23_data_ref (_data23_), (GClosureNotify) 
block23_data_unref, 0);
+#line 51 "../src/contacts-setup-window.vala"
+       _data23_->id2 = _tmp8_;
+#line 56 "../src/contacts-setup-window.vala"
+       contacts_setup_window_fill_accounts_list (self, store);
+#line 58 "../src/contacts-setup-window.vala"
+       _tmp9_ = self->priv->setup_done_button;
+#line 58 "../src/contacts-setup-window.vala"
+       g_signal_connect_object (_tmp9_, "clicked", (GCallback) ___lambda72__gtk_button_clicked, self, 0);
+#line 64 "../src/contacts-setup-window.vala"
+       if (g_strcmp0 (PROFILE, "development") == 0) {
+#line 341 "contacts-setup-window.c"
+               GtkStyleContext* _tmp10_;
+#line 65 "../src/contacts-setup-window.vala"
+               _tmp10_ = gtk_widget_get_style_context ((GtkWidget*) self);
+#line 65 "../src/contacts-setup-window.vala"
+               gtk_style_context_add_class (_tmp10_, "devel");
+#line 347 "contacts-setup-window.c"
+       }
+#line 38 "../src/contacts-setup-window.vala"
+       block23_data_unref (_data23_);
+#line 38 "../src/contacts-setup-window.vala"
+       _data23_ = NULL;
+#line 38 "../src/contacts-setup-window.vala"
+       return self;
+#line 355 "contacts-setup-window.c"
+}
+
+ContactsSetupWindow*
+contacts_setup_window_new (ContactsApp* app,
+                           ContactsStore* store)
+{
+#line 38 "../src/contacts-setup-window.vala"
+       return contacts_setup_window_construct (CONTACTS_TYPE_SETUP_WINDOW, app, store);
+#line 364 "contacts-setup-window.c"
+}
+
+static void
+__lambda71_ (ContactsSetupWindow* self)
+{
+       ContactsAccountsList* _tmp0_;
+#line 75 "../src/contacts-setup-window.vala"
+       _tmp0_ = self->priv->setup_accounts_list;
+#line 75 "../src/contacts-setup-window.vala"
+       contacts_accounts_list_update_contents (_tmp0_, FALSE);
+#line 375 "contacts-setup-window.c"
+}
+
+static void
+___lambda71__contacts_store_prepared (ContactsStore* _sender,
+                                      gpointer self)
+{
+#line 74 "../src/contacts-setup-window.vala"
+       __lambda71_ ((ContactsSetupWindow*) self);
+#line 384 "contacts-setup-window.c"
+}
+
+static void
+contacts_setup_window_fill_accounts_list (ContactsSetupWindow* self,
+                                          ContactsStore* store)
+{
+       gboolean _tmp0_;
+       gboolean _tmp1_;
+#line 68 "../src/contacts-setup-window.vala"
+       g_return_if_fail (self != NULL);
+#line 68 "../src/contacts-setup-window.vala"
+       g_return_if_fail (store != NULL);
+#line 69 "../src/contacts-setup-window.vala"
+       _tmp0_ = contacts_store_get_is_prepared (store);
+#line 69 "../src/contacts-setup-window.vala"
+       _tmp1_ = _tmp0_;
+#line 69 "../src/contacts-setup-window.vala"
+       if (_tmp1_) {
+#line 403 "contacts-setup-window.c"
+               ContactsAccountsList* _tmp2_;
+#line 70 "../src/contacts-setup-window.vala"
+               _tmp2_ = self->priv->setup_accounts_list;
+#line 70 "../src/contacts-setup-window.vala"
+               contacts_accounts_list_update_contents (_tmp2_, FALSE);
+#line 71 "../src/contacts-setup-window.vala"
+               return;
+#line 411 "contacts-setup-window.c"
+       }
+#line 74 "../src/contacts-setup-window.vala"
+       g_signal_connect_object (store, "prepared", (GCallback) ___lambda71__contacts_store_prepared, self, 
0);
+#line 415 "contacts-setup-window.c"
+}
+
+static void
+contacts_setup_window_class_init (ContactsSetupWindowClass * klass,
+                                  gpointer klass_data)
+{
+#line 24 "../src/contacts-setup-window.vala"
+       contacts_setup_window_parent_class = g_type_class_peek_parent (klass);
+#line 24 "../src/contacts-setup-window.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsSetupWindow_private_offset);
+#line 24 "../src/contacts-setup-window.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_setup_window_finalize;
+#line 24 "../src/contacts-setup-window.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-setup-window.ui");
+#line 430 "contacts-setup-window.c"
+       /**
+          * Fired after the user has succesfully performed the setup proess.
+          */
+#line 24 "../src/contacts-setup-window.vala"
+       contacts_setup_window_signals[CONTACTS_SETUP_WINDOW_SETUP_DONE_SIGNAL] = g_signal_new ("setup-done", 
CONTACTS_TYPE_SETUP_WINDOW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 
1, EDSF_TYPE_PERSONA_STORE);
+#line 24 "../src/contacts-setup-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "content", FALSE, 
ContactsSetupWindow_private_offset + G_STRUCT_OFFSET (ContactsSetupWindowPrivate, content));
+#line 24 "../src/contacts-setup-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "setup_done_button", FALSE, 
ContactsSetupWindow_private_offset + G_STRUCT_OFFSET (ContactsSetupWindowPrivate, setup_done_button));
+#line 440 "contacts-setup-window.c"
+}
+
+static void
+contacts_setup_window_instance_init (ContactsSetupWindow * self,
+                                     gpointer klass)
+{
+#line 24 "../src/contacts-setup-window.vala"
+       self->priv = contacts_setup_window_get_instance_private (self);
+#line 24 "../src/contacts-setup-window.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 451 "contacts-setup-window.c"
+}
+
+static void
+contacts_setup_window_finalize (GObject * obj)
+{
+       ContactsSetupWindow * self;
+#line 24 "../src/contacts-setup-window.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_SETUP_WINDOW, ContactsSetupWindow);
+#line 26 "../src/contacts-setup-window.vala"
+       _g_object_unref0 (self->priv->content);
+#line 29 "../src/contacts-setup-window.vala"
+       _g_object_unref0 (self->priv->setup_done_button);
+#line 31 "../src/contacts-setup-window.vala"
+       _g_object_unref0 (self->priv->setup_accounts_list);
+#line 24 "../src/contacts-setup-window.vala"
+       G_OBJECT_CLASS (contacts_setup_window_parent_class)->finalize (obj);
+#line 468 "contacts-setup-window.c"
+}
+
+static GType
+contacts_setup_window_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsSetupWindowClass), (GBaseInitFunc) 
NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_setup_window_class_init, (GClassFinalizeFunc) NULL, 
NULL, sizeof (ContactsSetupWindow), 0, (GInstanceInitFunc) contacts_setup_window_instance_init, NULL };
+       GType contacts_setup_window_type_id;
+       contacts_setup_window_type_id = g_type_register_static (gtk_application_window_get_type (), 
"ContactsSetupWindow", &g_define_type_info, 0);
+       ContactsSetupWindow_private_offset = g_type_add_instance_private (contacts_setup_window_type_id, 
sizeof (ContactsSetupWindowPrivate));
+       return contacts_setup_window_type_id;
+}
+
+GType
+contacts_setup_window_get_type (void)
+{
+       static volatile gsize contacts_setup_window_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_setup_window_type_id__volatile)) {
+               GType contacts_setup_window_type_id;
+               contacts_setup_window_type_id = contacts_setup_window_get_type_once ();
+               g_once_init_leave (&contacts_setup_window_type_id__volatile, contacts_setup_window_type_id);
+       }
+       return contacts_setup_window_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-type-combo.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-type-combo.c
new file mode 100644
index 0000000..767c7e0
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-type-combo.c
@@ -0,0 +1,472 @@
+/* contacts-type-combo.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-type-combo.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include "contacts.h"
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <folks/folks.h>
+
+#define CONTACTS_TYPE_TYPECOMBO (contacts_typecombo_get_type ())
+#define CONTACTS_TYPECOMBO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPECOMBO, 
ContactsTypeCombo))
+#define CONTACTS_TYPECOMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_TYPECOMBO, 
ContactsTypeComboClass))
+#define CONTACTS_IS_TYPECOMBO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPECOMBO))
+#define CONTACTS_IS_TYPECOMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_TYPECOMBO))
+#define CONTACTS_TYPECOMBO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_TYPECOMBO, 
ContactsTypeComboClass))
+
+typedef struct _ContactsTypeCombo ContactsTypeCombo;
+typedef struct _ContactsTypeComboClass ContactsTypeComboClass;
+typedef struct _ContactsTypeComboPrivate ContactsTypeComboPrivate;
+enum  {
+       CONTACTS_TYPECOMBO_0_PROPERTY,
+       CONTACTS_TYPECOMBO_ACTIVE_DESCRIPTOR_PROPERTY,
+       CONTACTS_TYPECOMBO_NUM_PROPERTIES
+};
+static GParamSpec* contacts_typecombo_properties[CONTACTS_TYPECOMBO_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, 
__LINE__, G_STRFUNC, msg);
+#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, 
G_STRFUNC, msg); return; }
+#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning 
(G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
+#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, 
__LINE__, G_STRFUNC, msg);
+
+struct _ContactsTypeCombo {
+       GtkComboBox parent_instance;
+       ContactsTypeComboPrivate * priv;
+};
+
+struct _ContactsTypeComboClass {
+       GtkComboBoxClass parent_class;
+};
+
+struct _ContactsTypeComboPrivate {
+       ContactsTypeSet* type_set;
+};
+
+static gint ContactsTypeCombo_private_offset;
+static gpointer contacts_typecombo_parent_class = NULL;
+
+GType contacts_typecombo_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeCombo, g_object_unref)
+ContactsTypeCombo* contacts_typecombo_new (ContactsTypeSet* type_set);
+ContactsTypeCombo* contacts_typecombo_construct (GType object_type,
+                                                 ContactsTypeSet* type_set);
+static gboolean contacts_typecombo_is_separator (ContactsTypeCombo* self,
+                                          GtkTreeModel* model,
+                                          GtkTreeIter* iter);
+void contacts_typecombo_set_active_from_field_details (ContactsTypeCombo* self,
+                                                       FolksAbstractFieldDetails* details);
+void contacts_typecombo_set_active_descriptor (ContactsTypeCombo* self,
+                                               ContactsTypeDescriptor* value);
+void contacts_typecombo_set_active_from_vcard_type (ContactsTypeCombo* self,
+                                                    const gchar* type);
+ContactsTypeDescriptor* contacts_typecombo_get_active_descriptor (ContactsTypeCombo* self);
+static GObject * contacts_typecombo_constructor (GType type,
+                                          guint n_construct_properties,
+                                          GObjectConstructParam * construct_properties);
+static gboolean _contacts_typecombo_is_separator_gtk_tree_view_row_separator_func (GtkTreeModel* model,
+                                                                            GtkTreeIter* iter,
+                                                                            gpointer self);
+static void contacts_typecombo_finalize (GObject * obj);
+static GType contacts_typecombo_get_type_once (void);
+static void _vala_contacts_typecombo_get_property (GObject * object,
+                                            guint property_id,
+                                            GValue * value,
+                                            GParamSpec * pspec);
+static void _vala_contacts_typecombo_set_property (GObject * object,
+                                            guint property_id,
+                                            const GValue * value,
+                                            GParamSpec * pspec);
+
+static inline gpointer
+contacts_typecombo_get_instance_private (ContactsTypeCombo* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsTypeCombo_private_offset);
+}
+
+/**
+   * Creates a TypeCombo for the given TypeSet. To set the active value,
+   * use the "current-decsriptor" property, set_active_from_field_details(),
+   * or set_active_from_vcard_type()
+   */
+ContactsTypeCombo*
+contacts_typecombo_construct (GType object_type,
+                              ContactsTypeSet* type_set)
+{
+       ContactsTypeCombo * self = NULL;
+       GtkListStore* _tmp0_;
+       GtkListStore* _tmp1_;
+#line 69 "../src/contacts-type-combo.vala"
+       g_return_val_if_fail (type_set != NULL, NULL);
+#line 69 "../src/contacts-type-combo.vala"
+       self = (ContactsTypeCombo*) g_object_new (object_type, NULL);
+#line 70 "../src/contacts-type-combo.vala"
+       self->priv->type_set = type_set;
+#line 71 "../src/contacts-type-combo.vala"
+       _tmp0_ = contacts_typeset_get_store (type_set);
+#line 71 "../src/contacts-type-combo.vala"
+       _tmp1_ = _tmp0_;
+#line 71 "../src/contacts-type-combo.vala"
+       gtk_combo_box_set_model ((GtkComboBox*) self, (GtkTreeModel*) _tmp1_);
+#line 69 "../src/contacts-type-combo.vala"
+       return self;
+#line 132 "contacts-type-combo.c"
+}
+
+ContactsTypeCombo*
+contacts_typecombo_new (ContactsTypeSet* type_set)
+{
+#line 69 "../src/contacts-type-combo.vala"
+       return contacts_typecombo_construct (CONTACTS_TYPE_TYPECOMBO, type_set);
+#line 140 "contacts-type-combo.c"
+}
+
+static gboolean
+contacts_typecombo_is_separator (ContactsTypeCombo* self,
+                                 GtkTreeModel* model,
+                                 GtkTreeIter* iter)
+{
+       const gchar* s = NULL;
+       GtkTreeIter _tmp0_;
+       const gchar* _tmp1_ = NULL;
+       gboolean result = FALSE;
+#line 74 "../src/contacts-type-combo.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 74 "../src/contacts-type-combo.vala"
+       g_return_val_if_fail (model != NULL, FALSE);
+#line 74 "../src/contacts-type-combo.vala"
+       g_return_val_if_fail (iter != NULL, FALSE);
+#line 76 "../src/contacts-type-combo.vala"
+       _tmp0_ = *iter;
+#line 76 "../src/contacts-type-combo.vala"
+       gtk_tree_model_get (model, &_tmp0_, 0, &_tmp1_, -1);
+#line 76 "../src/contacts-type-combo.vala"
+       s = _tmp1_;
+#line 77 "../src/contacts-type-combo.vala"
+       result = s == NULL;
+#line 77 "../src/contacts-type-combo.vala"
+       return result;
+#line 168 "contacts-type-combo.c"
+}
+
+/**
+   * Sets the value to the type of the given {@link Folks.AbstractFieldDetails}.
+   */
+void
+contacts_typecombo_set_active_from_field_details (ContactsTypeCombo* self,
+                                                  FolksAbstractFieldDetails* details)
+{
+       ContactsTypeSet* _tmp0_;
+       ContactsTypeDescriptor* _tmp1_;
+       ContactsTypeDescriptor* _tmp2_;
+#line 83 "../src/contacts-type-combo.vala"
+       g_return_if_fail (self != NULL);
+#line 83 "../src/contacts-type-combo.vala"
+       g_return_if_fail (details != NULL);
+#line 84 "../src/contacts-type-combo.vala"
+       _tmp0_ = self->priv->type_set;
+#line 84 "../src/contacts-type-combo.vala"
+       _tmp1_ = contacts_typeset_lookup_descriptor_for_field_details (_tmp0_, details);
+#line 84 "../src/contacts-type-combo.vala"
+       _tmp2_ = _tmp1_;
+#line 84 "../src/contacts-type-combo.vala"
+       contacts_typecombo_set_active_descriptor (self, _tmp2_);
+#line 84 "../src/contacts-type-combo.vala"
+       _g_object_unref0 (_tmp2_);
+#line 195 "contacts-type-combo.c"
+}
+
+/**
+   * Sets the value to the type that best matches the given vcard type
+   * (for example "HOME" or "WORK").
+   */
+void
+contacts_typecombo_set_active_from_vcard_type (ContactsTypeCombo* self,
+                                               const gchar* type)
+{
+       GtkTreeIter iter = {0};
+       ContactsTypeSet* _tmp0_;
+       GtkTreeIter _tmp1_ = {0};
+       GtkTreeIter _tmp2_;
+#line 91 "../src/contacts-type-combo.vala"
+       g_return_if_fail (self != NULL);
+#line 91 "../src/contacts-type-combo.vala"
+       g_return_if_fail (type != NULL);
+#line 93 "../src/contacts-type-combo.vala"
+       _tmp0_ = self->priv->type_set;
+#line 93 "../src/contacts-type-combo.vala"
+       contacts_typeset_get_iter_for_vcard_type (_tmp0_, type, &_tmp1_);
+#line 93 "../src/contacts-type-combo.vala"
+       iter = _tmp1_;
+#line 94 "../src/contacts-type-combo.vala"
+       _tmp2_ = iter;
+#line 94 "../src/contacts-type-combo.vala"
+       gtk_combo_box_set_active_iter ((GtkComboBox*) self, &_tmp2_);
+#line 224 "contacts-type-combo.c"
+}
+
+ContactsTypeDescriptor*
+contacts_typecombo_get_active_descriptor (ContactsTypeCombo* self)
+{
+       ContactsTypeDescriptor* result;
+       GtkTreeIter iter = {0};
+       GtkTreeIter _tmp0_ = {0};
+       GtkTreeModel* _tmp1_;
+       GtkTreeModel* _tmp2_;
+       GtkTreeIter _tmp3_;
+       ContactsTypeDescriptor* descriptor = NULL;
+       GtkTreeModel* _tmp4_;
+       GtkTreeModel* _tmp5_;
+       GtkTreeIter _tmp6_;
+       ContactsTypeDescriptor* _tmp7_ = NULL;
+#line 36 "../src/contacts-type-combo.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 39 "../src/contacts-type-combo.vala"
+       gtk_combo_box_get_active_iter ((GtkComboBox*) self, &_tmp0_);
+#line 39 "../src/contacts-type-combo.vala"
+       iter = _tmp0_;
+#line 40 "../src/contacts-type-combo.vala"
+       _tmp1_ = gtk_combo_box_get_model ((GtkComboBox*) self);
+#line 40 "../src/contacts-type-combo.vala"
+       _tmp2_ = _tmp1_;
+#line 40 "../src/contacts-type-combo.vala"
+       _tmp3_ = iter;
+#line 40 "../src/contacts-type-combo.vala"
+       _vala_assert (!contacts_typecombo_is_separator (self, _tmp2_, &_tmp3_), "!is_separator (this.model, 
iter)");
+#line 43 "../src/contacts-type-combo.vala"
+       _tmp4_ = gtk_combo_box_get_model ((GtkComboBox*) self);
+#line 43 "../src/contacts-type-combo.vala"
+       _tmp5_ = _tmp4_;
+#line 43 "../src/contacts-type-combo.vala"
+       _tmp6_ = iter;
+#line 43 "../src/contacts-type-combo.vala"
+       gtk_tree_model_get (_tmp5_, &_tmp6_, 1, &_tmp7_, -1);
+#line 43 "../src/contacts-type-combo.vala"
+       descriptor = _tmp7_;
+#line 44 "../src/contacts-type-combo.vala"
+       result = descriptor;
+#line 44 "../src/contacts-type-combo.vala"
+       return result;
+#line 269 "contacts-type-combo.c"
+}
+
+void
+contacts_typecombo_set_active_descriptor (ContactsTypeCombo* self,
+                                          ContactsTypeDescriptor* value)
+{
+       GtkTreeIter _tmp0_;
+#line 46 "../src/contacts-type-combo.vala"
+       g_return_if_fail (self != NULL);
+#line 47 "../src/contacts-type-combo.vala"
+       _tmp0_ = value->iter;
+#line 47 "../src/contacts-type-combo.vala"
+       gtk_combo_box_set_active_iter ((GtkComboBox*) self, &_tmp0_);
+#line 46 "../src/contacts-type-combo.vala"
+       g_object_notify_by_pspec ((GObject *) self, 
contacts_typecombo_properties[CONTACTS_TYPECOMBO_ACTIVE_DESCRIPTOR_PROPERTY]);
+#line 285 "contacts-type-combo.c"
+}
+
+static gboolean
+_contacts_typecombo_is_separator_gtk_tree_view_row_separator_func (GtkTreeModel* model,
+                                                                   GtkTreeIter* iter,
+                                                                   gpointer self)
+{
+       gboolean result;
+       result = contacts_typecombo_is_separator ((ContactsTypeCombo*) self, model, iter);
+#line 61 "../src/contacts-type-combo.vala"
+       return result;
+#line 297 "contacts-type-combo.c"
+}
+
+static GObject *
+contacts_typecombo_constructor (GType type,
+                                guint n_construct_properties,
+                                GObjectConstructParam * construct_properties)
+{
+       GObject * obj;
+       GObjectClass * parent_class;
+       ContactsTypeCombo * self;
+       GtkCellRendererText* renderer = NULL;
+       GtkCellRendererText* _tmp0_;
+       GtkCellRendererText* _tmp1_;
+       GtkCellRendererText* _tmp2_;
+#line 51 "../src/contacts-type-combo.vala"
+       parent_class = G_OBJECT_CLASS (contacts_typecombo_parent_class);
+#line 51 "../src/contacts-type-combo.vala"
+       obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+#line 51 "../src/contacts-type-combo.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_TYPECOMBO, ContactsTypeCombo);
+#line 52 "../src/contacts-type-combo.vala"
+       gtk_widget_set_valign ((GtkWidget*) self, GTK_ALIGN_START);
+#line 53 "../src/contacts-type-combo.vala"
+       gtk_widget_set_halign ((GtkWidget*) self, GTK_ALIGN_FILL);
+#line 54 "../src/contacts-type-combo.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) self, TRUE);
+#line 55 "../src/contacts-type-combo.vala"
+       gtk_widget_set_visible ((GtkWidget*) self, TRUE);
+#line 57 "../src/contacts-type-combo.vala"
+       _tmp0_ = (GtkCellRendererText*) gtk_cell_renderer_text_new ();
+#line 57 "../src/contacts-type-combo.vala"
+       g_object_ref_sink (_tmp0_);
+#line 57 "../src/contacts-type-combo.vala"
+       renderer = _tmp0_;
+#line 58 "../src/contacts-type-combo.vala"
+       _tmp1_ = renderer;
+#line 58 "../src/contacts-type-combo.vala"
+       gtk_cell_layout_pack_start ((GtkCellLayout*) self, (GtkCellRenderer*) _tmp1_, TRUE);
+#line 59 "../src/contacts-type-combo.vala"
+       _tmp2_ = renderer;
+#line 59 "../src/contacts-type-combo.vala"
+       gtk_cell_layout_set_attributes ((GtkCellLayout*) self, (GtkCellRenderer*) _tmp2_, "text", 0, NULL);
+#line 61 "../src/contacts-type-combo.vala"
+       gtk_combo_box_set_row_separator_func ((GtkComboBox*) self, 
_contacts_typecombo_is_separator_gtk_tree_view_row_separator_func, g_object_ref (self), g_object_unref);
+#line 51 "../src/contacts-type-combo.vala"
+       _g_object_unref0 (renderer);
+#line 51 "../src/contacts-type-combo.vala"
+       return obj;
+#line 346 "contacts-type-combo.c"
+}
+
+static void
+contacts_typecombo_class_init (ContactsTypeComboClass * klass,
+                               gpointer klass_data)
+{
+#line 28 "../src/contacts-type-combo.vala"
+       contacts_typecombo_parent_class = g_type_class_peek_parent (klass);
+#line 28 "../src/contacts-type-combo.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsTypeCombo_private_offset);
+#line 28 "../src/contacts-type-combo.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_typecombo_get_property;
+#line 28 "../src/contacts-type-combo.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_typecombo_set_property;
+#line 28 "../src/contacts-type-combo.vala"
+       G_OBJECT_CLASS (klass)->constructor = contacts_typecombo_constructor;
+#line 28 "../src/contacts-type-combo.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_typecombo_finalize;
+#line 365 "contacts-type-combo.c"
+       /**
+          * The {@link Contacts.TypeDescriptor} that is currently shown
+          */
+#line 28 "../src/contacts-type-combo.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), 
CONTACTS_TYPECOMBO_ACTIVE_DESCRIPTOR_PROPERTY, 
contacts_typecombo_properties[CONTACTS_TYPECOMBO_ACTIVE_DESCRIPTOR_PROPERTY] = g_param_spec_object 
("active-descriptor", "active-descriptor", "active-descriptor", CONTACTS_TYPE_TYPEDESCRIPTOR, 
G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
+#line 371 "contacts-type-combo.c"
+}
+
+static void
+contacts_typecombo_instance_init (ContactsTypeCombo * self,
+                                  gpointer klass)
+{
+#line 28 "../src/contacts-type-combo.vala"
+       self->priv = contacts_typecombo_get_instance_private (self);
+#line 380 "contacts-type-combo.c"
+}
+
+static void
+contacts_typecombo_finalize (GObject * obj)
+{
+       ContactsTypeCombo * self;
+#line 28 "../src/contacts-type-combo.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_TYPECOMBO, ContactsTypeCombo);
+#line 28 "../src/contacts-type-combo.vala"
+       G_OBJECT_CLASS (contacts_typecombo_parent_class)->finalize (obj);
+#line 391 "contacts-type-combo.c"
+}
+
+/**
+ * The TypeCombo is a widget that fills itself with the types of a certain
+ * category (using {@link Contacts.TypeSet}). For example, it allows the user
+ * to choose between "Personal", "Home" and "Work" for email addresses,
+ * together with all the custom labels it has encountered since then.
+ */
+static GType
+contacts_typecombo_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsTypeComboClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_typecombo_class_init, (GClassFinalizeFunc) NULL, NULL, 
sizeof (ContactsTypeCombo), 0, (GInstanceInitFunc) contacts_typecombo_instance_init, NULL };
+       GType contacts_typecombo_type_id;
+       contacts_typecombo_type_id = g_type_register_static (gtk_combo_box_get_type (), "ContactsTypeCombo", 
&g_define_type_info, 0);
+       ContactsTypeCombo_private_offset = g_type_add_instance_private (contacts_typecombo_type_id, sizeof 
(ContactsTypeComboPrivate));
+       return contacts_typecombo_type_id;
+}
+
+GType
+contacts_typecombo_get_type (void)
+{
+       static volatile gsize contacts_typecombo_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_typecombo_type_id__volatile)) {
+               GType contacts_typecombo_type_id;
+               contacts_typecombo_type_id = contacts_typecombo_get_type_once ();
+               g_once_init_leave (&contacts_typecombo_type_id__volatile, contacts_typecombo_type_id);
+       }
+       return contacts_typecombo_type_id__volatile;
+}
+
+static void
+_vala_contacts_typecombo_get_property (GObject * object,
+                                       guint property_id,
+                                       GValue * value,
+                                       GParamSpec * pspec)
+{
+       ContactsTypeCombo * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_TYPECOMBO, ContactsTypeCombo);
+#line 28 "../src/contacts-type-combo.vala"
+       switch (property_id) {
+#line 28 "../src/contacts-type-combo.vala"
+               case CONTACTS_TYPECOMBO_ACTIVE_DESCRIPTOR_PROPERTY:
+#line 28 "../src/contacts-type-combo.vala"
+               g_value_set_object (value, contacts_typecombo_get_active_descriptor (self));
+#line 28 "../src/contacts-type-combo.vala"
+               break;
+#line 438 "contacts-type-combo.c"
+               default:
+#line 28 "../src/contacts-type-combo.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 28 "../src/contacts-type-combo.vala"
+               break;
+#line 444 "contacts-type-combo.c"
+       }
+}
+
+static void
+_vala_contacts_typecombo_set_property (GObject * object,
+                                       guint property_id,
+                                       const GValue * value,
+                                       GParamSpec * pspec)
+{
+       ContactsTypeCombo * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_TYPECOMBO, ContactsTypeCombo);
+#line 28 "../src/contacts-type-combo.vala"
+       switch (property_id) {
+#line 28 "../src/contacts-type-combo.vala"
+               case CONTACTS_TYPECOMBO_ACTIVE_DESCRIPTOR_PROPERTY:
+#line 28 "../src/contacts-type-combo.vala"
+               contacts_typecombo_set_active_descriptor (self, g_value_get_object (value));
+#line 28 "../src/contacts-type-combo.vala"
+               break;
+#line 464 "contacts-type-combo.c"
+               default:
+#line 28 "../src/contacts-type-combo.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 28 "../src/contacts-type-combo.vala"
+               break;
+#line 470 "contacts-type-combo.c"
+       }
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-ui-state.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-ui-state.c
new file mode 100644
index 0000000..04e3eb2
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-ui-state.c
@@ -0,0 +1,91 @@
+/* contacts-ui-state.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-ui-state.vala, do not modify */
+
+/*
+ * Copyright (C) 2018 Niels De Graef <nielsdegraef gmail com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib-object.h>
+#include <glib.h>
+
+typedef enum  {
+       CONTACTS_UI_STATE_NORMAL,
+       CONTACTS_UI_STATE_SHOWING,
+       CONTACTS_UI_STATE_SELECTING,
+       CONTACTS_UI_STATE_UPDATING,
+       CONTACTS_UI_STATE_CREATING
+} ContactsUiState;
+
+#define CONTACTS_TYPE_UI_STATE (contacts_ui_state_get_type ())
+
+GType contacts_ui_state_get_type (void) G_GNUC_CONST;
+gboolean contacts_ui_state_editing (ContactsUiState self);
+
+/**
+ * Roughly put, the behaviour of the UI of Contacts can be divided in several
+ * categories. We represent this with the UiState enum, which can be shared
+ * (and sync-ed) between the different parts of the app.
+ *
+ * Note that there is one exception to this: the initial setup is handled
+ * completely separately in the {@link SetupWindow}.
+ */
+/**
+   * Returns whether we're editing a contact, either by changing an existing
+   * one, or by creating a new one.
+   */
+gboolean
+contacts_ui_state_editing (ContactsUiState self)
+{
+       gboolean _tmp0_ = FALSE;
+       gboolean result = FALSE;
+#line 58 "../src/contacts-ui-state.vala"
+       if (self == CONTACTS_UI_STATE_UPDATING) {
+#line 58 "../src/contacts-ui-state.vala"
+               _tmp0_ = TRUE;
+#line 59 "contacts-ui-state.c"
+       } else {
+#line 58 "../src/contacts-ui-state.vala"
+               _tmp0_ = self == CONTACTS_UI_STATE_CREATING;
+#line 63 "contacts-ui-state.c"
+       }
+#line 58 "../src/contacts-ui-state.vala"
+       result = _tmp0_;
+#line 58 "../src/contacts-ui-state.vala"
+       return result;
+#line 69 "contacts-ui-state.c"
+}
+
+static GType
+contacts_ui_state_get_type_once (void)
+{
+       static const GEnumValue values[] = {{CONTACTS_UI_STATE_NORMAL, "CONTACTS_UI_STATE_NORMAL", "normal"}, 
{CONTACTS_UI_STATE_SHOWING, "CONTACTS_UI_STATE_SHOWING", "showing"}, {CONTACTS_UI_STATE_SELECTING, 
"CONTACTS_UI_STATE_SELECTING", "selecting"}, {CONTACTS_UI_STATE_UPDATING, "CONTACTS_UI_STATE_UPDATING", 
"updating"}, {CONTACTS_UI_STATE_CREATING, "CONTACTS_UI_STATE_CREATING", "creating"}, {0, NULL, NULL}};
+       GType contacts_ui_state_type_id;
+       contacts_ui_state_type_id = g_enum_register_static ("ContactsUiState", values);
+       return contacts_ui_state_type_id;
+}
+
+GType
+contacts_ui_state_get_type (void)
+{
+       static volatile gsize contacts_ui_state_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_ui_state_type_id__volatile)) {
+               GType contacts_ui_state_type_id;
+               contacts_ui_state_type_id = contacts_ui_state_get_type_once ();
+               g_once_init_leave (&contacts_ui_state_type_id__volatile, contacts_ui_state_type_id);
+       }
+       return contacts_ui_state_type_id__volatile;
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/contacts-window.c 
b/_build/src/25a6634@@gnome-contacts@exe/contacts-window.c
new file mode 100644
index 0000000..4e8062e
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/contacts-window.c
@@ -0,0 +1,3529 @@
+/* contacts-window.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from contacts-window.vala, do not modify */
+
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <handy.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include "contacts.h"
+#include <gdk/gdk.h>
+#include <stdlib.h>
+#include <string.h>
+#include <config.h>
+#include <folks/folks.h>
+#include <gee.h>
+#include <glib/gi18n-lib.h>
+#include <pango/pango.h>
+
+#define CONTACTS_TYPE_WINDOW (contacts_window_get_type ())
+#define CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_WINDOW, ContactsWindow))
+#define CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+#define CONTACTS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_WINDOW))
+#define CONTACTS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_WINDOW, 
ContactsWindowClass))
+
+typedef struct _ContactsWindow ContactsWindow;
+typedef struct _ContactsWindowClass ContactsWindowClass;
+typedef struct _ContactsWindowPrivate ContactsWindowPrivate;
+
+#define CONTACTS_TYPE_LIST_PANE (contacts_list_pane_get_type ())
+#define CONTACTS_LIST_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LIST_PANE, 
ContactsListPane))
+#define CONTACTS_LIST_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_LIST_PANE, 
ContactsListPaneClass))
+#define CONTACTS_IS_LIST_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LIST_PANE))
+#define CONTACTS_IS_LIST_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_LIST_PANE))
+#define CONTACTS_LIST_PANE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_LIST_PANE, 
ContactsListPaneClass))
+
+typedef struct _ContactsListPane ContactsListPane;
+typedef struct _ContactsListPaneClass ContactsListPaneClass;
+
+#define CONTACTS_TYPE_CONTACT_PANE (contacts_contact_pane_get_type ())
+#define CONTACTS_CONTACT_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT_PANE, 
ContactsContactPane))
+#define CONTACTS_CONTACT_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT_PANE, 
ContactsContactPaneClass))
+#define CONTACTS_IS_CONTACT_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT_PANE))
+#define CONTACTS_IS_CONTACT_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT_PANE))
+#define CONTACTS_CONTACT_PANE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT_PANE, 
ContactsContactPaneClass))
+
+typedef struct _ContactsContactPane ContactsContactPane;
+typedef struct _ContactsContactPaneClass ContactsContactPaneClass;
+typedef enum  {
+       CONTACTS_UI_STATE_NORMAL,
+       CONTACTS_UI_STATE_SHOWING,
+       CONTACTS_UI_STATE_SELECTING,
+       CONTACTS_UI_STATE_UPDATING,
+       CONTACTS_UI_STATE_CREATING
+} ContactsUiState;
+
+#define CONTACTS_TYPE_UI_STATE (contacts_ui_state_get_type ())
+
+#define CONTACTS_TYPE_SETTINGS (contacts_settings_get_type ())
+#define CONTACTS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETTINGS, ContactsSettings))
+#define CONTACTS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+#define CONTACTS_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETTINGS))
+#define CONTACTS_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETTINGS, 
ContactsSettingsClass))
+
+typedef struct _ContactsSettings ContactsSettings;
+typedef struct _ContactsSettingsClass ContactsSettingsClass;
+enum  {
+       CONTACTS_WINDOW_0_PROPERTY,
+       CONTACTS_WINDOW_STATE_PROPERTY,
+       CONTACTS_WINDOW_WINDOW_WIDTH_PROPERTY,
+       CONTACTS_WINDOW_WINDOW_HEIGHT_PROPERTY,
+       CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROPERTY,
+       CONTACTS_WINDOW_STORE_PROPERTY,
+       CONTACTS_WINDOW_NUM_PROPERTIES
+};
+static GParamSpec* contacts_window_properties[CONTACTS_WINDOW_NUM_PROPERTIES];
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define CONTACTS_TYPE_APP (contacts_app_get_type ())
+#define CONTACTS_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_APP, ContactsApp))
+#define CONTACTS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_APP, ContactsAppClass))
+#define CONTACTS_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_APP))
+#define CONTACTS_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_APP))
+#define CONTACTS_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_APP, ContactsAppClass))
+
+typedef struct _ContactsApp ContactsApp;
+typedef struct _ContactsAppClass ContactsAppClass;
+
+#define CONTACTS_TYPE_LINK_OPERATION (contacts_link_operation_get_type ())
+#define CONTACTS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LINK_OPERATION, 
ContactsLinkOperation))
+#define CONTACTS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+#define CONTACTS_IS_LINK_OPERATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_IS_LINK_OPERATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_OPERATION))
+#define CONTACTS_LINK_OPERATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_OPERATION, ContactsLinkOperationClass))
+
+typedef struct _ContactsLinkOperation ContactsLinkOperation;
+typedef struct _ContactsLinkOperationClass ContactsLinkOperationClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+typedef struct _ContactsContactPanePrivate ContactsContactPanePrivate;
+
+#define CONTACTS_TYPE_IN_APP_NOTIFICATION (contacts_in_app_notification_get_type ())
+#define CONTACTS_IN_APP_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotification))
+#define CONTACTS_IN_APP_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotificationClass))
+#define CONTACTS_IS_IN_APP_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION))
+#define CONTACTS_IS_IN_APP_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_IN_APP_NOTIFICATION))
+#define CONTACTS_IN_APP_NOTIFICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_IN_APP_NOTIFICATION, ContactsInAppNotificationClass))
+
+typedef struct _ContactsInAppNotification ContactsInAppNotification;
+typedef struct _ContactsInAppNotificationClass ContactsInAppNotificationClass;
+typedef struct _ContactsListPanePrivate ContactsListPanePrivate;
+
+#define CONTACTS_TYPE_LINK_OPERATION2 (contacts_link_operation2_get_type ())
+#define CONTACTS_LINK_OPERATION2(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_LINK_OPERATION2, 
ContactsLinkOperation2))
+#define CONTACTS_LINK_OPERATION2_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_LINK_OPERATION2, ContactsLinkOperation2Class))
+#define CONTACTS_IS_LINK_OPERATION2(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_LINK_OPERATION2))
+#define CONTACTS_IS_LINK_OPERATION2_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_LINK_OPERATION2))
+#define CONTACTS_LINK_OPERATION2_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_LINK_OPERATION2, ContactsLinkOperation2Class))
+
+typedef struct _ContactsLinkOperation2 ContactsLinkOperation2;
+typedef struct _ContactsLinkOperation2Class ContactsLinkOperation2Class;
+typedef struct _Block24Data Block24Data;
+typedef struct _Block25Data Block25Data;
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _Block26Data Block26Data;
+
+struct _ContactsWindow {
+       GtkApplicationWindow parent_instance;
+       ContactsWindowPrivate * priv;
+};
+
+struct _ContactsWindowClass {
+       GtkApplicationWindowClass parent_class;
+};
+
+struct _ContactsWindowPrivate {
+       HdyLeaflet* header;
+       HdyLeaflet* content_box;
+       GtkRevealer* back_revealer;
+       GtkStack* list_pane_stack;
+       GtkContainer* contact_pane_container;
+       HdyTitleBar* titlebar;
+       GtkHeaderBar* left_header;
+       GtkHeaderBar* right_header;
+       GtkOverlay* notification_overlay;
+       GtkButton* add_button;
+       GtkButton* select_cancel_button;
+       GtkMenuButton* hamburger_menu_button;
+       GtkModelButton* sort_on_firstname_button;
+       GtkModelButton* sort_on_surname_button;
+       GtkToggleButton* favorite_button;
+       gboolean ignore_favorite_button_toggled;
+       GtkButton* edit_button;
+       GtkButton* cancel_button;
+       GtkButton* done_button;
+       ContactsListPane* list_pane;
+       ContactsContactPane* contact_pane;
+       ContactsUiState _state;
+       gint _window_width;
+       gint _window_height;
+       gboolean _window_maximized;
+       ContactsSettings* settings;
+       ContactsStore* _store;
+};
+
+struct _ContactsContactPane {
+       GtkStack parent_instance;
+       ContactsContactPanePrivate * priv;
+       FolksIndividual* individual;
+       gboolean on_edit_mode;
+};
+
+struct _ContactsContactPaneClass {
+       GtkStackClass parent_class;
+};
+
+struct _ContactsListPane {
+       GtkFrame parent_instance;
+       ContactsListPanePrivate * priv;
+       GtkSearchEntry* filter_entry;
+};
+
+struct _ContactsListPaneClass {
+       GtkFrameClass parent_class;
+};
+
+struct _Block24Data {
+       int _ref_count_;
+       ContactsWindow* self;
+       ContactsLinkOperation2* operation;
+       ContactsInAppNotification* notification;
+};
+
+struct _Block25Data {
+       int _ref_count_;
+       ContactsWindow* self;
+       ContactsInAppNotification* notification;
+       gboolean really_delete;
+       GeeList* individuals;
+};
+
+struct _Block26Data {
+       int _ref_count_;
+       ContactsWindow* self;
+       ContactsInAppNotification* notification;
+       ContactsLinkOperation* operation;
+};
+
+static gint ContactsWindow_private_offset;
+static gpointer contacts_window_parent_class = NULL;
+
+GType contacts_window_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsWindow, g_object_unref)
+GType contacts_list_pane_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsListPane, g_object_unref)
+GType contacts_contact_pane_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsContactPane, g_object_unref)
+GType contacts_ui_state_get_type (void) G_GNUC_CONST;
+GType contacts_settings_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsSettings, g_object_unref)
+#define CONTACTS_WINDOW_WINDOW_WIDTH_PROP "window-width"
+#define CONTACTS_WINDOW_WINDOW_HEIGHT_PROP "window-height"
+#define CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROP "window-maximized"
+GType contacts_app_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsApp, g_object_unref)
+ContactsWindow* contacts_window_new (ContactsSettings* settings,
+                                     ContactsApp* app,
+                                     ContactsStore* contacts_store);
+ContactsWindow* contacts_window_construct (GType object_type,
+                                           ContactsSettings* settings,
+                                           ContactsApp* app,
+                                           ContactsStore* contacts_store);
+static void __lambda49_ (ContactsWindow* self);
+void contacts_settings_set_sort_on_surname (ContactsSettings* self,
+                                            gboolean value);
+static void contacts_window_on_sort_changed (ContactsWindow* self);
+static void ___lambda49__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void __lambda50_ (ContactsWindow* self);
+static void ___lambda50__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void contacts_window_on_ui_state_changed (ContactsWindow* self,
+                                          GObject* obj,
+                                          GParamSpec* pspec);
+static void _contacts_window_on_ui_state_changed_g_object_notify (GObject* _sender,
+                                                           GParamSpec* pspec,
+                                                           gpointer self);
+static void contacts_window_bind_dimension_properties_to_settings (ContactsWindow* self);
+static void contacts_window_create_contact_pane (ContactsWindow* self);
+static void contacts_window_connect_button_signals (ContactsWindow* self);
+static void contacts_window_restore_window_size_and_position_from_settings (ContactsWindow* self);
+gboolean contacts_settings_get_sort_on_surname (ContactsSettings* self);
+gint contacts_window_get_window_width (ContactsWindow* self);
+gint contacts_window_get_window_height (ContactsWindow* self);
+gboolean contacts_window_get_window_maximized (ContactsWindow* self);
+static gboolean contacts_window_real_window_state_event (GtkWidget* base,
+                                                  GdkEventWindowState* event);
+void contacts_window_set_window_maximized (ContactsWindow* self,
+                                           gboolean value);
+static void contacts_window_real_size_allocate (GtkWidget* base,
+                                         GtkAllocation* allocation);
+void contacts_window_set_window_width (ContactsWindow* self,
+                                       gint value);
+void contacts_window_set_window_height (ContactsWindow* self,
+                                        gint value);
+ContactsStore* contacts_window_get_store (ContactsWindow* self);
+ContactsContactPane* contacts_contact_pane_new (ContactsWindow* parent_window,
+                                                ContactsStore* contacts_store);
+ContactsContactPane* contacts_contact_pane_construct (GType object_type,
+                                                      ContactsWindow* parent_window,
+                                                      ContactsStore* contacts_store);
+static void __lambda51_ (ContactsWindow* self,
+                  FolksIndividual* individual);
+void contacts_list_pane_hide_contact (ContactsListPane* self,
+                                      FolksIndividual* individual);
+static void contacts_window_delete_contacts (ContactsWindow* self,
+                                      GeeList* individuals);
+static void ___lambda51__contacts_contact_pane_will_delete (ContactsContactPane* _sender,
+                                                     FolksIndividual* individual,
+                                                     gpointer self);
+GType contacts_link_operation_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkOperation, g_object_unref)
+static void contacts_window_contact_pane_contacts_linked_cb (ContactsWindow* self,
+                                                      const gchar* main_contact,
+                                                      const gchar* linked_contact,
+                                                      ContactsLinkOperation* operation);
+static void _contacts_window_contact_pane_contacts_linked_cb_contacts_contact_pane_contacts_linked 
(ContactsContactPane* _sender,
+                                                                                             const gchar* 
main_contact,
+                                                                                             const gchar* 
linked_contact,
+                                                                                             
ContactsLinkOperation* operation,
+                                                                                             gpointer self);
+static void __lambda55_ (ContactsWindow* self,
+                  const gchar* display_name);
+static void ___lambda55__contacts_contact_pane_display_name_changed (ContactsContactPane* _sender,
+                                                              const gchar* new_display_name,
+                                                              gpointer self);
+void contacts_window_set_list_pane (ContactsWindow* self);
+ContactsListPane* contacts_list_pane_new (ContactsSettings* settings,
+                                          ContactsStore* contacts_store);
+ContactsListPane* contacts_list_pane_construct (GType object_type,
+                                                ContactsSettings* settings,
+                                                ContactsStore* contacts_store);
+static void contacts_window_list_pane_selection_changed_cb (ContactsWindow* self,
+                                                     FolksIndividual* new_selection);
+static void _contacts_window_list_pane_selection_changed_cb_contacts_list_pane_selection_changed 
(ContactsListPane* _sender,
+                                                                                           FolksIndividual* 
individual,
+                                                                                           gpointer self);
+static void contacts_window_list_pane_link_contacts_cb (ContactsWindow* self,
+                                                 GeeLinkedList* contact_list);
+static void _contacts_window_list_pane_link_contacts_cb_contacts_list_pane_link_contacts (ContactsListPane* 
_sender,
+                                                                                   GeeLinkedList* individual,
+                                                                                   gpointer self);
+static void _contacts_window_delete_contacts_contacts_list_pane_delete_contacts (ContactsListPane* _sender,
+                                                                          GeeLinkedList* individual,
+                                                                          gpointer self);
+static void __lambda61_ (ContactsWindow* self,
+                  gint nr_contacts);
+static void ___lambda61__contacts_list_pane_contacts_marked (ContactsListPane* _sender,
+                                                      gint contacts_marked,
+                                                      gpointer self);
+void contacts_list_pane_select_contact (ContactsListPane* self,
+                                        FolksIndividual* individual);
+ContactsUiState contacts_window_get_state (ContactsWindow* self);
+gboolean contacts_ui_state_editing (ContactsUiState self);
+static void contacts_window_on_back_clicked (ContactsWindow* self);
+static void contacts_window_show_list_pane (ContactsWindow* self);
+static void _contacts_window_on_back_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                          gpointer self);
+static void contacts_window_on_edit_button_clicked (ContactsWindow* self);
+void contacts_window_set_state (ContactsWindow* self,
+                                ContactsUiState value);
+void contacts_contact_pane_start_editing (ContactsContactPane* self);
+static void _contacts_window_on_edit_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                                 gpointer self);
+static void contacts_window_on_favorite_button_toggled (ContactsWindow* self,
+                                                 GtkToggleButton* button);
+static void _contacts_window_on_favorite_button_toggled_gtk_toggle_button_toggled (GtkToggleButton* _sender,
+                                                                            gpointer self);
+static void contacts_window_stop_editing (ContactsWindow* self,
+                                   gboolean drop_changes);
+void contacts_contact_pane_stop_editing (ContactsContactPane* self,
+                                         gboolean drop_changes);
+void contacts_contact_pane_create_contact (ContactsContactPane* self,
+                                           GAsyncReadyCallback _callback_,
+                                           gpointer _user_data_);
+void contacts_contact_pane_create_contact_finish (ContactsContactPane* self,
+                                                  GAsyncResult* _res_);
+static void contacts_window_show_contact_pane (ContactsWindow* self);
+GType contacts_in_app_notification_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsInAppNotification, g_object_unref)
+void contacts_window_add_notification (ContactsWindow* self,
+                                       ContactsInAppNotification* notification);
+void contacts_in_app_notification_show (ContactsInAppNotification* self);
+void contacts_window_set_shown_contact (ContactsWindow* self,
+                                        FolksIndividual* i);
+void contacts_contact_pane_show_contact (ContactsContactPane* self,
+                                         FolksIndividual* individual);
+void contacts_window_new_contact (ContactsWindow* self);
+void contacts_contact_pane_new_contact (ContactsContactPane* self);
+static void _contacts_window_new_contact_gtk_button_clicked (GtkButton* _sender,
+                                                      gpointer self);
+static void contacts_window_on_cancel_visible (ContactsWindow* self);
+static void contacts_window_update (ContactsWindow* self);
+static void _contacts_window_on_cancel_visible_g_object_notify (GObject* _sender,
+                                                         GParamSpec* pspec,
+                                                         gpointer self);
+static void contacts_window_on_fold (ContactsWindow* self);
+static void _contacts_window_on_fold_g_object_notify (GObject* _sender,
+                                               GParamSpec* pspec,
+                                               gpointer self);
+static void contacts_window_on_child_transition_running (ContactsWindow* self);
+static void _contacts_window_on_child_transition_running_g_object_notify (GObject* _sender,
+                                                                   GParamSpec* pspec,
+                                                                   gpointer self);
+void contacts_window_show_search (ContactsWindow* self,
+                                  const gchar* query);
+static void __lambda56_ (ContactsWindow* self);
+static void ___lambda56__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void __lambda57_ (ContactsWindow* self);
+static void ___lambda57__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void __lambda58_ (ContactsWindow* self);
+static void ___lambda58__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static gboolean contacts_window_key_press_event_cb (ContactsWindow* self,
+                                             GdkEventKey* event);
+static gboolean _contacts_window_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender,
+                                                                         GdkEventKey* event,
+                                                                         gpointer self);
+static gboolean contacts_window_delete_event_cb (ContactsWindow* self,
+                                          GdkEventAny* event);
+static gboolean _contacts_window_delete_event_cb_gtk_widget_delete_event (GtkWidget* _sender,
+                                                                   GdkEventAny* event,
+                                                                   gpointer self);
+GType contacts_link_operation2_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsLinkOperation2, g_object_unref)
+static Block24Data* block24_data_ref (Block24Data* _data24_);
+static void block24_data_unref (void * _userdata_);
+void contacts_link_contacts_list (GeeLinkedList* contact_list,
+                                  ContactsStore* contacts_store,
+                                  GAsyncReadyCallback _callback_,
+                                  gpointer _user_data_);
+ContactsLinkOperation2* contacts_link_contacts_list_finish (GAsyncResult* _res_);
+static void __lambda59_ (Block24Data* _data24_,
+                  GObject* obj,
+                  GAsyncResult* _result_);
+static void ___lambda59__gasync_ready_callback (GObject* source_object,
+                                         GAsyncResult* res,
+                                         gpointer self);
+ContactsInAppNotification* contacts_in_app_notification_new (const gchar* message,
+                                                             GtkButton* button);
+ContactsInAppNotification* contacts_in_app_notification_construct (GType object_type,
+                                                                   const gchar* message,
+                                                                   GtkButton* button);
+static void __lambda60_ (Block24Data* _data24_);
+void contacts_link_operation2_undo (ContactsLinkOperation2* self,
+                                    GAsyncReadyCallback _callback_,
+                                    gpointer _user_data_);
+void contacts_link_operation2_undo_finish (ContactsLinkOperation2* self,
+                                           GAsyncResult* _res_);
+void contacts_in_app_notification_dismiss (ContactsInAppNotification* self);
+static void ___lambda60__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static Block25Data* block25_data_ref (Block25Data* _data25_);
+static void block25_data_unref (void * _userdata_);
+GtkLabel* contacts_in_app_notification_get_message_label (ContactsInAppNotification* self);
+static void __lambda52_ (Block25Data* _data25_);
+void contacts_list_pane_undo_deletion (ContactsListPane* self);
+static void ___lambda52__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+static void __lambda53_ (Block25Data* _data25_);
+static void ___lambda53__contacts_in_app_notification_dismissed (ContactsInAppNotification* _sender,
+                                                          gpointer self);
+static Block26Data* block26_data_ref (Block26Data* _data26_);
+static void block26_data_unref (void * _userdata_);
+static void __lambda54_ (Block26Data* _data26_);
+void contacts_link_operation_undo (ContactsLinkOperation* self,
+                                   GAsyncReadyCallback _callback_,
+                                   gpointer _user_data_);
+void contacts_link_operation_undo_finish (ContactsLinkOperation* self,
+                                          GAsyncResult* _res_);
+static void ___lambda54__gtk_button_clicked (GtkButton* _sender,
+                                      gpointer self);
+void contacts_settings_bind_default (ContactsSettings* self,
+                                     const gchar* key,
+                                     GObject* object,
+                                     const gchar* property);
+#define CONTACTS_SETTINGS_WINDOW_WIDTH_KEY "window-width"
+#define CONTACTS_SETTINGS_WINDOW_HEIGHT_KEY "window-height"
+#define CONTACTS_SETTINGS_WINDOW_MAXIMIZED_KEY "window-maximized"
+void contacts_window_set_store (ContactsWindow* self,
+                                ContactsStore* value);
+static void contacts_window_finalize (GObject * obj);
+static GType contacts_window_get_type_once (void);
+static void _vala_contacts_window_get_property (GObject * object,
+                                         guint property_id,
+                                         GValue * value,
+                                         GParamSpec * pspec);
+static void _vala_contacts_window_set_property (GObject * object,
+                                         guint property_id,
+                                         const GValue * value,
+                                         GParamSpec * pspec);
+
+static inline gpointer
+contacts_window_get_instance_private (ContactsWindow* self)
+{
+       return G_STRUCT_MEMBER_P (self, ContactsWindow_private_offset);
+}
+
+static gpointer
+_g_object_ref0 (gpointer self)
+{
+#line 94 "../src/contacts-window.vala"
+       return self ? g_object_ref (self) : NULL;
+#line 494 "contacts-window.c"
+}
+
+static void
+__lambda49_ (ContactsWindow* self)
+{
+       ContactsSettings* _tmp0_;
+#line 96 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->settings;
+#line 96 "../src/contacts-window.vala"
+       contacts_settings_set_sort_on_surname (_tmp0_, FALSE);
+#line 97 "../src/contacts-window.vala"
+       contacts_window_on_sort_changed (self);
+#line 507 "contacts-window.c"
+}
+
+static void
+___lambda49__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 95 "../src/contacts-window.vala"
+       __lambda49_ ((ContactsWindow*) self);
+#line 516 "contacts-window.c"
+}
+
+static void
+__lambda50_ (ContactsWindow* self)
+{
+       ContactsSettings* _tmp0_;
+#line 100 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->settings;
+#line 100 "../src/contacts-window.vala"
+       contacts_settings_set_sort_on_surname (_tmp0_, TRUE);
+#line 101 "../src/contacts-window.vala"
+       contacts_window_on_sort_changed (self);
+#line 529 "contacts-window.c"
+}
+
+static void
+___lambda50__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 99 "../src/contacts-window.vala"
+       __lambda50_ ((ContactsWindow*) self);
+#line 538 "contacts-window.c"
+}
+
+static void
+_contacts_window_on_ui_state_changed_g_object_notify (GObject* _sender,
+                                                      GParamSpec* pspec,
+                                                      gpointer self)
+{
+#line 105 "../src/contacts-window.vala"
+       contacts_window_on_ui_state_changed ((ContactsWindow*) self, _sender, pspec);
+#line 548 "contacts-window.c"
+}
+
+ContactsWindow*
+contacts_window_construct (GType object_type,
+                           ContactsSettings* settings,
+                           ContactsApp* app,
+                           ContactsStore* contacts_store)
+{
+       ContactsWindow * self = NULL;
+       ContactsSettings* _tmp0_;
+       GtkModelButton* _tmp1_;
+       GtkModelButton* _tmp2_;
+#line 87 "../src/contacts-window.vala"
+       g_return_val_if_fail (settings != NULL, NULL);
+#line 87 "../src/contacts-window.vala"
+       g_return_val_if_fail (app != NULL, NULL);
+#line 87 "../src/contacts-window.vala"
+       g_return_val_if_fail (contacts_store != NULL, NULL);
+#line 88 "../src/contacts-window.vala"
+       self = (ContactsWindow*) g_object_new (object_type, "application", app, "show-menubar", FALSE, 
"store", contacts_store, NULL);
+#line 94 "../src/contacts-window.vala"
+       _tmp0_ = _g_object_ref0 (settings);
+#line 94 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->settings);
+#line 94 "../src/contacts-window.vala"
+       self->priv->settings = _tmp0_;
+#line 95 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->sort_on_firstname_button;
+#line 95 "../src/contacts-window.vala"
+       g_signal_connect_object ((GtkButton*) _tmp1_, "clicked", (GCallback) ___lambda49__gtk_button_clicked, 
self, 0);
+#line 99 "../src/contacts-window.vala"
+       _tmp2_ = self->priv->sort_on_surname_button;
+#line 99 "../src/contacts-window.vala"
+       g_signal_connect_object ((GtkButton*) _tmp2_, "clicked", (GCallback) ___lambda50__gtk_button_clicked, 
self, 0);
+#line 103 "../src/contacts-window.vala"
+       contacts_window_on_sort_changed (self);
+#line 105 "../src/contacts-window.vala"
+       g_signal_connect_object ((GObject*) self, "notify::state", (GCallback) 
_contacts_window_on_ui_state_changed_g_object_notify, self, 0);
+#line 107 "../src/contacts-window.vala"
+       contacts_window_bind_dimension_properties_to_settings (self);
+#line 108 "../src/contacts-window.vala"
+       contacts_window_create_contact_pane (self);
+#line 109 "../src/contacts-window.vala"
+       contacts_window_connect_button_signals (self);
+#line 110 "../src/contacts-window.vala"
+       contacts_window_restore_window_size_and_position_from_settings (self);
+#line 112 "../src/contacts-window.vala"
+       if (g_strcmp0 (PROFILE, "development") == 0) {
+#line 597 "contacts-window.c"
+               GtkStyleContext* _tmp3_;
+#line 113 "../src/contacts-window.vala"
+               _tmp3_ = gtk_widget_get_style_context ((GtkWidget*) self);
+#line 113 "../src/contacts-window.vala"
+               gtk_style_context_add_class (_tmp3_, "devel");
+#line 603 "contacts-window.c"
+       }
+#line 87 "../src/contacts-window.vala"
+       return self;
+#line 607 "contacts-window.c"
+}
+
+ContactsWindow*
+contacts_window_new (ContactsSettings* settings,
+                     ContactsApp* app,
+                     ContactsStore* contacts_store)
+{
+#line 87 "../src/contacts-window.vala"
+       return contacts_window_construct (CONTACTS_TYPE_WINDOW, settings, app, contacts_store);
+#line 617 "contacts-window.c"
+}
+
+static void
+contacts_window_on_sort_changed (ContactsWindow* self)
+{
+       GtkModelButton* _tmp0_;
+       ContactsSettings* _tmp1_;
+       gboolean _tmp2_;
+       gboolean _tmp3_;
+       GtkModelButton* _tmp4_;
+       ContactsSettings* _tmp5_;
+       gboolean _tmp6_;
+       gboolean _tmp7_;
+#line 116 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 117 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->sort_on_firstname_button;
+#line 117 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->settings;
+#line 117 "../src/contacts-window.vala"
+       _tmp2_ = contacts_settings_get_sort_on_surname (_tmp1_);
+#line 117 "../src/contacts-window.vala"
+       _tmp3_ = _tmp2_;
+#line 117 "../src/contacts-window.vala"
+       g_object_set (_tmp0_, "active", !_tmp3_, NULL);
+#line 118 "../src/contacts-window.vala"
+       _tmp4_ = self->priv->sort_on_surname_button;
+#line 118 "../src/contacts-window.vala"
+       _tmp5_ = self->priv->settings;
+#line 118 "../src/contacts-window.vala"
+       _tmp6_ = contacts_settings_get_sort_on_surname (_tmp5_);
+#line 118 "../src/contacts-window.vala"
+       _tmp7_ = _tmp6_;
+#line 118 "../src/contacts-window.vala"
+       g_object_set (_tmp4_, "active", _tmp7_, NULL);
+#line 653 "contacts-window.c"
+}
+
+static void
+contacts_window_restore_window_size_and_position_from_settings (ContactsWindow* self)
+{
+       GdkScreen* screen = NULL;
+       GdkScreen* _tmp0_;
+       GdkScreen* _tmp1_;
+       gboolean _tmp2_ = FALSE;
+       gboolean _tmp3_ = FALSE;
+       GdkScreen* _tmp4_;
+       gboolean _tmp11_;
+#line 121 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 122 "../src/contacts-window.vala"
+       _tmp0_ = gtk_window_get_screen ((GtkWindow*) self);
+#line 122 "../src/contacts-window.vala"
+       _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 122 "../src/contacts-window.vala"
+       screen = _tmp1_;
+#line 123 "../src/contacts-window.vala"
+       _tmp4_ = screen;
+#line 123 "../src/contacts-window.vala"
+       if (_tmp4_ != NULL) {
+#line 678 "contacts-window.c"
+               gint _tmp5_;
+               GdkScreen* _tmp6_;
+#line 123 "../src/contacts-window.vala"
+               _tmp5_ = self->priv->_window_width;
+#line 123 "../src/contacts-window.vala"
+               _tmp6_ = screen;
+#line 123 "../src/contacts-window.vala"
+               _tmp3_ = _tmp5_ <= gdk_screen_get_width (_tmp6_);
+#line 687 "contacts-window.c"
+       } else {
+#line 123 "../src/contacts-window.vala"
+               _tmp3_ = FALSE;
+#line 691 "contacts-window.c"
+       }
+#line 123 "../src/contacts-window.vala"
+       if (_tmp3_) {
+#line 695 "contacts-window.c"
+               gint _tmp7_;
+               GdkScreen* _tmp8_;
+#line 123 "../src/contacts-window.vala"
+               _tmp7_ = self->priv->_window_height;
+#line 123 "../src/contacts-window.vala"
+               _tmp8_ = screen;
+#line 123 "../src/contacts-window.vala"
+               _tmp2_ = _tmp7_ <= gdk_screen_get_height (_tmp8_);
+#line 704 "contacts-window.c"
+       } else {
+#line 123 "../src/contacts-window.vala"
+               _tmp2_ = FALSE;
+#line 708 "contacts-window.c"
+       }
+#line 123 "../src/contacts-window.vala"
+       if (_tmp2_) {
+#line 712 "contacts-window.c"
+               gint _tmp9_;
+               gint _tmp10_;
+#line 124 "../src/contacts-window.vala"
+               _tmp9_ = self->priv->_window_width;
+#line 124 "../src/contacts-window.vala"
+               _tmp10_ = self->priv->_window_height;
+#line 124 "../src/contacts-window.vala"
+               gtk_window_set_default_size ((GtkWindow*) self, _tmp9_, _tmp10_);
+#line 721 "contacts-window.c"
+       }
+#line 126 "../src/contacts-window.vala"
+       _tmp11_ = self->priv->_window_maximized;
+#line 126 "../src/contacts-window.vala"
+       if (_tmp11_) {
+#line 127 "../src/contacts-window.vala"
+               gtk_window_maximize ((GtkWindow*) self);
+#line 729 "contacts-window.c"
+       }
+#line 130 "../src/contacts-window.vala"
+       g_object_set ((GtkWindow*) self, "window-position", GTK_WIN_POS_CENTER, NULL);
+#line 121 "../src/contacts-window.vala"
+       _g_object_unref0 (screen);
+#line 735 "contacts-window.c"
+}
+
+static gboolean
+contacts_window_real_window_state_event (GtkWidget* base,
+                                         GdkEventWindowState* event)
+{
+       ContactsWindow * self;
+       GdkWindowState _tmp0_;
+       gboolean result = FALSE;
+#line 133 "../src/contacts-window.vala"
+       self = (ContactsWindow*) base;
+#line 133 "../src/contacts-window.vala"
+       g_return_val_if_fail (event != NULL, FALSE);
+#line 134 "../src/contacts-window.vala"
+       _tmp0_ = event->new_window_state;
+#line 134 "../src/contacts-window.vala"
+       if (!((_tmp0_ & GDK_WINDOW_STATE_WITHDRAWN) == GDK_WINDOW_STATE_WITHDRAWN)) {
+#line 753 "contacts-window.c"
+               gboolean maximized = FALSE;
+               GdkWindowState _tmp1_;
+               gboolean _tmp2_;
+#line 135 "../src/contacts-window.vala"
+               _tmp1_ = event->new_window_state;
+#line 135 "../src/contacts-window.vala"
+               maximized = (_tmp1_ & GDK_WINDOW_STATE_MAXIMIZED) == GDK_WINDOW_STATE_MAXIMIZED;
+#line 136 "../src/contacts-window.vala"
+               _tmp2_ = self->priv->_window_maximized;
+#line 136 "../src/contacts-window.vala"
+               if (_tmp2_ != maximized) {
+#line 137 "../src/contacts-window.vala"
+                       contacts_window_set_window_maximized (self, maximized);
+#line 767 "contacts-window.c"
+               }
+       }
+#line 139 "../src/contacts-window.vala"
+       result = GTK_WIDGET_CLASS (contacts_window_parent_class)->window_state_event ((GtkWidget*) 
G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow), event);
+#line 139 "../src/contacts-window.vala"
+       return result;
+#line 774 "contacts-window.c"
+}
+
+static void
+contacts_window_real_size_allocate (GtkWidget* base,
+                                    GtkAllocation* allocation)
+{
+       ContactsWindow * self;
+       GtkAllocation _tmp0_;
+       GdkScreen* screen = NULL;
+       GdkScreen* _tmp1_;
+       GdkScreen* _tmp2_;
+       gboolean _tmp3_ = FALSE;
+       GdkScreen* _tmp4_;
+#line 143 "../src/contacts-window.vala"
+       self = (ContactsWindow*) base;
+#line 143 "../src/contacts-window.vala"
+       g_return_if_fail (allocation != NULL);
+#line 144 "../src/contacts-window.vala"
+       _tmp0_ = *allocation;
+#line 144 "../src/contacts-window.vala"
+       GTK_WIDGET_CLASS (contacts_window_parent_class)->size_allocate ((GtkWidget*) 
G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow), &_tmp0_);
+#line 146 "../src/contacts-window.vala"
+       _tmp1_ = gtk_window_get_screen ((GtkWindow*) self);
+#line 146 "../src/contacts-window.vala"
+       _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 146 "../src/contacts-window.vala"
+       screen = _tmp2_;
+#line 147 "../src/contacts-window.vala"
+       _tmp4_ = screen;
+#line 147 "../src/contacts-window.vala"
+       if (_tmp4_ != NULL) {
+#line 806 "contacts-window.c"
+               gboolean _tmp5_;
+#line 147 "../src/contacts-window.vala"
+               _tmp5_ = self->priv->_window_maximized;
+#line 147 "../src/contacts-window.vala"
+               _tmp3_ = !_tmp5_;
+#line 812 "contacts-window.c"
+       } else {
+#line 147 "../src/contacts-window.vala"
+               _tmp3_ = FALSE;
+#line 816 "contacts-window.c"
+       }
+#line 147 "../src/contacts-window.vala"
+       if (_tmp3_) {
+#line 820 "contacts-window.c"
+               gint width = 0;
+               gint height = 0;
+               gint _tmp6_ = 0;
+               gint _tmp7_ = 0;
+               gboolean _tmp8_ = FALSE;
+               gboolean _tmp9_ = FALSE;
+               gint _tmp10_;
+               gboolean _tmp12_ = FALSE;
+               gboolean _tmp13_ = FALSE;
+               gint _tmp14_;
+#line 150 "../src/contacts-window.vala"
+               width = 0;
+#line 151 "../src/contacts-window.vala"
+               height = 0;
+#line 152 "../src/contacts-window.vala"
+               gtk_window_get_size ((GtkWindow*) self, &_tmp6_, &_tmp7_);
+#line 152 "../src/contacts-window.vala"
+               width = _tmp6_;
+#line 152 "../src/contacts-window.vala"
+               height = _tmp7_;
+#line 156 "../src/contacts-window.vala"
+               _tmp10_ = self->priv->_window_width;
+#line 156 "../src/contacts-window.vala"
+               if (_tmp10_ != width) {
+#line 156 "../src/contacts-window.vala"
+                       _tmp9_ = width > 0;
+#line 847 "contacts-window.c"
+               } else {
+#line 156 "../src/contacts-window.vala"
+                       _tmp9_ = FALSE;
+#line 851 "contacts-window.c"
+               }
+#line 156 "../src/contacts-window.vala"
+               if (_tmp9_) {
+#line 855 "contacts-window.c"
+                       GdkScreen* _tmp11_;
+#line 156 "../src/contacts-window.vala"
+                       _tmp11_ = screen;
+#line 156 "../src/contacts-window.vala"
+                       _tmp8_ = width <= gdk_screen_get_width (_tmp11_);
+#line 861 "contacts-window.c"
+               } else {
+#line 156 "../src/contacts-window.vala"
+                       _tmp8_ = FALSE;
+#line 865 "contacts-window.c"
+               }
+#line 156 "../src/contacts-window.vala"
+               if (_tmp8_) {
+#line 157 "../src/contacts-window.vala"
+                       contacts_window_set_window_width (self, width);
+#line 871 "contacts-window.c"
+               }
+#line 159 "../src/contacts-window.vala"
+               _tmp14_ = self->priv->_window_height;
+#line 159 "../src/contacts-window.vala"
+               if (_tmp14_ != height) {
+#line 159 "../src/contacts-window.vala"
+                       _tmp13_ = height > 0;
+#line 879 "contacts-window.c"
+               } else {
+#line 159 "../src/contacts-window.vala"
+                       _tmp13_ = FALSE;
+#line 883 "contacts-window.c"
+               }
+#line 159 "../src/contacts-window.vala"
+               if (_tmp13_) {
+#line 887 "contacts-window.c"
+                       GdkScreen* _tmp15_;
+#line 159 "../src/contacts-window.vala"
+                       _tmp15_ = screen;
+#line 159 "../src/contacts-window.vala"
+                       _tmp12_ = height <= gdk_screen_get_height (_tmp15_);
+#line 893 "contacts-window.c"
+               } else {
+#line 159 "../src/contacts-window.vala"
+                       _tmp12_ = FALSE;
+#line 897 "contacts-window.c"
+               }
+#line 159 "../src/contacts-window.vala"
+               if (_tmp12_) {
+#line 160 "../src/contacts-window.vala"
+                       contacts_window_set_window_height (self, height);
+#line 903 "contacts-window.c"
+               }
+       }
+#line 143 "../src/contacts-window.vala"
+       _g_object_unref0 (screen);
+#line 908 "contacts-window.c"
+}
+
+static void
+__lambda51_ (ContactsWindow* self,
+             FolksIndividual* individual)
+{
+       ContactsListPane* _tmp0_;
+       FolksIndividual* _tmp1_;
+       FolksIndividual** _tmp2_;
+       GeeArrayList* _tmp3_;
+       GeeArrayList* _tmp4_;
+#line 169 "../src/contacts-window.vala"
+       g_return_if_fail (individual != NULL);
+#line 170 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->list_pane;
+#line 170 "../src/contacts-window.vala"
+       contacts_list_pane_hide_contact (_tmp0_, individual);
+#line 171 "../src/contacts-window.vala"
+       _tmp1_ = _g_object_ref0 (individual);
+#line 171 "../src/contacts-window.vala"
+       _tmp2_ = g_new0 (FolksIndividual*, 1 + 1);
+#line 171 "../src/contacts-window.vala"
+       _tmp2_[0] = _tmp1_;
+#line 171 "../src/contacts-window.vala"
+       _tmp3_ = gee_array_list_new_wrap (FOLKS_TYPE_INDIVIDUAL, (GBoxedCopyFunc) g_object_ref, 
(GDestroyNotify) g_object_unref, _tmp2_, 1, NULL, NULL, NULL);
+#line 171 "../src/contacts-window.vala"
+       _tmp4_ = _tmp3_;
+#line 171 "../src/contacts-window.vala"
+       contacts_window_delete_contacts (self, (GeeList*) _tmp4_);
+#line 171 "../src/contacts-window.vala"
+       _g_object_unref0 (_tmp4_);
+#line 940 "contacts-window.c"
+}
+
+static void
+___lambda51__contacts_contact_pane_will_delete (ContactsContactPane* _sender,
+                                                FolksIndividual* individual,
+                                                gpointer self)
+{
+#line 169 "../src/contacts-window.vala"
+       __lambda51_ ((ContactsWindow*) self, individual);
+#line 950 "contacts-window.c"
+}
+
+static void
+_contacts_window_contact_pane_contacts_linked_cb_contacts_contact_pane_contacts_linked (ContactsContactPane* 
_sender,
+                                                                                        const gchar* 
main_contact,
+                                                                                        const gchar* 
linked_contact,
+                                                                                        
ContactsLinkOperation* operation,
+                                                                                        gpointer self)
+{
+#line 173 "../src/contacts-window.vala"
+       contacts_window_contact_pane_contacts_linked_cb ((ContactsWindow*) self, main_contact, 
linked_contact, operation);
+#line 962 "contacts-window.c"
+}
+
+static void
+__lambda55_ (ContactsWindow* self,
+             const gchar* display_name)
+{
+       GtkHeaderBar* _tmp0_;
+#line 174 "../src/contacts-window.vala"
+       g_return_if_fail (display_name != NULL);
+#line 175 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->right_header;
+#line 175 "../src/contacts-window.vala"
+       gtk_header_bar_set_title (_tmp0_, display_name);
+#line 976 "contacts-window.c"
+}
+
+static void
+___lambda55__contacts_contact_pane_display_name_changed (ContactsContactPane* _sender,
+                                                         const gchar* new_display_name,
+                                                         gpointer self)
+{
+#line 174 "../src/contacts-window.vala"
+       __lambda55_ ((ContactsWindow*) self, new_display_name);
+#line 986 "contacts-window.c"
+}
+
+static void
+contacts_window_create_contact_pane (ContactsWindow* self)
+{
+       ContactsStore* _tmp0_;
+       ContactsContactPane* _tmp1_;
+       ContactsContactPane* _tmp2_;
+       ContactsContactPane* _tmp3_;
+       ContactsContactPane* _tmp4_;
+       ContactsContactPane* _tmp5_;
+       ContactsContactPane* _tmp6_;
+       GtkContainer* _tmp7_;
+       ContactsContactPane* _tmp8_;
+#line 165 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 166 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->_store;
+#line 166 "../src/contacts-window.vala"
+       _tmp1_ = contacts_contact_pane_new (self, _tmp0_);
+#line 166 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp1_);
+#line 166 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->contact_pane);
+#line 166 "../src/contacts-window.vala"
+       self->priv->contact_pane = _tmp1_;
+#line 167 "../src/contacts-window.vala"
+       _tmp2_ = self->priv->contact_pane;
+#line 167 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp2_, TRUE);
+#line 168 "../src/contacts-window.vala"
+       _tmp3_ = self->priv->contact_pane;
+#line 168 "../src/contacts-window.vala"
+       gtk_widget_set_hexpand ((GtkWidget*) _tmp3_, TRUE);
+#line 169 "../src/contacts-window.vala"
+       _tmp4_ = self->priv->contact_pane;
+#line 169 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp4_, "will-delete", (GCallback) 
___lambda51__contacts_contact_pane_will_delete, self, 0);
+#line 173 "../src/contacts-window.vala"
+       _tmp5_ = self->priv->contact_pane;
+#line 173 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp5_, "contacts-linked", (GCallback) 
_contacts_window_contact_pane_contacts_linked_cb_contacts_contact_pane_contacts_linked, self, 0);
+#line 174 "../src/contacts-window.vala"
+       _tmp6_ = self->priv->contact_pane;
+#line 174 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp6_, "display-name-changed", (GCallback) 
___lambda55__contacts_contact_pane_display_name_changed, self, 0);
+#line 177 "../src/contacts-window.vala"
+       _tmp7_ = self->priv->contact_pane_container;
+#line 177 "../src/contacts-window.vala"
+       _tmp8_ = self->priv->contact_pane;
+#line 177 "../src/contacts-window.vala"
+       gtk_container_add (_tmp7_, (GtkWidget*) _tmp8_);
+#line 1039 "contacts-window.c"
+}
+
+static void
+_contacts_window_list_pane_selection_changed_cb_contacts_list_pane_selection_changed (ContactsListPane* 
_sender,
+                                                                                      FolksIndividual* 
individual,
+                                                                                      gpointer self)
+{
+#line 188 "../src/contacts-window.vala"
+       contacts_window_list_pane_selection_changed_cb ((ContactsWindow*) self, individual);
+#line 1049 "contacts-window.c"
+}
+
+static void
+_contacts_window_list_pane_link_contacts_cb_contacts_list_pane_link_contacts (ContactsListPane* _sender,
+                                                                              GeeLinkedList* individual,
+                                                                              gpointer self)
+{
+#line 189 "../src/contacts-window.vala"
+       contacts_window_list_pane_link_contacts_cb ((ContactsWindow*) self, individual);
+#line 1059 "contacts-window.c"
+}
+
+static void
+_contacts_window_delete_contacts_contacts_list_pane_delete_contacts (ContactsListPane* _sender,
+                                                                     GeeLinkedList* individual,
+                                                                     gpointer self)
+{
+#line 190 "../src/contacts-window.vala"
+       contacts_window_delete_contacts ((ContactsWindow*) self, individual);
+#line 1069 "contacts-window.c"
+}
+
+static void
+__lambda61_ (ContactsWindow* self,
+             gint nr_contacts)
+{
+#line 193 "../src/contacts-window.vala"
+       if (nr_contacts != 0) {
+#line 1078 "contacts-window.c"
+               GtkHeaderBar* _tmp0_;
+               gchar* _tmp1_;
+               gchar* _tmp2_;
+#line 194 "../src/contacts-window.vala"
+               _tmp0_ = self->priv->left_header;
+#line 194 "../src/contacts-window.vala"
+               _tmp1_ = g_strdup_printf (ngettext ("%d Selected", "%d Selected", (gulong) nr_contacts), 
nr_contacts);
+#line 194 "../src/contacts-window.vala"
+               _tmp2_ = _tmp1_;
+#line 194 "../src/contacts-window.vala"
+               gtk_header_bar_set_title (_tmp0_, _tmp2_);
+#line 194 "../src/contacts-window.vala"
+               _g_free0 (_tmp2_);
+#line 1092 "contacts-window.c"
+       }
+}
+
+static void
+___lambda61__contacts_list_pane_contacts_marked (ContactsListPane* _sender,
+                                                 gint contacts_marked,
+                                                 gpointer self)
+{
+#line 192 "../src/contacts-window.vala"
+       __lambda61_ ((ContactsWindow*) self, contacts_marked);
+#line 1103 "contacts-window.c"
+}
+
+void
+contacts_window_set_list_pane (ContactsWindow* self)
+{
+       ContactsListPane* _tmp0_;
+       ContactsSettings* _tmp1_;
+       ContactsStore* _tmp2_;
+       ContactsListPane* _tmp3_;
+       ContactsListPane* _tmp4_;
+       ContactsListPane* _tmp5_;
+       ContactsListPane* _tmp6_;
+       ContactsListPane* _tmp7_;
+       ContactsListPane* _tmp8_;
+       GtkStack* _tmp9_;
+       ContactsListPane* _tmp10_;
+       ContactsListPane* _tmp11_;
+       GtkStack* _tmp12_;
+       ContactsListPane* _tmp13_;
+       ContactsContactPane* _tmp14_;
+       FolksIndividual* _tmp15_;
+#line 180 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 183 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->list_pane;
+#line 183 "../src/contacts-window.vala"
+       if (_tmp0_ != NULL) {
+#line 184 "../src/contacts-window.vala"
+               return;
+#line 1133 "contacts-window.c"
+       }
+#line 186 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->settings;
+#line 186 "../src/contacts-window.vala"
+       _tmp2_ = self->priv->_store;
+#line 186 "../src/contacts-window.vala"
+       _tmp3_ = contacts_list_pane_new (_tmp1_, _tmp2_);
+#line 186 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp3_);
+#line 186 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->list_pane);
+#line 186 "../src/contacts-window.vala"
+       self->priv->list_pane = _tmp3_;
+#line 187 "../src/contacts-window.vala"
+       _tmp4_ = self->priv->list_pane;
+#line 187 "../src/contacts-window.vala"
+       g_object_bind_property_with_closures ((GObject*) self, "state", (GObject*) _tmp4_, "state", 
G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new 
((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new 
((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 188 "../src/contacts-window.vala"
+       _tmp5_ = self->priv->list_pane;
+#line 188 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp5_, "selection-changed", (GCallback) 
_contacts_window_list_pane_selection_changed_cb_contacts_list_pane_selection_changed, self, 0);
+#line 189 "../src/contacts-window.vala"
+       _tmp6_ = self->priv->list_pane;
+#line 189 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp6_, "link-contacts", (GCallback) 
_contacts_window_list_pane_link_contacts_cb_contacts_list_pane_link_contacts, self, 0);
+#line 190 "../src/contacts-window.vala"
+       _tmp7_ = self->priv->list_pane;
+#line 190 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp7_, "delete-contacts", (GCallback) 
_contacts_window_delete_contacts_contacts_list_pane_delete_contacts, self, 0);
+#line 192 "../src/contacts-window.vala"
+       _tmp8_ = self->priv->list_pane;
+#line 192 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp8_, "contacts-marked", (GCallback) 
___lambda61__contacts_list_pane_contacts_marked, self, 0);
+#line 198 "../src/contacts-window.vala"
+       _tmp9_ = self->priv->list_pane_stack;
+#line 198 "../src/contacts-window.vala"
+       _tmp10_ = self->priv->list_pane;
+#line 198 "../src/contacts-window.vala"
+       gtk_container_add ((GtkContainer*) _tmp9_, (GtkWidget*) _tmp10_);
+#line 199 "../src/contacts-window.vala"
+       _tmp11_ = self->priv->list_pane;
+#line 199 "../src/contacts-window.vala"
+       gtk_widget_show ((GtkWidget*) _tmp11_);
+#line 200 "../src/contacts-window.vala"
+       _tmp12_ = self->priv->list_pane_stack;
+#line 200 "../src/contacts-window.vala"
+       _tmp13_ = self->priv->list_pane;
+#line 200 "../src/contacts-window.vala"
+       gtk_stack_set_visible_child (_tmp12_, (GtkWidget*) _tmp13_);
+#line 202 "../src/contacts-window.vala"
+       _tmp14_ = self->priv->contact_pane;
+#line 202 "../src/contacts-window.vala"
+       _tmp15_ = _tmp14_->individual;
+#line 202 "../src/contacts-window.vala"
+       if (_tmp15_ != NULL) {
+#line 1189 "contacts-window.c"
+               ContactsListPane* _tmp16_;
+               ContactsContactPane* _tmp17_;
+               FolksIndividual* _tmp18_;
+#line 203 "../src/contacts-window.vala"
+               _tmp16_ = self->priv->list_pane;
+#line 203 "../src/contacts-window.vala"
+               _tmp17_ = self->priv->contact_pane;
+#line 203 "../src/contacts-window.vala"
+               _tmp18_ = _tmp17_->individual;
+#line 203 "../src/contacts-window.vala"
+               contacts_list_pane_select_contact (_tmp16_, _tmp18_);
+#line 1201 "contacts-window.c"
+       }
+}
+
+static void
+contacts_window_on_ui_state_changed (ContactsWindow* self,
+                                     GObject* obj,
+                                     GParamSpec* pspec)
+{
+       gboolean _tmp0_ = FALSE;
+       ContactsUiState _tmp1_;
+       GtkButton* _tmp3_;
+       GtkMenuButton* _tmp4_;
+       GtkHeaderBar* _tmp5_;
+       GtkHeaderBar* _tmp6_;
+       GtkButton* _tmp7_;
+       GtkToggleButton* _tmp8_;
+       ContactsUiState _tmp9_;
+       GtkButton* _tmp10_;
+       ContactsUiState _tmp11_;
+       ContactsUiState _tmp12_;
+       GtkButton* _tmp14_;
+       GtkButton* _tmp15_;
+       ContactsUiState _tmp16_;
+       ContactsUiState _tmp17_;
+       gboolean _tmp22_ = FALSE;
+       ContactsUiState _tmp23_;
+       HdyTitleBar* _tmp25_;
+       gboolean _tmp26_ = FALSE;
+       gboolean _tmp27_ = FALSE;
+       ContactsUiState _tmp28_;
+       HdyLeaflet* _tmp31_;
+#line 207 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 207 "../src/contacts-window.vala"
+       g_return_if_fail (obj != NULL);
+#line 207 "../src/contacts-window.vala"
+       g_return_if_fail (pspec != NULL);
+#line 213 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->_state;
+#line 213 "../src/contacts-window.vala"
+       if (_tmp1_ == CONTACTS_UI_STATE_NORMAL) {
+#line 213 "../src/contacts-window.vala"
+               _tmp0_ = TRUE;
+#line 1245 "contacts-window.c"
+       } else {
+               ContactsUiState _tmp2_;
+#line 213 "../src/contacts-window.vala"
+               _tmp2_ = self->priv->_state;
+#line 213 "../src/contacts-window.vala"
+               _tmp0_ = _tmp2_ == CONTACTS_UI_STATE_SHOWING;
+#line 1252 "contacts-window.c"
+       }
+#line 209 "../src/contacts-window.vala"
+       _tmp3_ = self->priv->add_button;
+#line 209 "../src/contacts-window.vala"
+       _tmp4_ = self->priv->hamburger_menu_button;
+#line 209 "../src/contacts-window.vala"
+       _tmp5_ = self->priv->left_header;
+#line 209 "../src/contacts-window.vala"
+       _tmp6_ = self->priv->right_header;
+#line 209 "../src/contacts-window.vala"
+       gtk_header_bar_set_show_close_button (_tmp6_, _tmp0_);
+#line 209 "../src/contacts-window.vala"
+       gtk_header_bar_set_show_close_button (_tmp5_, _tmp0_);
+#line 209 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp4_, _tmp0_);
+#line 209 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp3_, _tmp0_);
+#line 216 "../src/contacts-window.vala"
+       _tmp7_ = self->priv->edit_button;
+#line 216 "../src/contacts-window.vala"
+       _tmp8_ = self->priv->favorite_button;
+#line 216 "../src/contacts-window.vala"
+       _tmp9_ = self->priv->_state;
+#line 216 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp8_, _tmp9_ == CONTACTS_UI_STATE_SHOWING);
+#line 216 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp7_, _tmp9_ == CONTACTS_UI_STATE_SHOWING);
+#line 221 "../src/contacts-window.vala"
+       _tmp10_ = self->priv->select_cancel_button;
+#line 221 "../src/contacts-window.vala"
+       _tmp11_ = self->priv->_state;
+#line 221 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp10_, _tmp11_ == CONTACTS_UI_STATE_SELECTING);
+#line 223 "../src/contacts-window.vala"
+       _tmp12_ = self->priv->_state;
+#line 223 "../src/contacts-window.vala"
+       if (_tmp12_ != CONTACTS_UI_STATE_SELECTING) {
+#line 1290 "contacts-window.c"
+               GtkHeaderBar* _tmp13_;
+#line 224 "../src/contacts-window.vala"
+               _tmp13_ = self->priv->left_header;
+#line 224 "../src/contacts-window.vala"
+               gtk_header_bar_set_title (_tmp13_, _ ("Contacts"));
+#line 1296 "contacts-window.c"
+       }
+#line 227 "../src/contacts-window.vala"
+       _tmp14_ = self->priv->cancel_button;
+#line 227 "../src/contacts-window.vala"
+       _tmp15_ = self->priv->done_button;
+#line 227 "../src/contacts-window.vala"
+       _tmp16_ = self->priv->_state;
+#line 227 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp15_, contacts_ui_state_editing (_tmp16_));
+#line 227 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp14_, contacts_ui_state_editing (_tmp16_));
+#line 230 "../src/contacts-window.vala"
+       _tmp17_ = self->priv->_state;
+#line 230 "../src/contacts-window.vala"
+       if (contacts_ui_state_editing (_tmp17_)) {
+#line 1312 "contacts-window.c"
+               const gchar* _tmp18_ = NULL;
+               ContactsUiState _tmp19_;
+               GtkButton* _tmp20_;
+               GtkButton* _tmp21_;
+#line 231 "../src/contacts-window.vala"
+               _tmp19_ = self->priv->_state;
+#line 231 "../src/contacts-window.vala"
+               if (_tmp19_ == CONTACTS_UI_STATE_CREATING) {
+#line 231 "../src/contacts-window.vala"
+                       _tmp18_ = _ ("Add");
+#line 1323 "contacts-window.c"
+               } else {
+#line 231 "../src/contacts-window.vala"
+                       _tmp18_ = _ ("Done");
+#line 1327 "contacts-window.c"
+               }
+#line 231 "../src/contacts-window.vala"
+               _tmp20_ = self->priv->done_button;
+#line 231 "../src/contacts-window.vala"
+               gtk_button_set_label (_tmp20_, _tmp18_);
+#line 234 "../src/contacts-window.vala"
+               _tmp21_ = self->priv->done_button;
+#line 234 "../src/contacts-window.vala"
+               gtk_widget_set_focus_on_click (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, gtk_widget_get_type (), 
GtkWidget), TRUE);
+#line 1337 "contacts-window.c"
+       }
+#line 237 "../src/contacts-window.vala"
+       _tmp23_ = self->priv->_state;
+#line 237 "../src/contacts-window.vala"
+       if (_tmp23_ == CONTACTS_UI_STATE_SELECTING) {
+#line 237 "../src/contacts-window.vala"
+               _tmp22_ = TRUE;
+#line 1345 "contacts-window.c"
+       } else {
+               ContactsUiState _tmp24_;
+#line 237 "../src/contacts-window.vala"
+               _tmp24_ = self->priv->_state;
+#line 237 "../src/contacts-window.vala"
+               _tmp22_ = contacts_ui_state_editing (_tmp24_);
+#line 1352 "contacts-window.c"
+       }
+#line 237 "../src/contacts-window.vala"
+       _tmp25_ = self->priv->titlebar;
+#line 237 "../src/contacts-window.vala"
+       hdy_title_bar_set_selection_mode (_tmp25_, _tmp22_);
+#line 240 "../src/contacts-window.vala"
+       _tmp28_ = self->priv->_state;
+#line 240 "../src/contacts-window.vala"
+       if (_tmp28_ == CONTACTS_UI_STATE_NORMAL) {
+#line 240 "../src/contacts-window.vala"
+               _tmp27_ = TRUE;
+#line 1364 "contacts-window.c"
+       } else {
+               ContactsUiState _tmp29_;
+#line 241 "../src/contacts-window.vala"
+               _tmp29_ = self->priv->_state;
+#line 241 "../src/contacts-window.vala"
+               _tmp27_ = _tmp29_ == CONTACTS_UI_STATE_SHOWING;
+#line 1371 "contacts-window.c"
+       }
+#line 240 "../src/contacts-window.vala"
+       if (_tmp27_) {
+#line 240 "../src/contacts-window.vala"
+               _tmp26_ = TRUE;
+#line 1377 "contacts-window.c"
+       } else {
+               ContactsUiState _tmp30_;
+#line 242 "../src/contacts-window.vala"
+               _tmp30_ = self->priv->_state;
+#line 242 "../src/contacts-window.vala"
+               _tmp26_ = _tmp30_ == CONTACTS_UI_STATE_SELECTING;
+#line 1384 "contacts-window.c"
+       }
+#line 240 "../src/contacts-window.vala"
+       _tmp31_ = self->priv->content_box;
+#line 240 "../src/contacts-window.vala"
+       hdy_leaflet_set_can_swipe_back (_tmp31_, _tmp26_);
+#line 1390 "contacts-window.c"
+}
+
+static void
+contacts_window_on_back_clicked (ContactsWindow* self)
+{
+#line 246 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 247 "../src/contacts-window.vala"
+       contacts_window_show_list_pane (self);
+#line 1400 "contacts-window.c"
+}
+
+static void
+_contacts_window_on_back_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                     gpointer self)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_on_back_clicked ((ContactsWindow*) self);
+#line 1409 "contacts-window.c"
+}
+
+static void
+contacts_window_on_edit_button_clicked (ContactsWindow* self)
+{
+       ContactsContactPane* _tmp0_;
+       FolksIndividual* _tmp1_;
+       gchar* name = NULL;
+       ContactsContactPane* _tmp2_;
+       FolksIndividual* _tmp3_;
+       const gchar* _tmp4_;
+       const gchar* _tmp5_;
+       gchar* _tmp6_;
+       GtkHeaderBar* _tmp7_;
+       const gchar* _tmp8_;
+       gchar* _tmp9_;
+       gchar* _tmp10_;
+       ContactsContactPane* _tmp11_;
+#line 251 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 252 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->contact_pane;
+#line 252 "../src/contacts-window.vala"
+       _tmp1_ = _tmp0_->individual;
+#line 252 "../src/contacts-window.vala"
+       if (_tmp1_ == NULL) {
+#line 253 "../src/contacts-window.vala"
+               return;
+#line 1438 "contacts-window.c"
+       }
+#line 255 "../src/contacts-window.vala"
+       contacts_window_set_state (self, CONTACTS_UI_STATE_UPDATING);
+#line 257 "../src/contacts-window.vala"
+       _tmp2_ = self->priv->contact_pane;
+#line 257 "../src/contacts-window.vala"
+       _tmp3_ = _tmp2_->individual;
+#line 257 "../src/contacts-window.vala"
+       _tmp4_ = folks_individual_get_display_name (_tmp3_);
+#line 257 "../src/contacts-window.vala"
+       _tmp5_ = _tmp4_;
+#line 257 "../src/contacts-window.vala"
+       _tmp6_ = g_strdup (_tmp5_);
+#line 257 "../src/contacts-window.vala"
+       name = _tmp6_;
+#line 258 "../src/contacts-window.vala"
+       _tmp7_ = self->priv->right_header;
+#line 258 "../src/contacts-window.vala"
+       _tmp8_ = name;
+#line 258 "../src/contacts-window.vala"
+       _tmp9_ = g_strdup_printf (_ ("Editing %s"), _tmp8_);
+#line 258 "../src/contacts-window.vala"
+       _tmp10_ = _tmp9_;
+#line 258 "../src/contacts-window.vala"
+       gtk_header_bar_set_title (_tmp7_, _tmp10_);
+#line 258 "../src/contacts-window.vala"
+       _g_free0 (_tmp10_);
+#line 259 "../src/contacts-window.vala"
+       _tmp11_ = self->priv->contact_pane;
+#line 259 "../src/contacts-window.vala"
+       contacts_contact_pane_start_editing (_tmp11_);
+#line 251 "../src/contacts-window.vala"
+       _g_free0 (name);
+#line 1472 "contacts-window.c"
+}
+
+static void
+_contacts_window_on_edit_button_clicked_gtk_button_clicked (GtkButton* _sender,
+                                                            gpointer self)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_on_edit_button_clicked ((ContactsWindow*) self);
+#line 1481 "contacts-window.c"
+}
+
+static void
+contacts_window_on_favorite_button_toggled (ContactsWindow* self,
+                                            GtkToggleButton* button)
+{
+       gboolean is_fav = FALSE;
+       ContactsContactPane* _tmp0_;
+       FolksIndividual* _tmp1_;
+       gboolean _tmp2_;
+       gboolean _tmp3_;
+       ContactsContactPane* _tmp4_;
+       FolksIndividual* _tmp5_;
+#line 263 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 263 "../src/contacts-window.vala"
+       g_return_if_fail (button != NULL);
+#line 265 "../src/contacts-window.vala"
+       if (self->priv->ignore_favorite_button_toggled) {
+#line 266 "../src/contacts-window.vala"
+               return;
+#line 1503 "contacts-window.c"
+       }
+#line 268 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->contact_pane;
+#line 268 "../src/contacts-window.vala"
+       _tmp1_ = _tmp0_->individual;
+#line 268 "../src/contacts-window.vala"
+       _tmp2_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) _tmp1_);
+#line 268 "../src/contacts-window.vala"
+       _tmp3_ = _tmp2_;
+#line 268 "../src/contacts-window.vala"
+       is_fav = _tmp3_;
+#line 269 "../src/contacts-window.vala"
+       _tmp4_ = self->priv->contact_pane;
+#line 269 "../src/contacts-window.vala"
+       _tmp5_ = _tmp4_->individual;
+#line 269 "../src/contacts-window.vala"
+       folks_favourite_details_set_is_favourite ((FolksFavouriteDetails*) _tmp5_, !is_fav);
+#line 1521 "contacts-window.c"
+}
+
+static void
+_contacts_window_on_favorite_button_toggled_gtk_toggle_button_toggled (GtkToggleButton* _sender,
+                                                                       gpointer self)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_on_favorite_button_toggled ((ContactsWindow*) self, _sender);
+#line 1530 "contacts-window.c"
+}
+
+static void
+contacts_window_stop_editing (ContactsWindow* self,
+                              gboolean drop_changes)
+{
+       ContactsUiState _tmp0_;
+       ContactsContactPane* _tmp4_;
+       FolksIndividual* _tmp5_;
+#line 272 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 273 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->_state;
+#line 273 "../src/contacts-window.vala"
+       if (_tmp0_ == CONTACTS_UI_STATE_CREATING) {
+#line 274 "../src/contacts-window.vala"
+               contacts_window_show_list_pane (self);
+#line 276 "../src/contacts-window.vala"
+               if (drop_changes) {
+#line 1550 "contacts-window.c"
+                       ContactsContactPane* _tmp1_;
+#line 277 "../src/contacts-window.vala"
+                       _tmp1_ = self->priv->contact_pane;
+#line 277 "../src/contacts-window.vala"
+                       contacts_contact_pane_stop_editing (_tmp1_, drop_changes);
+#line 1556 "contacts-window.c"
+               } else {
+                       ContactsContactPane* _tmp2_;
+#line 279 "../src/contacts-window.vala"
+                       _tmp2_ = self->priv->contact_pane;
+#line 279 "../src/contacts-window.vala"
+                       contacts_contact_pane_create_contact (_tmp2_, NULL, NULL);
+#line 1563 "contacts-window.c"
+               }
+#line 281 "../src/contacts-window.vala"
+               contacts_window_set_state (self, CONTACTS_UI_STATE_NORMAL);
+#line 1567 "contacts-window.c"
+       } else {
+               ContactsContactPane* _tmp3_;
+#line 283 "../src/contacts-window.vala"
+               contacts_window_show_contact_pane (self);
+#line 284 "../src/contacts-window.vala"
+               _tmp3_ = self->priv->contact_pane;
+#line 284 "../src/contacts-window.vala"
+               contacts_contact_pane_stop_editing (_tmp3_, drop_changes);
+#line 285 "../src/contacts-window.vala"
+               contacts_window_set_state (self, CONTACTS_UI_STATE_SHOWING);
+#line 1578 "contacts-window.c"
+       }
+#line 288 "../src/contacts-window.vala"
+       _tmp4_ = self->priv->contact_pane;
+#line 288 "../src/contacts-window.vala"
+       _tmp5_ = _tmp4_->individual;
+#line 288 "../src/contacts-window.vala"
+       if (_tmp5_ != NULL) {
+#line 1586 "contacts-window.c"
+               GtkHeaderBar* _tmp6_;
+               ContactsContactPane* _tmp7_;
+               FolksIndividual* _tmp8_;
+               const gchar* _tmp9_;
+               const gchar* _tmp10_;
+#line 289 "../src/contacts-window.vala"
+               _tmp6_ = self->priv->right_header;
+#line 289 "../src/contacts-window.vala"
+               _tmp7_ = self->priv->contact_pane;
+#line 289 "../src/contacts-window.vala"
+               _tmp8_ = _tmp7_->individual;
+#line 289 "../src/contacts-window.vala"
+               _tmp9_ = folks_individual_get_display_name (_tmp8_);
+#line 289 "../src/contacts-window.vala"
+               _tmp10_ = _tmp9_;
+#line 289 "../src/contacts-window.vala"
+               gtk_header_bar_set_title (_tmp6_, _tmp10_);
+#line 1604 "contacts-window.c"
+       } else {
+               GtkHeaderBar* _tmp11_;
+#line 291 "../src/contacts-window.vala"
+               _tmp11_ = self->priv->right_header;
+#line 291 "../src/contacts-window.vala"
+               gtk_header_bar_set_title (_tmp11_, "");
+#line 1611 "contacts-window.c"
+       }
+}
+
+void
+contacts_window_add_notification (ContactsWindow* self,
+                                  ContactsInAppNotification* notification)
+{
+       GtkOverlay* _tmp0_;
+#line 295 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 295 "../src/contacts-window.vala"
+       g_return_if_fail (notification != NULL);
+#line 296 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->notification_overlay;
+#line 296 "../src/contacts-window.vala"
+       gtk_overlay_add_overlay (_tmp0_, (GtkWidget*) notification);
+#line 297 "../src/contacts-window.vala"
+       contacts_in_app_notification_show (notification);
+#line 1630 "contacts-window.c"
+}
+
+void
+contacts_window_set_shown_contact (ContactsWindow* self,
+                                   FolksIndividual* i)
+{
+       ContactsContactPane* _tmp0_;
+       ContactsContactPane* _tmp1_;
+       ContactsListPane* _tmp2_;
+#line 300 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 302 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->contact_pane;
+#line 302 "../src/contacts-window.vala"
+       if (_tmp0_->on_edit_mode) {
+#line 303 "../src/contacts-window.vala"
+               contacts_window_stop_editing (self, FALSE);
+#line 1648 "contacts-window.c"
+       }
+#line 305 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->contact_pane;
+#line 305 "../src/contacts-window.vala"
+       contacts_contact_pane_show_contact (_tmp1_, i);
+#line 306 "../src/contacts-window.vala"
+       _tmp2_ = self->priv->list_pane;
+#line 306 "../src/contacts-window.vala"
+       if (_tmp2_ != NULL) {
+#line 1658 "contacts-window.c"
+               ContactsListPane* _tmp3_;
+#line 307 "../src/contacts-window.vala"
+               _tmp3_ = self->priv->list_pane;
+#line 307 "../src/contacts-window.vala"
+               contacts_list_pane_select_contact (_tmp3_, i);
+#line 1664 "contacts-window.c"
+       }
+#line 310 "../src/contacts-window.vala"
+       if (i != NULL) {
+#line 1668 "contacts-window.c"
+               GtkToggleButton* _tmp4_;
+               gboolean _tmp5_;
+               gboolean _tmp6_;
+               const gchar* _tmp7_ = NULL;
+               gboolean _tmp8_;
+               gboolean _tmp9_;
+               GtkToggleButton* _tmp10_;
+               GtkHeaderBar* _tmp11_;
+               const gchar* _tmp12_;
+               const gchar* _tmp13_;
+#line 311 "../src/contacts-window.vala"
+               self->priv->ignore_favorite_button_toggled = TRUE;
+#line 312 "../src/contacts-window.vala"
+               _tmp4_ = self->priv->favorite_button;
+#line 312 "../src/contacts-window.vala"
+               _tmp5_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) i);
+#line 312 "../src/contacts-window.vala"
+               _tmp6_ = _tmp5_;
+#line 312 "../src/contacts-window.vala"
+               gtk_toggle_button_set_active (_tmp4_, _tmp6_);
+#line 313 "../src/contacts-window.vala"
+               self->priv->ignore_favorite_button_toggled = FALSE;
+#line 314 "../src/contacts-window.vala"
+               _tmp8_ = folks_favourite_details_get_is_favourite ((FolksFavouriteDetails*) i);
+#line 314 "../src/contacts-window.vala"
+               _tmp9_ = _tmp8_;
+#line 314 "../src/contacts-window.vala"
+               if (_tmp9_) {
+#line 314 "../src/contacts-window.vala"
+                       _tmp7_ = _ ("Unmark as favorite");
+#line 1699 "contacts-window.c"
+               } else {
+#line 315 "../src/contacts-window.vala"
+                       _tmp7_ = _ ("Mark as favorite");
+#line 1703 "contacts-window.c"
+               }
+#line 314 "../src/contacts-window.vala"
+               _tmp10_ = self->priv->favorite_button;
+#line 314 "../src/contacts-window.vala"
+               gtk_widget_set_tooltip_text ((GtkWidget*) _tmp10_, _tmp7_);
+#line 316 "../src/contacts-window.vala"
+               _tmp11_ = self->priv->right_header;
+#line 316 "../src/contacts-window.vala"
+               _tmp12_ = folks_individual_get_display_name (i);
+#line 316 "../src/contacts-window.vala"
+               _tmp13_ = _tmp12_;
+#line 316 "../src/contacts-window.vala"
+               gtk_header_bar_set_title (_tmp11_, _tmp13_);
+#line 1717 "contacts-window.c"
+       }
+}
+
+void
+contacts_window_new_contact (ContactsWindow* self)
+{
+       gboolean _tmp0_ = FALSE;
+       ContactsUiState _tmp1_;
+       ContactsListPane* _tmp3_;
+       GtkHeaderBar* _tmp4_;
+       ContactsContactPane* _tmp5_;
+#line 321 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 322 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->_state;
+#line 322 "../src/contacts-window.vala"
+       if (_tmp1_ == CONTACTS_UI_STATE_UPDATING) {
+#line 322 "../src/contacts-window.vala"
+               _tmp0_ = TRUE;
+#line 1737 "contacts-window.c"
+       } else {
+               ContactsUiState _tmp2_;
+#line 322 "../src/contacts-window.vala"
+               _tmp2_ = self->priv->_state;
+#line 322 "../src/contacts-window.vala"
+               _tmp0_ = _tmp2_ == CONTACTS_UI_STATE_CREATING;
+#line 1744 "contacts-window.c"
+       }
+#line 322 "../src/contacts-window.vala"
+       if (_tmp0_) {
+#line 323 "../src/contacts-window.vala"
+               return;
+#line 1750 "contacts-window.c"
+       }
+#line 325 "../src/contacts-window.vala"
+       _tmp3_ = self->priv->list_pane;
+#line 325 "../src/contacts-window.vala"
+       contacts_list_pane_select_contact (_tmp3_, NULL);
+#line 327 "../src/contacts-window.vala"
+       contacts_window_set_state (self, CONTACTS_UI_STATE_CREATING);
+#line 329 "../src/contacts-window.vala"
+       _tmp4_ = self->priv->right_header;
+#line 329 "../src/contacts-window.vala"
+       gtk_header_bar_set_title (_tmp4_, _ ("New Contact"));
+#line 331 "../src/contacts-window.vala"
+       _tmp5_ = self->priv->contact_pane;
+#line 331 "../src/contacts-window.vala"
+       contacts_contact_pane_new_contact (_tmp5_);
+#line 332 "../src/contacts-window.vala"
+       contacts_window_show_contact_pane (self);
+#line 1768 "contacts-window.c"
+}
+
+static void
+_contacts_window_new_contact_gtk_button_clicked (GtkButton* _sender,
+                                                 gpointer self)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_new_contact ((ContactsWindow*) self);
+#line 1777 "contacts-window.c"
+}
+
+static void
+contacts_window_on_cancel_visible (ContactsWindow* self)
+{
+#line 336 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 337 "../src/contacts-window.vala"
+       contacts_window_update (self);
+#line 1787 "contacts-window.c"
+}
+
+static void
+_contacts_window_on_cancel_visible_g_object_notify (GObject* _sender,
+                                                    GParamSpec* pspec,
+                                                    gpointer self)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_on_cancel_visible ((ContactsWindow*) self);
+#line 1797 "contacts-window.c"
+}
+
+static void
+contacts_window_on_fold (ContactsWindow* self)
+{
+#line 341 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 342 "../src/contacts-window.vala"
+       contacts_window_update (self);
+#line 1807 "contacts-window.c"
+}
+
+static void
+_contacts_window_on_fold_g_object_notify (GObject* _sender,
+                                          GParamSpec* pspec,
+                                          gpointer self)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_on_fold ((ContactsWindow*) self);
+#line 1817 "contacts-window.c"
+}
+
+static void
+contacts_window_on_child_transition_running (ContactsWindow* self)
+{
+       gboolean _tmp0_ = FALSE;
+       HdyLeaflet* _tmp1_;
+       gboolean _tmp2_;
+       gboolean _tmp3_;
+#line 346 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 347 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->content_box;
+#line 347 "../src/contacts-window.vala"
+       _tmp2_ = hdy_leaflet_get_child_transition_running (_tmp1_);
+#line 347 "../src/contacts-window.vala"
+       _tmp3_ = _tmp2_;
+#line 347 "../src/contacts-window.vala"
+       if (!_tmp3_) {
+#line 1837 "contacts-window.c"
+               HdyLeaflet* _tmp4_;
+               const gchar* _tmp5_;
+               const gchar* _tmp6_;
+#line 347 "../src/contacts-window.vala"
+               _tmp4_ = self->priv->content_box;
+#line 347 "../src/contacts-window.vala"
+               _tmp5_ = hdy_leaflet_get_visible_child_name (_tmp4_);
+#line 347 "../src/contacts-window.vala"
+               _tmp6_ = _tmp5_;
+#line 347 "../src/contacts-window.vala"
+               _tmp0_ = g_strcmp0 (_tmp6_, "list-pane") == 0;
+#line 1849 "contacts-window.c"
+       } else {
+#line 347 "../src/contacts-window.vala"
+               _tmp0_ = FALSE;
+#line 1853 "contacts-window.c"
+       }
+#line 347 "../src/contacts-window.vala"
+       if (_tmp0_) {
+#line 1857 "contacts-window.c"
+               ContactsListPane* _tmp7_;
+#line 348 "../src/contacts-window.vala"
+               _tmp7_ = self->priv->list_pane;
+#line 348 "../src/contacts-window.vala"
+               contacts_list_pane_select_contact (_tmp7_, NULL);
+#line 1863 "contacts-window.c"
+       }
+}
+
+static void
+_contacts_window_on_child_transition_running_g_object_notify (GObject* _sender,
+                                                              GParamSpec* pspec,
+                                                              gpointer self)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_on_child_transition_running ((ContactsWindow*) self);
+#line 1874 "contacts-window.c"
+}
+
+static void
+contacts_window_update (ContactsWindow* self)
+{
+       gboolean _tmp0_ = FALSE;
+       HdyLeaflet* _tmp1_;
+       HdyFold _tmp2_;
+       HdyFold _tmp3_;
+       GtkHeaderBar* _tmp8_;
+       gboolean _tmp9_ = FALSE;
+       HdyLeaflet* _tmp10_;
+       HdyFold _tmp11_;
+       HdyFold _tmp12_;
+       GtkHeaderBar* _tmp17_;
+       gboolean _tmp18_ = FALSE;
+       gboolean _tmp19_ = FALSE;
+       HdyLeaflet* _tmp20_;
+       HdyFold _tmp21_;
+       HdyFold _tmp22_;
+       GtkRevealer* _tmp30_;
+       GtkRevealer* _tmp31_;
+#line 351 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 352 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->content_box;
+#line 352 "../src/contacts-window.vala"
+       _tmp2_ = hdy_leaflet_get_fold (_tmp1_);
+#line 352 "../src/contacts-window.vala"
+       _tmp3_ = _tmp2_;
+#line 352 "../src/contacts-window.vala"
+       if (_tmp3_ == HDY_FOLD_UNFOLDED) {
+#line 352 "../src/contacts-window.vala"
+               _tmp0_ = TRUE;
+#line 1909 "contacts-window.c"
+       } else {
+               HdyLeaflet* _tmp4_;
+               GtkWidget* _tmp5_;
+               GtkWidget* _tmp6_;
+               GtkHeaderBar* _tmp7_;
+#line 352 "../src/contacts-window.vala"
+               _tmp4_ = self->priv->header;
+#line 352 "../src/contacts-window.vala"
+               _tmp5_ = hdy_leaflet_get_visible_child (_tmp4_);
+#line 352 "../src/contacts-window.vala"
+               _tmp6_ = _tmp5_;
+#line 352 "../src/contacts-window.vala"
+               _tmp7_ = self->priv->left_header;
+#line 352 "../src/contacts-window.vala"
+               _tmp0_ = _tmp6_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, gtk_widget_get_type (), GtkWidget);
+#line 1925 "contacts-window.c"
+       }
+#line 352 "../src/contacts-window.vala"
+       _tmp8_ = self->priv->left_header;
+#line 352 "../src/contacts-window.vala"
+       gtk_header_bar_set_show_close_button (_tmp8_, _tmp0_);
+#line 353 "../src/contacts-window.vala"
+       _tmp10_ = self->priv->content_box;
+#line 353 "../src/contacts-window.vala"
+       _tmp11_ = hdy_leaflet_get_fold (_tmp10_);
+#line 353 "../src/contacts-window.vala"
+       _tmp12_ = _tmp11_;
+#line 353 "../src/contacts-window.vala"
+       if (_tmp12_ == HDY_FOLD_UNFOLDED) {
+#line 353 "../src/contacts-window.vala"
+               _tmp9_ = TRUE;
+#line 1941 "contacts-window.c"
+       } else {
+               HdyLeaflet* _tmp13_;
+               GtkWidget* _tmp14_;
+               GtkWidget* _tmp15_;
+               GtkHeaderBar* _tmp16_;
+#line 353 "../src/contacts-window.vala"
+               _tmp13_ = self->priv->header;
+#line 353 "../src/contacts-window.vala"
+               _tmp14_ = hdy_leaflet_get_visible_child (_tmp13_);
+#line 353 "../src/contacts-window.vala"
+               _tmp15_ = _tmp14_;
+#line 353 "../src/contacts-window.vala"
+               _tmp16_ = self->priv->right_header;
+#line 353 "../src/contacts-window.vala"
+               _tmp9_ = _tmp15_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_widget_get_type (), GtkWidget);
+#line 1957 "contacts-window.c"
+       }
+#line 353 "../src/contacts-window.vala"
+       _tmp17_ = self->priv->right_header;
+#line 353 "../src/contacts-window.vala"
+       gtk_header_bar_set_show_close_button (_tmp17_, _tmp9_);
+#line 354 "../src/contacts-window.vala"
+       _tmp20_ = self->priv->content_box;
+#line 354 "../src/contacts-window.vala"
+       _tmp21_ = hdy_leaflet_get_fold (_tmp20_);
+#line 354 "../src/contacts-window.vala"
+       _tmp22_ = _tmp21_;
+#line 354 "../src/contacts-window.vala"
+       if (_tmp22_ == HDY_FOLD_FOLDED) {
+#line 1971 "contacts-window.c"
+               GtkButton* _tmp23_;
+               gboolean _tmp24_;
+               gboolean _tmp25_;
+#line 354 "../src/contacts-window.vala"
+               _tmp23_ = self->priv->cancel_button;
+#line 354 "../src/contacts-window.vala"
+               _tmp24_ = gtk_widget_get_visible ((GtkWidget*) _tmp23_);
+#line 354 "../src/contacts-window.vala"
+               _tmp25_ = _tmp24_;
+#line 354 "../src/contacts-window.vala"
+               _tmp19_ = !_tmp25_;
+#line 1983 "contacts-window.c"
+       } else {
+#line 354 "../src/contacts-window.vala"
+               _tmp19_ = FALSE;
+#line 1987 "contacts-window.c"
+       }
+#line 354 "../src/contacts-window.vala"
+       if (_tmp19_) {
+#line 1991 "contacts-window.c"
+               HdyLeaflet* _tmp26_;
+               GtkWidget* _tmp27_;
+               GtkWidget* _tmp28_;
+               GtkHeaderBar* _tmp29_;
+#line 354 "../src/contacts-window.vala"
+               _tmp26_ = self->priv->header;
+#line 354 "../src/contacts-window.vala"
+               _tmp27_ = hdy_leaflet_get_visible_child (_tmp26_);
+#line 354 "../src/contacts-window.vala"
+               _tmp28_ = _tmp27_;
+#line 354 "../src/contacts-window.vala"
+               _tmp29_ = self->priv->right_header;
+#line 354 "../src/contacts-window.vala"
+               _tmp18_ = _tmp28_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, gtk_widget_get_type (), GtkWidget);
+#line 2006 "contacts-window.c"
+       } else {
+#line 354 "../src/contacts-window.vala"
+               _tmp18_ = FALSE;
+#line 2010 "contacts-window.c"
+       }
+#line 354 "../src/contacts-window.vala"
+       _tmp30_ = self->priv->back_revealer;
+#line 354 "../src/contacts-window.vala"
+       _tmp31_ = self->priv->back_revealer;
+#line 354 "../src/contacts-window.vala"
+       gtk_widget_set_visible ((GtkWidget*) _tmp31_, _tmp18_);
+#line 354 "../src/contacts-window.vala"
+       gtk_revealer_set_reveal_child (_tmp30_, _tmp18_);
+#line 2020 "contacts-window.c"
+}
+
+static void
+contacts_window_show_list_pane (ContactsWindow* self)
+{
+       HdyLeaflet* _tmp0_;
+#line 357 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 358 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->content_box;
+#line 358 "../src/contacts-window.vala"
+       hdy_leaflet_set_visible_child_name (_tmp0_, "list-pane");
+#line 359 "../src/contacts-window.vala"
+       contacts_window_update (self);
+#line 2035 "contacts-window.c"
+}
+
+static void
+contacts_window_show_contact_pane (ContactsWindow* self)
+{
+       HdyLeaflet* _tmp0_;
+#line 362 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 363 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->content_box;
+#line 363 "../src/contacts-window.vala"
+       hdy_leaflet_set_visible_child_name (_tmp0_, "contact-pane");
+#line 364 "../src/contacts-window.vala"
+       contacts_window_update (self);
+#line 2050 "contacts-window.c"
+}
+
+void
+contacts_window_show_search (ContactsWindow* self,
+                             const gchar* query)
+{
+       ContactsListPane* _tmp0_;
+       GtkSearchEntry* _tmp1_;
+#line 367 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 367 "../src/contacts-window.vala"
+       g_return_if_fail (query != NULL);
+#line 368 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->list_pane;
+#line 368 "../src/contacts-window.vala"
+       _tmp1_ = _tmp0_->filter_entry;
+#line 368 "../src/contacts-window.vala"
+       gtk_entry_set_text ((GtkEntry*) _tmp1_, query);
+#line 2069 "contacts-window.c"
+}
+
+static void
+__lambda56_ (ContactsWindow* self)
+{
+#line 372 "../src/contacts-window.vala"
+       contacts_window_set_state (self, CONTACTS_UI_STATE_NORMAL);
+#line 2077 "contacts-window.c"
+}
+
+static void
+___lambda56__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 372 "../src/contacts-window.vala"
+       __lambda56_ ((ContactsWindow*) self);
+#line 2086 "contacts-window.c"
+}
+
+static void
+__lambda57_ (ContactsWindow* self)
+{
+#line 373 "../src/contacts-window.vala"
+       contacts_window_stop_editing (self, FALSE);
+#line 2094 "contacts-window.c"
+}
+
+static void
+___lambda57__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 373 "../src/contacts-window.vala"
+       __lambda57_ ((ContactsWindow*) self);
+#line 2103 "contacts-window.c"
+}
+
+static void
+__lambda58_ (ContactsWindow* self)
+{
+#line 374 "../src/contacts-window.vala"
+       contacts_window_stop_editing (self, TRUE);
+#line 2111 "contacts-window.c"
+}
+
+static void
+___lambda58__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 374 "../src/contacts-window.vala"
+       __lambda58_ ((ContactsWindow*) self);
+#line 2120 "contacts-window.c"
+}
+
+static void
+contacts_window_connect_button_signals (ContactsWindow* self)
+{
+       GtkButton* _tmp0_;
+       GtkButton* _tmp1_;
+       GtkButton* _tmp2_;
+#line 371 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 372 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->select_cancel_button;
+#line 372 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp0_, "clicked", (GCallback) ___lambda56__gtk_button_clicked, self, 0);
+#line 373 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->done_button;
+#line 373 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp1_, "clicked", (GCallback) ___lambda57__gtk_button_clicked, self, 0);
+#line 374 "../src/contacts-window.vala"
+       _tmp2_ = self->priv->cancel_button;
+#line 374 "../src/contacts-window.vala"
+       g_signal_connect_object (_tmp2_, "clicked", (GCallback) ___lambda58__gtk_button_clicked, self, 0);
+#line 2143 "contacts-window.c"
+}
+
+static gboolean
+contacts_window_key_press_event_cb (ContactsWindow* self,
+                                    GdkEventKey* event)
+{
+       gboolean _tmp0_ = FALSE;
+       gboolean result = FALSE;
+#line 378 "../src/contacts-window.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 378 "../src/contacts-window.vala"
+       g_return_val_if_fail (event != NULL, FALSE);
+#line 379 "../src/contacts-window.vala"
+       if (event->keyval == gdk_keyval_from_name ("q")) {
+#line 2158 "contacts-window.c"
+               GdkModifierType _tmp1_;
+#line 380 "../src/contacts-window.vala"
+               _tmp1_ = event->state;
+#line 380 "../src/contacts-window.vala"
+               _tmp0_ = (_tmp1_ & GDK_CONTROL_MASK) != 0;
+#line 2164 "contacts-window.c"
+       } else {
+#line 379 "../src/contacts-window.vala"
+               _tmp0_ = FALSE;
+#line 2168 "contacts-window.c"
+       }
+#line 379 "../src/contacts-window.vala"
+       if (_tmp0_) {
+#line 2172 "contacts-window.c"
+               ContactsContactPane* _tmp2_;
+#line 382 "../src/contacts-window.vala"
+               _tmp2_ = self->priv->contact_pane;
+#line 382 "../src/contacts-window.vala"
+               contacts_contact_pane_show_contact (_tmp2_, NULL);
+#line 383 "../src/contacts-window.vala"
+               gtk_widget_destroy ((GtkWidget*) self);
+#line 2180 "contacts-window.c"
+       } else {
+               gboolean _tmp3_ = FALSE;
+               gboolean _tmp4_ = FALSE;
+#line 384 "../src/contacts-window.vala"
+               if (event->keyval == GDK_KEY_s) {
+#line 384 "../src/contacts-window.vala"
+                       _tmp4_ = TRUE;
+#line 2188 "contacts-window.c"
+               } else {
+#line 385 "../src/contacts-window.vala"
+                       _tmp4_ = event->keyval == GDK_KEY_f;
+#line 2192 "contacts-window.c"
+               }
+#line 384 "../src/contacts-window.vala"
+               if (_tmp4_) {
+#line 2196 "contacts-window.c"
+                       GdkModifierType _tmp5_;
+#line 386 "../src/contacts-window.vala"
+                       _tmp5_ = event->state;
+#line 386 "../src/contacts-window.vala"
+                       _tmp3_ = (_tmp5_ & GDK_CONTROL_MASK) != 0;
+#line 2202 "contacts-window.c"
+               } else {
+#line 384 "../src/contacts-window.vala"
+                       _tmp3_ = FALSE;
+#line 2206 "contacts-window.c"
+               }
+#line 384 "../src/contacts-window.vala"
+               if (_tmp3_) {
+#line 2210 "contacts-window.c"
+                       ContactsListPane* _tmp6_;
+                       GtkSearchEntry* _tmp7_;
+#line 387 "../src/contacts-window.vala"
+                       _tmp6_ = self->priv->list_pane;
+#line 387 "../src/contacts-window.vala"
+                       _tmp7_ = _tmp6_->filter_entry;
+#line 387 "../src/contacts-window.vala"
+                       contacts_utils_grab_entry_focus_no_select ((GtkEntry*) _tmp7_);
+#line 2219 "contacts-window.c"
+               } else {
+                       gboolean _tmp8_ = FALSE;
+                       gboolean _tmp9_ = FALSE;
+                       gboolean _tmp10_ = FALSE;
+                       gboolean _tmp11_ = FALSE;
+                       gboolean _tmp12_ = FALSE;
+                       gboolean _tmp13_ = FALSE;
+#line 388 "../src/contacts-window.vala"
+                       if (event->length >= 1) {
+#line 389 "../src/contacts-window.vala"
+                               _tmp13_ = gdk_keyval_to_unicode (event->keyval) != ((guint32) 0);
+#line 2231 "contacts-window.c"
+                       } else {
+#line 388 "../src/contacts-window.vala"
+                               _tmp13_ = FALSE;
+#line 2235 "contacts-window.c"
+                       }
+#line 388 "../src/contacts-window.vala"
+                       if (_tmp13_) {
+#line 2239 "contacts-window.c"
+                               GdkModifierType _tmp14_;
+#line 390 "../src/contacts-window.vala"
+                               _tmp14_ = event->state;
+#line 390 "../src/contacts-window.vala"
+                               _tmp12_ = (_tmp14_ & GDK_CONTROL_MASK) == 0;
+#line 2245 "contacts-window.c"
+                       } else {
+#line 388 "../src/contacts-window.vala"
+                               _tmp12_ = FALSE;
+#line 2249 "contacts-window.c"
+                       }
+#line 388 "../src/contacts-window.vala"
+                       if (_tmp12_) {
+#line 2253 "contacts-window.c"
+                               GdkModifierType _tmp15_;
+#line 391 "../src/contacts-window.vala"
+                               _tmp15_ = event->state;
+#line 391 "../src/contacts-window.vala"
+                               _tmp11_ = (_tmp15_ & GDK_MOD1_MASK) == 0;
+#line 2259 "contacts-window.c"
+                       } else {
+#line 388 "../src/contacts-window.vala"
+                               _tmp11_ = FALSE;
+#line 2263 "contacts-window.c"
+                       }
+#line 388 "../src/contacts-window.vala"
+                       if (_tmp11_) {
+#line 392 "../src/contacts-window.vala"
+                               _tmp10_ = event->keyval != GDK_KEY_Escape;
+#line 2269 "contacts-window.c"
+                       } else {
+#line 388 "../src/contacts-window.vala"
+                               _tmp10_ = FALSE;
+#line 2273 "contacts-window.c"
+                       }
+#line 388 "../src/contacts-window.vala"
+                       if (_tmp10_) {
+#line 393 "../src/contacts-window.vala"
+                               _tmp9_ = event->keyval != GDK_KEY_Tab;
+#line 2279 "contacts-window.c"
+                       } else {
+#line 388 "../src/contacts-window.vala"
+                               _tmp9_ = FALSE;
+#line 2283 "contacts-window.c"
+                       }
+#line 388 "../src/contacts-window.vala"
+                       if (_tmp9_) {
+#line 394 "../src/contacts-window.vala"
+                               _tmp8_ = event->keyval != GDK_KEY_BackSpace;
+#line 2289 "contacts-window.c"
+                       } else {
+#line 388 "../src/contacts-window.vala"
+                               _tmp8_ = FALSE;
+#line 2293 "contacts-window.c"
+                       }
+#line 388 "../src/contacts-window.vala"
+                       if (_tmp8_) {
+#line 2297 "contacts-window.c"
+                               ContactsListPane* _tmp16_;
+                               GtkSearchEntry* _tmp17_;
+#line 395 "../src/contacts-window.vala"
+                               _tmp16_ = self->priv->list_pane;
+#line 395 "../src/contacts-window.vala"
+                               _tmp17_ = _tmp16_->filter_entry;
+#line 395 "../src/contacts-window.vala"
+                               contacts_utils_grab_entry_focus_no_select ((GtkEntry*) _tmp17_);
+#line 396 "../src/contacts-window.vala"
+                               gtk_window_propagate_key_event ((GtkWindow*) self, event);
+#line 2308 "contacts-window.c"
+                       }
+               }
+       }
+#line 399 "../src/contacts-window.vala"
+       result = FALSE;
+#line 399 "../src/contacts-window.vala"
+       return result;
+#line 2316 "contacts-window.c"
+}
+
+static gboolean
+_contacts_window_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender,
+                                                                GdkEventKey* event,
+                                                                gpointer self)
+{
+       gboolean result;
+       result = contacts_window_key_press_event_cb ((ContactsWindow*) self, event);
+#line 24 "../src/contacts-window.vala"
+       return result;
+#line 2328 "contacts-window.c"
+}
+
+static gboolean
+contacts_window_delete_event_cb (ContactsWindow* self,
+                                 GdkEventAny* event)
+{
+       ContactsContactPane* _tmp0_;
+       gboolean result = FALSE;
+#line 403 "../src/contacts-window.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 403 "../src/contacts-window.vala"
+       g_return_val_if_fail (event != NULL, FALSE);
+#line 405 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->contact_pane;
+#line 405 "../src/contacts-window.vala"
+       contacts_contact_pane_show_contact (_tmp0_, NULL);
+#line 406 "../src/contacts-window.vala"
+       result = FALSE;
+#line 406 "../src/contacts-window.vala"
+       return result;
+#line 2349 "contacts-window.c"
+}
+
+static gboolean
+_contacts_window_delete_event_cb_gtk_widget_delete_event (GtkWidget* _sender,
+                                                          GdkEventAny* event,
+                                                          gpointer self)
+{
+       gboolean result;
+       result = contacts_window_delete_event_cb ((ContactsWindow*) self, event);
+#line 24 "../src/contacts-window.vala"
+       return result;
+#line 2361 "contacts-window.c"
+}
+
+static void
+contacts_window_list_pane_selection_changed_cb (ContactsWindow* self,
+                                                FolksIndividual* new_selection)
+{
+       ContactsUiState _tmp0_;
+#line 409 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 410 "../src/contacts-window.vala"
+       contacts_window_set_shown_contact (self, new_selection);
+#line 411 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->_state;
+#line 411 "../src/contacts-window.vala"
+       if (_tmp0_ != CONTACTS_UI_STATE_SELECTING) {
+#line 412 "../src/contacts-window.vala"
+               contacts_window_set_state (self, CONTACTS_UI_STATE_SHOWING);
+#line 2379 "contacts-window.c"
+       }
+#line 414 "../src/contacts-window.vala"
+       if (new_selection != NULL) {
+#line 415 "../src/contacts-window.vala"
+               contacts_window_show_contact_pane (self);
+#line 2385 "contacts-window.c"
+       }
+}
+
+static Block24Data*
+block24_data_ref (Block24Data* _data24_)
+{
+#line 418 "../src/contacts-window.vala"
+       g_atomic_int_inc (&_data24_->_ref_count_);
+#line 418 "../src/contacts-window.vala"
+       return _data24_;
+#line 2396 "contacts-window.c"
+}
+
+static void
+block24_data_unref (void * _userdata_)
+{
+       Block24Data* _data24_;
+       _data24_ = (Block24Data*) _userdata_;
+#line 418 "../src/contacts-window.vala"
+       if (g_atomic_int_dec_and_test (&_data24_->_ref_count_)) {
+#line 2406 "contacts-window.c"
+               ContactsWindow* self;
+#line 418 "../src/contacts-window.vala"
+               self = _data24_->self;
+#line 418 "../src/contacts-window.vala"
+               _g_object_unref0 (_data24_->notification);
+#line 418 "../src/contacts-window.vala"
+               _g_object_unref0 (_data24_->operation);
+#line 418 "../src/contacts-window.vala"
+               _g_object_unref0 (self);
+#line 418 "../src/contacts-window.vala"
+               g_slice_free (Block24Data, _data24_);
+#line 2418 "contacts-window.c"
+       }
+}
+
+static void
+__lambda59_ (Block24Data* _data24_,
+             GObject* obj,
+             GAsyncResult* _result_)
+{
+       ContactsWindow* self;
+       ContactsLinkOperation2* _tmp0_;
+#line 423 "../src/contacts-window.vala"
+       self = _data24_->self;
+#line 423 "../src/contacts-window.vala"
+       g_return_if_fail (_result_ != NULL);
+#line 424 "../src/contacts-window.vala"
+       _tmp0_ = contacts_link_contacts_list_finish (_result_);
+#line 424 "../src/contacts-window.vala"
+       _g_object_unref0 (_data24_->operation);
+#line 424 "../src/contacts-window.vala"
+       _data24_->operation = _tmp0_;
+#line 2439 "contacts-window.c"
+}
+
+static void
+___lambda59__gasync_ready_callback (GObject* source_object,
+                                    GAsyncResult* res,
+                                    gpointer self)
+{
+#line 423 "../src/contacts-window.vala"
+       __lambda59_ (self, source_object, res);
+#line 423 "../src/contacts-window.vala"
+       block24_data_unref (self);
+#line 2451 "contacts-window.c"
+}
+
+static void
+__lambda60_ (Block24Data* _data24_)
+{
+       ContactsWindow* self;
+#line 435 "../src/contacts-window.vala"
+       self = _data24_->self;
+#line 437 "../src/contacts-window.vala"
+       contacts_link_operation2_undo (_data24_->operation, NULL, NULL);
+#line 438 "../src/contacts-window.vala"
+       contacts_in_app_notification_dismiss (_data24_->notification);
+#line 2464 "contacts-window.c"
+}
+
+static void
+___lambda60__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 435 "../src/contacts-window.vala"
+       __lambda60_ (self);
+#line 2473 "contacts-window.c"
+}
+
+static void
+contacts_window_list_pane_link_contacts_cb (ContactsWindow* self,
+                                            GeeLinkedList* contact_list)
+{
+       Block24Data* _data24_;
+       ContactsStore* _tmp0_;
+       gchar* msg = NULL;
+       gint _tmp1_;
+       gint _tmp2_;
+       gint _tmp3_;
+       gint _tmp4_;
+       gchar* _tmp5_;
+       GtkButton* b = NULL;
+       GtkButton* _tmp6_;
+       ContactsInAppNotification* _tmp7_;
+#line 418 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 418 "../src/contacts-window.vala"
+       g_return_if_fail (contact_list != NULL);
+#line 418 "../src/contacts-window.vala"
+       _data24_ = g_slice_new0 (Block24Data);
+#line 418 "../src/contacts-window.vala"
+       _data24_->_ref_count_ = 1;
+#line 418 "../src/contacts-window.vala"
+       _data24_->self = g_object_ref (self);
+#line 419 "../src/contacts-window.vala"
+       contacts_window_set_shown_contact (self, NULL);
+#line 420 "../src/contacts-window.vala"
+       contacts_window_set_state (self, CONTACTS_UI_STATE_NORMAL);
+#line 422 "../src/contacts-window.vala"
+       _data24_->operation = NULL;
+#line 423 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->_store;
+#line 423 "../src/contacts-window.vala"
+       contacts_link_contacts_list (contact_list, _tmp0_, ___lambda59__gasync_ready_callback, 
block24_data_ref (_data24_));
+#line 427 "../src/contacts-window.vala"
+       _tmp1_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) contact_list);
+#line 427 "../src/contacts-window.vala"
+       _tmp2_ = _tmp1_;
+#line 427 "../src/contacts-window.vala"
+       _tmp3_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) contact_list);
+#line 427 "../src/contacts-window.vala"
+       _tmp4_ = _tmp3_;
+#line 427 "../src/contacts-window.vala"
+       _tmp5_ = g_strdup_printf (ngettext ("%d contacts linked", "%d contacts linked", (gulong) _tmp2_), 
_tmp4_);
+#line 427 "../src/contacts-window.vala"
+       msg = _tmp5_;
+#line 431 "../src/contacts-window.vala"
+       _tmp6_ = (GtkButton*) gtk_button_new_with_mnemonic (_ ("_Undo"));
+#line 431 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp6_);
+#line 431 "../src/contacts-window.vala"
+       b = _tmp6_;
+#line 433 "../src/contacts-window.vala"
+       _tmp7_ = contacts_in_app_notification_new (msg, NULL);
+#line 433 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp7_);
+#line 433 "../src/contacts-window.vala"
+       _data24_->notification = _tmp7_;
+#line 435 "../src/contacts-window.vala"
+       g_signal_connect_data (b, "clicked", (GCallback) ___lambda60__gtk_button_clicked, block24_data_ref 
(_data24_), (GClosureNotify) block24_data_unref, 0);
+#line 441 "../src/contacts-window.vala"
+       contacts_window_add_notification (self, _data24_->notification);
+#line 418 "../src/contacts-window.vala"
+       _g_object_unref0 (b);
+#line 418 "../src/contacts-window.vala"
+       _g_free0 (msg);
+#line 418 "../src/contacts-window.vala"
+       block24_data_unref (_data24_);
+#line 418 "../src/contacts-window.vala"
+       _data24_ = NULL;
+#line 2547 "contacts-window.c"
+}
+
+static Block25Data*
+block25_data_ref (Block25Data* _data25_)
+{
+#line 444 "../src/contacts-window.vala"
+       g_atomic_int_inc (&_data25_->_ref_count_);
+#line 444 "../src/contacts-window.vala"
+       return _data25_;
+#line 2557 "contacts-window.c"
+}
+
+static void
+block25_data_unref (void * _userdata_)
+{
+       Block25Data* _data25_;
+       _data25_ = (Block25Data*) _userdata_;
+#line 444 "../src/contacts-window.vala"
+       if (g_atomic_int_dec_and_test (&_data25_->_ref_count_)) {
+#line 2567 "contacts-window.c"
+               ContactsWindow* self;
+#line 444 "../src/contacts-window.vala"
+               self = _data25_->self;
+#line 444 "../src/contacts-window.vala"
+               _g_object_unref0 (_data25_->notification);
+#line 444 "../src/contacts-window.vala"
+               _g_object_unref0 (_data25_->individuals);
+#line 444 "../src/contacts-window.vala"
+               _g_object_unref0 (self);
+#line 444 "../src/contacts-window.vala"
+               g_slice_free (Block25Data, _data25_);
+#line 2579 "contacts-window.c"
+       }
+}
+
+static void
+__lambda52_ (Block25Data* _data25_)
+{
+       ContactsWindow* self;
+       ContactsListPane* _tmp0_;
+       gpointer _tmp1_;
+       FolksIndividual* _tmp2_;
+#line 466 "../src/contacts-window.vala"
+       self = _data25_->self;
+#line 467 "../src/contacts-window.vala"
+       _data25_->really_delete = FALSE;
+#line 468 "../src/contacts-window.vala"
+       contacts_in_app_notification_dismiss (_data25_->notification);
+#line 471 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->list_pane;
+#line 471 "../src/contacts-window.vala"
+       contacts_list_pane_undo_deletion (_tmp0_);
+#line 473 "../src/contacts-window.vala"
+       _tmp1_ = gee_list_get (_data25_->individuals, 0);
+#line 473 "../src/contacts-window.vala"
+       _tmp2_ = (FolksIndividual*) _tmp1_;
+#line 473 "../src/contacts-window.vala"
+       contacts_window_set_shown_contact (self, _tmp2_);
+#line 473 "../src/contacts-window.vala"
+       _g_object_unref0 (_tmp2_);
+#line 474 "../src/contacts-window.vala"
+       contacts_window_set_state (self, CONTACTS_UI_STATE_SHOWING);
+#line 2610 "contacts-window.c"
+}
+
+static void
+___lambda52__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 466 "../src/contacts-window.vala"
+       __lambda52_ (self);
+#line 2619 "contacts-window.c"
+}
+
+static void
+__lambda53_ (Block25Data* _data25_)
+{
+       ContactsWindow* self;
+       GError* _inner_error0_ = NULL;
+#line 476 "../src/contacts-window.vala"
+       self = _data25_->self;
+#line 477 "../src/contacts-window.vala"
+       if (_data25_->really_delete) {
+#line 2631 "contacts-window.c"
+               {
+                       GeeList* _i_list = NULL;
+                       GeeList* _tmp0_;
+                       gint _i_size = 0;
+                       GeeList* _tmp1_;
+                       gint _tmp2_;
+                       gint _tmp3_;
+                       gint _i_index = 0;
+#line 478 "../src/contacts-window.vala"
+                       _tmp0_ = _g_object_ref0 (_data25_->individuals);
+#line 478 "../src/contacts-window.vala"
+                       _i_list = _tmp0_;
+#line 478 "../src/contacts-window.vala"
+                       _tmp1_ = _i_list;
+#line 478 "../src/contacts-window.vala"
+                       _tmp2_ = gee_collection_get_size ((GeeCollection*) _tmp1_);
+#line 478 "../src/contacts-window.vala"
+                       _tmp3_ = _tmp2_;
+#line 478 "../src/contacts-window.vala"
+                       _i_size = _tmp3_;
+#line 478 "../src/contacts-window.vala"
+                       _i_index = -1;
+#line 478 "../src/contacts-window.vala"
+                       while (TRUE) {
+#line 2656 "contacts-window.c"
+                               FolksIndividual* i = NULL;
+                               GeeList* _tmp4_;
+                               gpointer _tmp5_;
+#line 478 "../src/contacts-window.vala"
+                               _i_index = _i_index + 1;
+#line 478 "../src/contacts-window.vala"
+                               if (!(_i_index < _i_size)) {
+#line 478 "../src/contacts-window.vala"
+                                       break;
+#line 2666 "contacts-window.c"
+                               }
+#line 478 "../src/contacts-window.vala"
+                               _tmp4_ = _i_list;
+#line 478 "../src/contacts-window.vala"
+                               _tmp5_ = gee_list_get (_tmp4_, _i_index);
+#line 478 "../src/contacts-window.vala"
+                               i = (FolksIndividual*) _tmp5_;
+#line 2674 "contacts-window.c"
+                               {
+                                       GeeIterator* _p_it = NULL;
+                                       FolksIndividual* _tmp6_;
+                                       GeeSet* _tmp7_;
+                                       GeeSet* _tmp8_;
+                                       GeeIterator* _tmp9_;
+#line 479 "../src/contacts-window.vala"
+                                       _tmp6_ = i;
+#line 479 "../src/contacts-window.vala"
+                                       _tmp7_ = folks_individual_get_personas (_tmp6_);
+#line 479 "../src/contacts-window.vala"
+                                       _tmp8_ = _tmp7_;
+#line 479 "../src/contacts-window.vala"
+                                       _tmp9_ = gee_iterable_iterator ((GeeIterable*) _tmp8_);
+#line 479 "../src/contacts-window.vala"
+                                       _p_it = _tmp9_;
+#line 479 "../src/contacts-window.vala"
+                                       while (TRUE) {
+#line 2693 "contacts-window.c"
+                                               GeeIterator* _tmp10_;
+                                               FolksPersona* p = NULL;
+                                               GeeIterator* _tmp11_;
+                                               gpointer _tmp12_;
+#line 479 "../src/contacts-window.vala"
+                                               _tmp10_ = _p_it;
+#line 479 "../src/contacts-window.vala"
+                                               if (!gee_iterator_next (_tmp10_)) {
+#line 479 "../src/contacts-window.vala"
+                                                       break;
+#line 2704 "contacts-window.c"
+                                               }
+#line 479 "../src/contacts-window.vala"
+                                               _tmp11_ = _p_it;
+#line 479 "../src/contacts-window.vala"
+                                               _tmp12_ = gee_iterator_get (_tmp11_);
+#line 479 "../src/contacts-window.vala"
+                                               p = (FolksPersona*) _tmp12_;
+#line 2712 "contacts-window.c"
+                                               {
+                                                       FolksPersona* _tmp13_;
+                                                       FolksPersonaStore* _tmp14_;
+                                                       FolksPersonaStore* _tmp15_;
+                                                       FolksPersona* _tmp16_;
+#line 482 "../src/contacts-window.vala"
+                                                       _tmp13_ = p;
+#line 482 "../src/contacts-window.vala"
+                                                       _tmp14_ = folks_persona_get_store (_tmp13_);
+#line 482 "../src/contacts-window.vala"
+                                                       _tmp15_ = _tmp14_;
+#line 482 "../src/contacts-window.vala"
+                                                       _tmp16_ = p;
+#line 482 "../src/contacts-window.vala"
+                                                       folks_persona_store_remove_persona (_tmp15_, _tmp16_, 
NULL, NULL);
+#line 2728 "contacts-window.c"
+                                               }
+                                               goto __finally26;
+                                               __catch26_g_error:
+                                               {
+                                                       GError* e = NULL;
+#line 481 "../src/contacts-window.vala"
+                                                       e = _inner_error0_;
+#line 481 "../src/contacts-window.vala"
+                                                       _inner_error0_ = NULL;
+#line 484 "../src/contacts-window.vala"
+                                                       g_debug ("contacts-window.vala:484: Coudln't remove 
persona");
+#line 481 "../src/contacts-window.vala"
+                                                       _g_error_free0 (e);
+#line 2742 "contacts-window.c"
+                                               }
+                                               __finally26:
+#line 481 "../src/contacts-window.vala"
+                                               if (G_UNLIKELY (_inner_error0_ != NULL)) {
+#line 481 "../src/contacts-window.vala"
+                                                       _g_object_unref0 (p);
+#line 481 "../src/contacts-window.vala"
+                                                       _g_object_unref0 (_p_it);
+#line 481 "../src/contacts-window.vala"
+                                                       _g_object_unref0 (i);
+#line 481 "../src/contacts-window.vala"
+                                                       _g_object_unref0 (_i_list);
+#line 481 "../src/contacts-window.vala"
+                                                       g_critical ("file %s: line %d: uncaught error: %s 
(%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), 
_inner_error0_->code);
+#line 481 "../src/contacts-window.vala"
+                                                       g_clear_error (&_inner_error0_);
+#line 481 "../src/contacts-window.vala"
+                                                       return;
+#line 2761 "contacts-window.c"
+                                               }
+#line 479 "../src/contacts-window.vala"
+                                               _g_object_unref0 (p);
+#line 2765 "contacts-window.c"
+                                       }
+#line 479 "../src/contacts-window.vala"
+                                       _g_object_unref0 (_p_it);
+#line 2769 "contacts-window.c"
+                               }
+#line 478 "../src/contacts-window.vala"
+                               _g_object_unref0 (i);
+#line 2773 "contacts-window.c"
+                       }
+#line 478 "../src/contacts-window.vala"
+                       _g_object_unref0 (_i_list);
+#line 2777 "contacts-window.c"
+               }
+       }
+}
+
+static void
+___lambda53__contacts_in_app_notification_dismissed (ContactsInAppNotification* _sender,
+                                                     gpointer self)
+{
+#line 476 "../src/contacts-window.vala"
+       __lambda53_ (self);
+#line 2788 "contacts-window.c"
+}
+
+static void
+contacts_window_delete_contacts (ContactsWindow* self,
+                                 GeeList* individuals)
+{
+       Block25Data* _data25_;
+       GeeList* _tmp0_;
+       gchar* msg = NULL;
+       gint _tmp1_;
+       gint _tmp2_;
+       GtkButton* b = NULL;
+       GtkButton* _tmp13_;
+       const gchar* _tmp14_;
+       ContactsInAppNotification* _tmp15_;
+       GtkLabel* _tmp16_;
+       GtkLabel* _tmp17_;
+       GtkLabel* _tmp18_;
+       GtkLabel* _tmp19_;
+       GtkLabel* _tmp20_;
+       GtkLabel* _tmp21_;
+#line 444 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 444 "../src/contacts-window.vala"
+       g_return_if_fail (individuals != NULL);
+#line 444 "../src/contacts-window.vala"
+       _data25_ = g_slice_new0 (Block25Data);
+#line 444 "../src/contacts-window.vala"
+       _data25_->_ref_count_ = 1;
+#line 444 "../src/contacts-window.vala"
+       _data25_->self = g_object_ref (self);
+#line 444 "../src/contacts-window.vala"
+       _tmp0_ = _g_object_ref0 (individuals);
+#line 444 "../src/contacts-window.vala"
+       _g_object_unref0 (_data25_->individuals);
+#line 444 "../src/contacts-window.vala"
+       _data25_->individuals = _tmp0_;
+#line 445 "../src/contacts-window.vala"
+       contacts_window_set_shown_contact (self, NULL);
+#line 446 "../src/contacts-window.vala"
+       contacts_window_set_state (self, CONTACTS_UI_STATE_NORMAL);
+#line 449 "../src/contacts-window.vala"
+       _tmp1_ = gee_collection_get_size ((GeeCollection*) _data25_->individuals);
+#line 449 "../src/contacts-window.vala"
+       _tmp2_ = _tmp1_;
+#line 449 "../src/contacts-window.vala"
+       if (_tmp2_ == 1) {
+#line 2836 "contacts-window.c"
+               gpointer _tmp3_;
+               FolksIndividual* _tmp4_;
+               const gchar* _tmp5_;
+               const gchar* _tmp6_;
+               gchar* _tmp7_;
+#line 450 "../src/contacts-window.vala"
+               _tmp3_ = gee_list_get (_data25_->individuals, 0);
+#line 450 "../src/contacts-window.vala"
+               _tmp4_ = (FolksIndividual*) _tmp3_;
+#line 450 "../src/contacts-window.vala"
+               _tmp5_ = folks_individual_get_display_name (_tmp4_);
+#line 450 "../src/contacts-window.vala"
+               _tmp6_ = _tmp5_;
+#line 450 "../src/contacts-window.vala"
+               _tmp7_ = g_strdup_printf (_ ("Deleted contact %s"), _tmp6_);
+#line 450 "../src/contacts-window.vala"
+               _g_free0 (msg);
+#line 450 "../src/contacts-window.vala"
+               msg = _tmp7_;
+#line 450 "../src/contacts-window.vala"
+               _g_object_unref0 (_tmp4_);
+#line 2858 "contacts-window.c"
+       } else {
+               gint _tmp8_;
+               gint _tmp9_;
+               gint _tmp10_;
+               gint _tmp11_;
+               gchar* _tmp12_;
+#line 452 "../src/contacts-window.vala"
+               _tmp8_ = gee_collection_get_size ((GeeCollection*) _data25_->individuals);
+#line 452 "../src/contacts-window.vala"
+               _tmp9_ = _tmp8_;
+#line 452 "../src/contacts-window.vala"
+               _tmp10_ = gee_collection_get_size ((GeeCollection*) _data25_->individuals);
+#line 452 "../src/contacts-window.vala"
+               _tmp11_ = _tmp10_;
+#line 452 "../src/contacts-window.vala"
+               _tmp12_ = g_strdup_printf (ngettext ("%d contact deleted", "%d contacts deleted", (gulong) 
_tmp9_), _tmp11_);
+#line 452 "../src/contacts-window.vala"
+               _g_free0 (msg);
+#line 452 "../src/contacts-window.vala"
+               msg = _tmp12_;
+#line 2879 "contacts-window.c"
+       }
+#line 455 "../src/contacts-window.vala"
+       _tmp13_ = (GtkButton*) gtk_button_new_with_mnemonic (_ ("_Undo"));
+#line 455 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp13_);
+#line 455 "../src/contacts-window.vala"
+       b = _tmp13_;
+#line 457 "../src/contacts-window.vala"
+       _tmp14_ = msg;
+#line 457 "../src/contacts-window.vala"
+       _tmp15_ = contacts_in_app_notification_new (_tmp14_, b);
+#line 457 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp15_);
+#line 457 "../src/contacts-window.vala"
+       _data25_->notification = _tmp15_;
+#line 460 "../src/contacts-window.vala"
+       _tmp16_ = contacts_in_app_notification_get_message_label (_data25_->notification);
+#line 460 "../src/contacts-window.vala"
+       _tmp17_ = _tmp16_;
+#line 460 "../src/contacts-window.vala"
+       g_object_set (_tmp17_, "wrap", FALSE, NULL);
+#line 461 "../src/contacts-window.vala"
+       _tmp18_ = contacts_in_app_notification_get_message_label (_data25_->notification);
+#line 461 "../src/contacts-window.vala"
+       _tmp19_ = _tmp18_;
+#line 461 "../src/contacts-window.vala"
+       gtk_label_set_max_width_chars (_tmp19_, 45);
+#line 462 "../src/contacts-window.vala"
+       _tmp20_ = contacts_in_app_notification_get_message_label (_data25_->notification);
+#line 462 "../src/contacts-window.vala"
+       _tmp21_ = _tmp20_;
+#line 462 "../src/contacts-window.vala"
+       gtk_label_set_ellipsize (_tmp21_, PANGO_ELLIPSIZE_END);
+#line 465 "../src/contacts-window.vala"
+       _data25_->really_delete = TRUE;
+#line 466 "../src/contacts-window.vala"
+       g_signal_connect_data (b, "clicked", (GCallback) ___lambda52__gtk_button_clicked, block25_data_ref 
(_data25_), (GClosureNotify) block25_data_unref, 0);
+#line 476 "../src/contacts-window.vala"
+       g_signal_connect_data (_data25_->notification, "dismissed", (GCallback) 
___lambda53__contacts_in_app_notification_dismissed, block25_data_ref (_data25_), (GClosureNotify) 
block25_data_unref, 0);
+#line 489 "../src/contacts-window.vala"
+       contacts_window_add_notification (self, _data25_->notification);
+#line 444 "../src/contacts-window.vala"
+       _g_object_unref0 (b);
+#line 444 "../src/contacts-window.vala"
+       _g_free0 (msg);
+#line 444 "../src/contacts-window.vala"
+       block25_data_unref (_data25_);
+#line 444 "../src/contacts-window.vala"
+       _data25_ = NULL;
+#line 2929 "contacts-window.c"
+}
+
+static Block26Data*
+block26_data_ref (Block26Data* _data26_)
+{
+#line 492 "../src/contacts-window.vala"
+       g_atomic_int_inc (&_data26_->_ref_count_);
+#line 492 "../src/contacts-window.vala"
+       return _data26_;
+#line 2939 "contacts-window.c"
+}
+
+static void
+block26_data_unref (void * _userdata_)
+{
+       Block26Data* _data26_;
+       _data26_ = (Block26Data*) _userdata_;
+#line 492 "../src/contacts-window.vala"
+       if (g_atomic_int_dec_and_test (&_data26_->_ref_count_)) {
+#line 2949 "contacts-window.c"
+               ContactsWindow* self;
+#line 492 "../src/contacts-window.vala"
+               self = _data26_->self;
+#line 492 "../src/contacts-window.vala"
+               _g_object_unref0 (_data26_->notification);
+#line 492 "../src/contacts-window.vala"
+               _g_object_unref0 (_data26_->operation);
+#line 492 "../src/contacts-window.vala"
+               _g_object_unref0 (self);
+#line 492 "../src/contacts-window.vala"
+               g_slice_free (Block26Data, _data26_);
+#line 2961 "contacts-window.c"
+       }
+}
+
+static void
+__lambda54_ (Block26Data* _data26_)
+{
+       ContactsWindow* self;
+#line 502 "../src/contacts-window.vala"
+       self = _data26_->self;
+#line 503 "../src/contacts-window.vala"
+       contacts_in_app_notification_dismiss (_data26_->notification);
+#line 504 "../src/contacts-window.vala"
+       contacts_link_operation_undo (_data26_->operation, NULL, NULL);
+#line 2975 "contacts-window.c"
+}
+
+static void
+___lambda54__gtk_button_clicked (GtkButton* _sender,
+                                 gpointer self)
+{
+#line 502 "../src/contacts-window.vala"
+       __lambda54_ (self);
+#line 2984 "contacts-window.c"
+}
+
+static void
+contacts_window_contact_pane_contacts_linked_cb (ContactsWindow* self,
+                                                 const gchar* main_contact,
+                                                 const gchar* linked_contact,
+                                                 ContactsLinkOperation* operation)
+{
+       Block26Data* _data26_;
+       ContactsLinkOperation* _tmp0_;
+       gchar* msg = NULL;
+       GtkButton* b = NULL;
+       GtkButton* _tmp3_;
+       const gchar* _tmp4_;
+       ContactsInAppNotification* _tmp5_;
+#line 492 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 492 "../src/contacts-window.vala"
+       g_return_if_fail (linked_contact != NULL);
+#line 492 "../src/contacts-window.vala"
+       g_return_if_fail (operation != NULL);
+#line 492 "../src/contacts-window.vala"
+       _data26_ = g_slice_new0 (Block26Data);
+#line 492 "../src/contacts-window.vala"
+       _data26_->_ref_count_ = 1;
+#line 492 "../src/contacts-window.vala"
+       _data26_->self = g_object_ref (self);
+#line 492 "../src/contacts-window.vala"
+       _tmp0_ = _g_object_ref0 (operation);
+#line 492 "../src/contacts-window.vala"
+       _g_object_unref0 (_data26_->operation);
+#line 492 "../src/contacts-window.vala"
+       _data26_->operation = _tmp0_;
+#line 494 "../src/contacts-window.vala"
+       if (main_contact != NULL) {
+#line 3020 "contacts-window.c"
+               gchar* _tmp1_;
+#line 495 "../src/contacts-window.vala"
+               _tmp1_ = g_strdup_printf (_ ("%s linked to %s"), main_contact, linked_contact);
+#line 495 "../src/contacts-window.vala"
+               _g_free0 (msg);
+#line 495 "../src/contacts-window.vala"
+               msg = _tmp1_;
+#line 3028 "contacts-window.c"
+       } else {
+               gchar* _tmp2_;
+#line 497 "../src/contacts-window.vala"
+               _tmp2_ = g_strdup_printf (_ ("%s linked to the contact"), linked_contact);
+#line 497 "../src/contacts-window.vala"
+               _g_free0 (msg);
+#line 497 "../src/contacts-window.vala"
+               msg = _tmp2_;
+#line 3037 "contacts-window.c"
+       }
+#line 499 "../src/contacts-window.vala"
+       _tmp3_ = (GtkButton*) gtk_button_new_with_mnemonic (_ ("_Undo"));
+#line 499 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp3_);
+#line 499 "../src/contacts-window.vala"
+       b = _tmp3_;
+#line 500 "../src/contacts-window.vala"
+       _tmp4_ = msg;
+#line 500 "../src/contacts-window.vala"
+       _tmp5_ = contacts_in_app_notification_new (_tmp4_, b);
+#line 500 "../src/contacts-window.vala"
+       g_object_ref_sink (_tmp5_);
+#line 500 "../src/contacts-window.vala"
+       _data26_->notification = _tmp5_;
+#line 502 "../src/contacts-window.vala"
+       g_signal_connect_data (b, "clicked", (GCallback) ___lambda54__gtk_button_clicked, block26_data_ref 
(_data26_), (GClosureNotify) block26_data_unref, 0);
+#line 507 "../src/contacts-window.vala"
+       contacts_window_add_notification (self, _data26_->notification);
+#line 492 "../src/contacts-window.vala"
+       _g_object_unref0 (b);
+#line 492 "../src/contacts-window.vala"
+       _g_free0 (msg);
+#line 492 "../src/contacts-window.vala"
+       block26_data_unref (_data26_);
+#line 492 "../src/contacts-window.vala"
+       _data26_ = NULL;
+#line 3065 "contacts-window.c"
+}
+
+static void
+contacts_window_bind_dimension_properties_to_settings (ContactsWindow* self)
+{
+       ContactsSettings* _tmp0_;
+       ContactsSettings* _tmp1_;
+       ContactsSettings* _tmp2_;
+#line 510 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 511 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->settings;
+#line 511 "../src/contacts-window.vala"
+       contacts_settings_bind_default (_tmp0_, CONTACTS_SETTINGS_WINDOW_WIDTH_KEY, (GObject*) self, 
CONTACTS_WINDOW_WINDOW_WIDTH_PROP);
+#line 512 "../src/contacts-window.vala"
+       _tmp1_ = self->priv->settings;
+#line 512 "../src/contacts-window.vala"
+       contacts_settings_bind_default (_tmp1_, CONTACTS_SETTINGS_WINDOW_HEIGHT_KEY, (GObject*) self, 
CONTACTS_WINDOW_WINDOW_HEIGHT_PROP);
+#line 513 "../src/contacts-window.vala"
+       _tmp2_ = self->priv->settings;
+#line 513 "../src/contacts-window.vala"
+       contacts_settings_bind_default (_tmp2_, CONTACTS_SETTINGS_WINDOW_MAXIMIZED_KEY, (GObject*) self, 
CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROP);
+#line 3088 "contacts-window.c"
+}
+
+ContactsUiState
+contacts_window_get_state (ContactsWindow* self)
+{
+       ContactsUiState result;
+       ContactsUiState _tmp0_;
+#line 67 "../src/contacts-window.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 67 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->_state;
+#line 67 "../src/contacts-window.vala"
+       result = _tmp0_;
+#line 67 "../src/contacts-window.vala"
+       return result;
+#line 3104 "contacts-window.c"
+}
+
+void
+contacts_window_set_state (ContactsWindow* self,
+                           ContactsUiState value)
+{
+#line 67 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 67 "../src/contacts-window.vala"
+       if (contacts_window_get_state (self) != value) {
+#line 67 "../src/contacts-window.vala"
+               self->priv->_state = value;
+#line 67 "../src/contacts-window.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_window_properties[CONTACTS_WINDOW_STATE_PROPERTY]);
+#line 3119 "contacts-window.c"
+       }
+}
+
+gint
+contacts_window_get_window_width (ContactsWindow* self)
+{
+       gint result;
+#line 70 "../src/contacts-window.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 70 "../src/contacts-window.vala"
+       result = self->priv->_window_width;
+#line 70 "../src/contacts-window.vala"
+       return result;
+#line 3133 "contacts-window.c"
+}
+
+void
+contacts_window_set_window_width (ContactsWindow* self,
+                                  gint value)
+{
+#line 70 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 70 "../src/contacts-window.vala"
+       if (contacts_window_get_window_width (self) != value) {
+#line 70 "../src/contacts-window.vala"
+               self->priv->_window_width = value;
+#line 70 "../src/contacts-window.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_window_properties[CONTACTS_WINDOW_WINDOW_WIDTH_PROPERTY]);
+#line 3148 "contacts-window.c"
+       }
+}
+
+gint
+contacts_window_get_window_height (ContactsWindow* self)
+{
+       gint result;
+#line 74 "../src/contacts-window.vala"
+       g_return_val_if_fail (self != NULL, 0);
+#line 74 "../src/contacts-window.vala"
+       result = self->priv->_window_height;
+#line 74 "../src/contacts-window.vala"
+       return result;
+#line 3162 "contacts-window.c"
+}
+
+void
+contacts_window_set_window_height (ContactsWindow* self,
+                                   gint value)
+{
+#line 74 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 74 "../src/contacts-window.vala"
+       if (contacts_window_get_window_height (self) != value) {
+#line 74 "../src/contacts-window.vala"
+               self->priv->_window_height = value;
+#line 74 "../src/contacts-window.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_window_properties[CONTACTS_WINDOW_WINDOW_HEIGHT_PROPERTY]);
+#line 3177 "contacts-window.c"
+       }
+}
+
+gboolean
+contacts_window_get_window_maximized (ContactsWindow* self)
+{
+       gboolean result;
+#line 78 "../src/contacts-window.vala"
+       g_return_val_if_fail (self != NULL, FALSE);
+#line 78 "../src/contacts-window.vala"
+       result = self->priv->_window_maximized;
+#line 78 "../src/contacts-window.vala"
+       return result;
+#line 3191 "contacts-window.c"
+}
+
+void
+contacts_window_set_window_maximized (ContactsWindow* self,
+                                      gboolean value)
+{
+#line 78 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 78 "../src/contacts-window.vala"
+       if (contacts_window_get_window_maximized (self) != value) {
+#line 78 "../src/contacts-window.vala"
+               self->priv->_window_maximized = value;
+#line 78 "../src/contacts-window.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_window_properties[CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROPERTY]);
+#line 3206 "contacts-window.c"
+       }
+}
+
+ContactsStore*
+contacts_window_get_store (ContactsWindow* self)
+{
+       ContactsStore* result;
+       ContactsStore* _tmp0_;
+#line 84 "../src/contacts-window.vala"
+       g_return_val_if_fail (self != NULL, NULL);
+#line 84 "../src/contacts-window.vala"
+       _tmp0_ = self->priv->_store;
+#line 84 "../src/contacts-window.vala"
+       result = _tmp0_;
+#line 84 "../src/contacts-window.vala"
+       return result;
+#line 3223 "contacts-window.c"
+}
+
+void
+contacts_window_set_store (ContactsWindow* self,
+                           ContactsStore* value)
+{
+#line 84 "../src/contacts-window.vala"
+       g_return_if_fail (self != NULL);
+#line 84 "../src/contacts-window.vala"
+       if (contacts_window_get_store (self) != value) {
+#line 3234 "contacts-window.c"
+               ContactsStore* _tmp0_;
+#line 84 "../src/contacts-window.vala"
+               _tmp0_ = _g_object_ref0 (value);
+#line 84 "../src/contacts-window.vala"
+               _g_object_unref0 (self->priv->_store);
+#line 84 "../src/contacts-window.vala"
+               self->priv->_store = _tmp0_;
+#line 84 "../src/contacts-window.vala"
+               g_object_notify_by_pspec ((GObject *) self, 
contacts_window_properties[CONTACTS_WINDOW_STORE_PROPERTY]);
+#line 3244 "contacts-window.c"
+       }
+}
+
+static void
+contacts_window_class_init (ContactsWindowClass * klass,
+                            gpointer klass_data)
+{
+#line 24 "../src/contacts-window.vala"
+       contacts_window_parent_class = g_type_class_peek_parent (klass);
+#line 24 "../src/contacts-window.vala"
+       g_type_class_adjust_private_offset (klass, &ContactsWindow_private_offset);
+#line 24 "../src/contacts-window.vala"
+       ((GtkWidgetClass *) klass)->window_state_event = (gboolean (*) (GtkWidget*, GdkEventWindowState*)) 
contacts_window_real_window_state_event;
+#line 24 "../src/contacts-window.vala"
+       ((GtkWidgetClass *) klass)->size_allocate = (void (*) (GtkWidget*, GtkAllocation*)) 
contacts_window_real_size_allocate;
+#line 24 "../src/contacts-window.vala"
+       G_OBJECT_CLASS (klass)->get_property = _vala_contacts_window_get_property;
+#line 24 "../src/contacts-window.vala"
+       G_OBJECT_CLASS (klass)->set_property = _vala_contacts_window_set_property;
+#line 24 "../src/contacts-window.vala"
+       G_OBJECT_CLASS (klass)->finalize = contacts_window_finalize;
+#line 24 "../src/contacts-window.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_WINDOW_STATE_PROPERTY, 
contacts_window_properties[CONTACTS_WINDOW_STATE_PROPERTY] = g_param_spec_enum ("state", "state", "state", 
CONTACTS_TYPE_UI_STATE, CONTACTS_UI_STATE_NORMAL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | 
G_PARAM_WRITABLE));
+#line 3268 "contacts-window.c"
+       /** Holds the current width. */
+#line 24 "../src/contacts-window.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_WINDOW_WINDOW_WIDTH_PROPERTY, 
contacts_window_properties[CONTACTS_WINDOW_WINDOW_WIDTH_PROPERTY] = g_param_spec_int ("window-width", 
"window-width", "window-width", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | 
G_PARAM_WRITABLE));
+#line 3272 "contacts-window.c"
+       /** Holds the current height. */
+#line 24 "../src/contacts-window.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_WINDOW_WINDOW_HEIGHT_PROPERTY, 
contacts_window_properties[CONTACTS_WINDOW_WINDOW_HEIGHT_PROPERTY] = g_param_spec_int ("window-height", 
"window-height", "window-height", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | 
G_PARAM_WRITABLE));
+#line 3276 "contacts-window.c"
+       /** Holds true if the window is currently maximized. */
+#line 24 "../src/contacts-window.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROPERTY, 
contacts_window_properties[CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROPERTY] = g_param_spec_boolean 
("window-maximized", "window-maximized", "window-maximized", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE 
| G_PARAM_WRITABLE));
+#line 24 "../src/contacts-window.vala"
+       g_object_class_install_property (G_OBJECT_CLASS (klass), CONTACTS_WINDOW_STORE_PROPERTY, 
contacts_window_properties[CONTACTS_WINDOW_STORE_PROPERTY] = g_param_spec_object ("store", "store", "store", 
CONTACTS_TYPE_STORE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), 
"/org/gnome/Contacts/ui/contacts-window.ui");
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "header", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, header));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "content_box", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, content_box));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "back_revealer", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, back_revealer));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "list_pane_stack", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, list_pane_stack));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "contact_pane_container", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, contact_pane_container));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "titlebar", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, titlebar));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "left_header", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, left_header));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "right_header", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, right_header));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "notification_overlay", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, notification_overlay));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "add_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, add_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "select_cancel_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, select_cancel_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "hamburger_menu_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, hamburger_menu_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "sort_on_firstname_button", 
FALSE, ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, sort_on_firstname_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "sort_on_surname_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, sort_on_surname_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "favorite_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, favorite_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "edit_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, edit_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "cancel_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, cancel_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "done_button", FALSE, 
ContactsWindow_private_offset + G_STRUCT_OFFSET (ContactsWindowPrivate, done_button));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_back_clicked", 
G_CALLBACK(_contacts_window_on_back_clicked_gtk_button_clicked));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_edit_button_clicked", 
G_CALLBACK(_contacts_window_on_edit_button_clicked_gtk_button_clicked));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_favorite_button_toggled", 
G_CALLBACK(_contacts_window_on_favorite_button_toggled_gtk_toggle_button_toggled));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "new_contact", 
G_CALLBACK(_contacts_window_new_contact_gtk_button_clicked));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_cancel_visible", 
G_CALLBACK(_contacts_window_on_cancel_visible_g_object_notify));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_fold", 
G_CALLBACK(_contacts_window_on_fold_g_object_notify));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), 
"on_child_transition_running", G_CALLBACK(_contacts_window_on_child_transition_running_g_object_notify));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "key_press_event_cb", 
G_CALLBACK(_contacts_window_key_press_event_cb_gtk_widget_key_press_event));
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "delete_event_cb", 
G_CALLBACK(_contacts_window_delete_event_cb_gtk_widget_delete_event));
+#line 3338 "contacts-window.c"
+}
+
+static void
+contacts_window_instance_init (ContactsWindow * self,
+                               gpointer klass)
+{
+#line 24 "../src/contacts-window.vala"
+       self->priv = contacts_window_get_instance_private (self);
+#line 67 "../src/contacts-window.vala"
+       self->priv->_state = CONTACTS_UI_STATE_NORMAL;
+#line 24 "../src/contacts-window.vala"
+       gtk_widget_init_template (GTK_WIDGET (self));
+#line 3351 "contacts-window.c"
+}
+
+static void
+contacts_window_finalize (GObject * obj)
+{
+       ContactsWindow * self;
+#line 24 "../src/contacts-window.vala"
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_WINDOW, ContactsWindow);
+#line 26 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->header);
+#line 28 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->content_box);
+#line 30 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->back_revealer);
+#line 32 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->list_pane_stack);
+#line 34 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->contact_pane_container);
+#line 36 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->titlebar);
+#line 38 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->left_header);
+#line 40 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->right_header);
+#line 42 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->notification_overlay);
+#line 44 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->add_button);
+#line 46 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->select_cancel_button);
+#line 48 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->hamburger_menu_button);
+#line 50 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->sort_on_firstname_button);
+#line 52 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->sort_on_surname_button);
+#line 54 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->favorite_button);
+#line 57 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->edit_button);
+#line 59 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->cancel_button);
+#line 61 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->done_button);
+#line 64 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->list_pane);
+#line 65 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->contact_pane);
+#line 81 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->settings);
+#line 83 "../src/contacts-window.vala"
+       _g_object_unref0 (self->priv->_store);
+#line 24 "../src/contacts-window.vala"
+       G_OBJECT_CLASS (contacts_window_parent_class)->finalize (obj);
+#line 3406 "contacts-window.c"
+}
+
+static GType
+contacts_window_get_type_once (void)
+{
+       static const GTypeInfo g_define_type_info = { sizeof (ContactsWindowClass), (GBaseInitFunc) NULL, 
(GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_window_class_init, (GClassFinalizeFunc) NULL, NULL, 
sizeof (ContactsWindow), 0, (GInstanceInitFunc) contacts_window_instance_init, NULL };
+       GType contacts_window_type_id;
+       contacts_window_type_id = g_type_register_static (gtk_application_window_get_type (), 
"ContactsWindow", &g_define_type_info, 0);
+       ContactsWindow_private_offset = g_type_add_instance_private (contacts_window_type_id, sizeof 
(ContactsWindowPrivate));
+       return contacts_window_type_id;
+}
+
+GType
+contacts_window_get_type (void)
+{
+       static volatile gsize contacts_window_type_id__volatile = 0;
+       if (g_once_init_enter (&contacts_window_type_id__volatile)) {
+               GType contacts_window_type_id;
+               contacts_window_type_id = contacts_window_get_type_once ();
+               g_once_init_leave (&contacts_window_type_id__volatile, contacts_window_type_id);
+       }
+       return contacts_window_type_id__volatile;
+}
+
+static void
+_vala_contacts_window_get_property (GObject * object,
+                                    guint property_id,
+                                    GValue * value,
+                                    GParamSpec * pspec)
+{
+       ContactsWindow * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_WINDOW, ContactsWindow);
+#line 24 "../src/contacts-window.vala"
+       switch (property_id) {
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_STATE_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               g_value_set_enum (value, contacts_window_get_state (self));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_WINDOW_WIDTH_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               g_value_set_int (value, contacts_window_get_window_width (self));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_WINDOW_HEIGHT_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               g_value_set_int (value, contacts_window_get_window_height (self));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               g_value_set_boolean (value, contacts_window_get_window_maximized (self));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_STORE_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               g_value_set_object (value, contacts_window_get_store (self));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 3471 "contacts-window.c"
+               default:
+#line 24 "../src/contacts-window.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 3477 "contacts-window.c"
+       }
+}
+
+static void
+_vala_contacts_window_set_property (GObject * object,
+                                    guint property_id,
+                                    const GValue * value,
+                                    GParamSpec * pspec)
+{
+       ContactsWindow * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (object, CONTACTS_TYPE_WINDOW, ContactsWindow);
+#line 24 "../src/contacts-window.vala"
+       switch (property_id) {
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_STATE_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               contacts_window_set_state (self, g_value_get_enum (value));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_WINDOW_WIDTH_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               contacts_window_set_window_width (self, g_value_get_int (value));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_WINDOW_HEIGHT_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               contacts_window_set_window_height (self, g_value_get_int (value));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_WINDOW_MAXIMIZED_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               contacts_window_set_window_maximized (self, g_value_get_boolean (value));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 24 "../src/contacts-window.vala"
+               case CONTACTS_WINDOW_STORE_PROPERTY:
+#line 24 "../src/contacts-window.vala"
+               contacts_window_set_store (self, g_value_get_object (value));
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 3521 "contacts-window.c"
+               default:
+#line 24 "../src/contacts-window.vala"
+               G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+#line 24 "../src/contacts-window.vala"
+               break;
+#line 3527 "contacts-window.c"
+       }
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/main.c b/_build/src/25a6634@@gnome-contacts@exe/main.c
new file mode 100644
index 0000000..d082a72
--- /dev/null
+++ b/_build/src/25a6634@@gnome-contacts@exe/main.c
@@ -0,0 +1,98 @@
+/* main.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from main.vala, do not modify */
+
+/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */
+/*
+ * Copyright (C) 2011 Alexander Larsson <alexl redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <config.h>
+#include <cheese/cheese-camera-device.h>
+#include <handy.h>
+#include <gtk/gtk.h>
+#include <glib-object.h>
+#include <gio/gio.h>
+
+#define CONTACTS_TYPE_APP (contacts_app_get_type ())
+#define CONTACTS_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_APP, ContactsApp))
+#define CONTACTS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_APP, ContactsAppClass))
+#define CONTACTS_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_APP))
+#define CONTACTS_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_APP))
+#define CONTACTS_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_APP, ContactsAppClass))
+
+typedef struct _ContactsApp ContactsApp;
+typedef struct _ContactsAppClass ContactsAppClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+gint _vala_main (gchar** args,
+                 gint args_length1);
+GType contacts_app_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsApp, g_object_unref)
+ContactsApp* contacts_app_new (void);
+ContactsApp* contacts_app_construct (GType object_type);
+
+gint
+_vala_main (gchar** args,
+            gint args_length1)
+{
+       ContactsApp* app = NULL;
+       ContactsApp* _tmp0_;
+       ContactsApp* _tmp1_;
+       gint result = 0;
+#line 24 "../src/main.vala"
+       bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#line 25 "../src/main.vala"
+       bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+#line 26 "../src/main.vala"
+       textdomain (GETTEXT_PACKAGE);
+#line 29 "../src/main.vala"
+       cheese_gtk_init ((gint*) (&args_length1), &args);
+#line 32 "../src/main.vala"
+       hdy_init ((gint*) (&args_length1), &args);
+#line 34 "../src/main.vala"
+       _tmp0_ = contacts_app_new ();
+#line 34 "../src/main.vala"
+       app = _tmp0_;
+#line 35 "../src/main.vala"
+       _tmp1_ = app;
+#line 35 "../src/main.vala"
+       g_application_run ((GApplication*) _tmp1_, (gint) args_length1, args);
+#line 36 "../src/main.vala"
+       _g_object_unref0 (app);
+#line 36 "../src/main.vala"
+       app = NULL;
+#line 38 "../src/main.vala"
+       result = 0;
+#line 38 "../src/main.vala"
+       _g_object_unref0 (app);
+#line 38 "../src/main.vala"
+       return result;
+#line 88 "main.c"
+}
+
+int
+main (int argc,
+      char ** argv)
+{
+#line 22 "../src/main.vala"
+       return _vala_main (argv, argc);
+#line 97 "main.c"
+}
+
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o
new file mode 100644
index 0000000..a755a5f
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_.._.._data_org.gnome.Contacts.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o
new file mode 100644
index 0000000..3bee8cd
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-accounts-list.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o
new file mode 100644
index 0000000..221e04c
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-app.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o
new file mode 100644
index 0000000..8930e3b
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar-selector.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o
new file mode 100644
index 0000000..b956200
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-avatar.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o
new file mode 100644
index 0000000..b6754a5
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-editor.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o
new file mode 100644
index 0000000..b05fc56
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-form.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o
new file mode 100644
index 0000000..0578352
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-list.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o
new file mode 100644
index 0000000..1e93a70
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-pane.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o
new file mode 100644
index 0000000..0a9d679
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-contact-sheet.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o
new file mode 100644
index 0000000..46fd172
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-crop-cheese-dialog.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o
new file mode 100644
index 0000000..6c4395c
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-in-app-notification.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o
new file mode 100644
index 0000000..8a8ae61
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-link-suggestion-grid.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o
new file mode 100644
index 0000000..dcf06dc
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linked-personas-dialog.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o
new file mode 100644
index 0000000..25618e5
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-linking.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o
new file mode 100644
index 0000000..555e4cb
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-list-pane.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o
new file mode 100644
index 0000000..0e77462
Binary files /dev/null and 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-max-width-bin.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o
new file mode 100644
index 0000000..27a4815
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-settings.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o
new file mode 100644
index 0000000..55f19ec
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-setup-window.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o
new file mode 100644
index 0000000..8c86aeb
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-type-combo.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o
new file mode 100644
index 0000000..9a5d05a
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-ui-state.c.o 
differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o
new file mode 100644
index 0000000..ec01fdf
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_contacts-window.c.o differ
diff --git a/_build/src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o 
b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o
new file mode 100644
index 0000000..dfeca2b
Binary files /dev/null and b/_build/src/25a6634@@gnome-contacts@exe/meson-generated_main.c.o differ
diff --git a/_build/src/contacts.h b/_build/src/contacts.h
new file mode 100644
index 0000000..cd8a842
--- /dev/null
+++ b/_build/src/contacts.h
@@ -0,0 +1,291 @@
+/* contacts.h generated by valac 0.47.2.1-ce69, the Vala compiler, do not modify */
+
+#ifndef __SRC_CONTACTS_H__
+#define __SRC_CONTACTS_H__
+
+#include <libedataserver/libedataserver.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include <folks/folks.h>
+#include <glib-object.h>
+#include <gio/gio.h>
+#include <gee.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+#define CONTACTS_TYPE_FAKE_PERSONA_STORE (contacts_fake_persona_store_get_type ())
+#define CONTACTS_FAKE_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStore))
+#define CONTACTS_FAKE_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStoreClass))
+#define CONTACTS_IS_FAKE_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
CONTACTS_TYPE_FAKE_PERSONA_STORE))
+#define CONTACTS_IS_FAKE_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_FAKE_PERSONA_STORE))
+#define CONTACTS_FAKE_PERSONA_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_FAKE_PERSONA_STORE, ContactsFakePersonaStoreClass))
+
+typedef struct _ContactsFakePersonaStore ContactsFakePersonaStore;
+typedef struct _ContactsFakePersonaStoreClass ContactsFakePersonaStoreClass;
+typedef struct _ContactsFakePersonaStorePrivate ContactsFakePersonaStorePrivate;
+
+#define CONTACTS_TYPE_FAKE_PERSONA (contacts_fake_persona_get_type ())
+#define CONTACTS_FAKE_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_FAKE_PERSONA, 
ContactsFakePersona))
+#define CONTACTS_FAKE_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_FAKE_PERSONA, 
ContactsFakePersonaClass))
+#define CONTACTS_IS_FAKE_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_FAKE_PERSONA))
+#define CONTACTS_IS_FAKE_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_FAKE_PERSONA))
+#define CONTACTS_FAKE_PERSONA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_FAKE_PERSONA, 
ContactsFakePersonaClass))
+
+typedef struct _ContactsFakePersona ContactsFakePersona;
+typedef struct _ContactsFakePersonaClass ContactsFakePersonaClass;
+typedef struct _ContactsFakePersonaPrivate ContactsFakePersonaPrivate;
+
+#define CONTACTS_TYPE_IM_SERVICE (contacts_im_service_get_type ())
+typedef struct _ContactsImService ContactsImService;
+
+#define CONTACTS_TYPE_STORE (contacts_store_get_type ())
+#define CONTACTS_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_STORE, ContactsStore))
+#define CONTACTS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_STORE, 
ContactsStoreClass))
+#define CONTACTS_IS_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_STORE))
+#define CONTACTS_IS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_STORE))
+#define CONTACTS_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_STORE, 
ContactsStoreClass))
+
+typedef struct _ContactsStore ContactsStore;
+typedef struct _ContactsStoreClass ContactsStoreClass;
+typedef struct _ContactsStorePrivate ContactsStorePrivate;
+
+#define CONTACTS_TYPE_TYPESET (contacts_typeset_get_type ())
+#define CONTACTS_TYPESET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPESET, ContactsTypeSet))
+#define CONTACTS_TYPESET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_TYPESET, 
ContactsTypeSetClass))
+#define CONTACTS_IS_TYPESET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPESET))
+#define CONTACTS_IS_TYPESET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_TYPESET))
+#define CONTACTS_TYPESET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_TYPESET, 
ContactsTypeSetClass))
+
+typedef struct _ContactsTypeSet ContactsTypeSet;
+typedef struct _ContactsTypeSetClass ContactsTypeSetClass;
+typedef struct _ContactsTypeSetPrivate ContactsTypeSetPrivate;
+
+#define CONTACTS_TYPE_TYPEDESCRIPTOR (contacts_typedescriptor_get_type ())
+#define CONTACTS_TYPEDESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_TYPEDESCRIPTOR, 
ContactsTypeDescriptor))
+#define CONTACTS_TYPEDESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), 
CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptorClass))
+#define CONTACTS_IS_TYPEDESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_TYPEDESCRIPTOR))
+#define CONTACTS_IS_TYPEDESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), 
CONTACTS_TYPE_TYPEDESCRIPTOR))
+#define CONTACTS_TYPEDESCRIPTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), 
CONTACTS_TYPE_TYPEDESCRIPTOR, ContactsTypeDescriptorClass))
+
+typedef struct _ContactsTypeDescriptor ContactsTypeDescriptor;
+typedef struct _ContactsTypeDescriptorClass ContactsTypeDescriptorClass;
+typedef struct _ContactsTypeDescriptorPrivate ContactsTypeDescriptorPrivate;
+
+struct _ContactsFakePersonaStore {
+       FolksPersonaStore parent_instance;
+       ContactsFakePersonaStorePrivate * priv;
+};
+
+struct _ContactsFakePersonaStoreClass {
+       FolksPersonaStoreClass parent_class;
+};
+
+struct _ContactsFakePersona {
+       FolksPersona parent_instance;
+       ContactsFakePersonaPrivate * priv;
+};
+
+struct _ContactsFakePersonaClass {
+       FolksPersonaClass parent_class;
+};
+
+struct _ContactsImService {
+       const gchar* service_name;
+       const gchar* display_name;
+};
+
+struct _ContactsStore {
+       GObject parent_instance;
+       ContactsStorePrivate * priv;
+       GeeHashMultiMap* dont_suggest_link;
+};
+
+struct _ContactsStoreClass {
+       GObjectClass parent_class;
+};
+
+struct _ContactsTypeSet {
+       GObject parent_instance;
+       ContactsTypeSetPrivate * priv;
+};
+
+struct _ContactsTypeSetClass {
+       GObjectClass parent_class;
+};
+
+struct _ContactsTypeDescriptor {
+       GObject parent_instance;
+       ContactsTypeDescriptorPrivate * priv;
+       gchar* name;
+       gchar** vcard_types;
+       gint vcard_types_length1;
+       GtkTreeIter iter;
+};
+
+struct _ContactsTypeDescriptorClass {
+       GObjectClass parent_class;
+};
+
+extern ESourceRegistry* contacts_eds_source_registry;
+gboolean contacts_ensure_eds_accounts (gboolean allow_interaction);
+gboolean contacts_has_goa_account (void);
+gboolean contacts_esource_uid_is_google (const gchar* uid);
+gchar* contacts_lookup_esource_name_by_uid (const gchar* uid);
+gchar* contacts_lookup_esource_name_by_uid_for_contact (const gchar* uid);
+GtkImage* contacts_get_icon_for_goa_account (const gchar* goa_id);
+GType contacts_fake_persona_store_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsFakePersonaStore, g_object_unref)
+extern ContactsFakePersonaStore* contacts_fake_persona_store__the_store;
+ContactsFakePersonaStore* contacts_fake_persona_store_the_store (void);
+ContactsFakePersonaStore* contacts_fake_persona_store_new (void);
+ContactsFakePersonaStore* contacts_fake_persona_store_construct (GType object_type);
+GType contacts_fake_persona_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsFakePersona, g_object_unref)
+ContactsFakePersona* contacts_fake_persona_new (FolksPersonaStore* store,
+                                                GHashTable* details);
+ContactsFakePersona* contacts_fake_persona_construct (GType object_type,
+                                                      FolksPersonaStore* store,
+                                                      GHashTable* details);
+GType contacts_im_service_get_type (void) G_GNUC_CONST;
+ContactsImService* contacts_im_service_dup (const ContactsImService* self);
+void contacts_im_service_free (ContactsImService* self);
+gchar* contacts_im_service_get_display_name (const gchar* service_name);
+GType contacts_store_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsStore, g_object_unref)
+gboolean contacts_store_may_suggest_link (ContactsStore* self,
+                                          FolksIndividual* a,
+                                          FolksIndividual* b);
+void contacts_store_add_no_suggest_link (ContactsStore* self,
+                                         FolksIndividual* a,
+                                         FolksIndividual* b);
+GeeCollection* contacts_store_get_contacts (ContactsStore* self);
+void contacts_store_find_contact (ContactsStore* self,
+                                  FolksQuery* query,
+                                  GAsyncReadyCallback _callback_,
+                                  gpointer _user_data_);
+FolksIndividual* contacts_store_find_contact_finish (ContactsStore* self,
+                                                     GAsyncResult* _res_);
+ContactsStore* contacts_store_new (void);
+ContactsStore* contacts_store_construct (GType object_type);
+FolksIndividualAggregator* contacts_store_get_aggregator (ContactsStore* self);
+FolksBackendStore* contacts_store_get_backend_store (ContactsStore* self);
+gboolean contacts_store_get_is_quiescent (ContactsStore* self);
+gboolean contacts_store_get_is_prepared (ContactsStore* self);
+GType contacts_typeset_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeSet, g_object_unref)
+void contacts_typeset_get_iter_for_field_details (ContactsTypeSet* self,
+                                                  FolksAbstractFieldDetails* detail,
+                                                  GtkTreeIter* iter);
+void contacts_typeset_get_iter_for_vcard_type (ContactsTypeSet* self,
+                                               const gchar* type,
+                                               GtkTreeIter* iter);
+void contacts_typeset_get_iter_for_custom_label (ContactsTypeSet* self,
+                                                 const gchar* label,
+                                                 GtkTreeIter* iter);
+gchar* contacts_typeset_format_type (ContactsTypeSet* self,
+                                     FolksAbstractFieldDetails* detail);
+GType contacts_typedescriptor_get_type (void) G_GNUC_CONST;
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ContactsTypeDescriptor, g_object_unref)
+ContactsTypeDescriptor* contacts_typeset_lookup_descriptor_in_store (ContactsTypeSet* self,
+                                                                     const gchar* display_name);
+ContactsTypeDescriptor* contacts_typeset_get_descriptor_for_custom_label (ContactsTypeSet* self,
+                                                                          const gchar* label);
+ContactsTypeDescriptor* contacts_typeset_lookup_descriptor_for_field_details (ContactsTypeSet* self,
+                                                                              FolksAbstractFieldDetails* 
detail);
+const gchar* contacts_typeset_get_category (ContactsTypeSet* self);
+void contacts_typeset_set_category (ContactsTypeSet* self,
+                                    const gchar* value);
+GtkListStore* contacts_typeset_get_store (ContactsTypeSet* self);
+ContactsTypeSet* contacts_typeset_get_general (void);
+ContactsTypeSet* contacts_typeset_get_email (void);
+ContactsTypeSet* contacts_typeset_get_phone (void);
+#define CONTACTS_TYPEDESCRIPTOR_X_GOOGLE_LABEL "x-google-label"
+ContactsTypeDescriptor* contacts_typedescriptor_new_vcard (const gchar* untranslated_name,
+                                                           gchar** types,
+                                                           gint types_length1);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_vcard (GType object_type,
+                                                                 const gchar* untranslated_name,
+                                                                 gchar** types,
+                                                                 gint types_length1);
+ContactsTypeDescriptor* contacts_typedescriptor_new_custom (const gchar* name);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_custom (GType object_type,
+                                                                  const gchar* name);
+ContactsTypeDescriptor* contacts_typedescriptor_new_other (void);
+ContactsTypeDescriptor* contacts_typedescriptor_construct_other (GType object_type);
+gboolean contacts_typedescriptor_is_custom (ContactsTypeDescriptor* self);
+void contacts_typedescriptor_save_to_field_details (ContactsTypeDescriptor* self,
+                                                    FolksAbstractFieldDetails* details);
+gchar* contacts_typedescriptor_to_string (ContactsTypeDescriptor* self);
+ContactsTypeDescriptor* contacts_typedescriptor_new (void);
+ContactsTypeDescriptor* contacts_typedescriptor_construct (GType object_type);
+const gchar* contacts_typedescriptor_get_display_name (ContactsTypeDescriptor* self);
+gboolean contacts_is_set (const gchar* str);
+void contacts_add_separator (GtkListBoxRow* row,
+                             GtkListBoxRow* before_row);
+void contacts_activate_action (const gchar* app_id,
+                               const gchar* action,
+                               GVariant* parameter,
+                               guint32 timestamp);
+void contacts_utils_compose_mail (const gchar* email);
+gpointer contacts_utils_get_first (GType t_type,
+                                   GBoxedCopyFunc t_dup_func,
+                                   GDestroyNotify t_destroy_func,
+                                   GeeCollection* collection);
+void contacts_utils_grab_entry_focus_no_select (GtkEntry* entry);
+gchar** contacts_utils_get_stock_avatars (gint* result_length1);
+FolksPersonaStore** contacts_utils_get_eds_address_books (ContactsStore* contacts_store,
+                                                          gint* result_length1);
+void contacts_utils_show_error_dialog (const gchar* _error_,
+                                       GtkWindow* toplevel);
+gboolean contacts_utils_has_main_persona (FolksIndividual* individual);
+gboolean contacts_utils_is_ignorable (FolksIndividual* individual);
+gboolean contacts_utils_suggest_link_to (ContactsStore* store,
+                                         FolksIndividual* _self_,
+                                         FolksIndividual* other);
+gint contacts_utils_compare_fields (void* _a,
+                                    void* _b);
+GeeList* contacts_utils_sort_fields (GType t_type,
+                                     GBoxedCopyFunc t_dup_func,
+                                     GDestroyNotify t_destroy_func,
+                                     GeeCollection* fields);
+gchar** contacts_utils_format_address (FolksPostalAddress* addr,
+                                       gint* result_length1);
+gboolean contacts_utils_can_remove_personas (FolksIndividual* individual);
+GeeList* contacts_utils_get_personas_for_display (FolksIndividual* individual);
+FolksPersona* contacts_utils_find_primary_persona (FolksIndividual* individual);
+FolksPersona* contacts_utils_find_persona_from_uid (FolksIndividual* individual,
+                                                    const gchar* uid);
+gchar* contacts_utils_format_persona_stores (FolksIndividual* individual);
+gchar* contacts_utils_format_persona_store_name (FolksPersonaStore* store);
+gboolean contacts_utils_persona_is_google_other (FolksPersona* persona);
+gboolean contacts_utils_persona_is_google_profile (FolksPersona* persona);
+gchar* contacts_utils_format_persona_store_name_for_contact (FolksPersona* persona);
+void contacts_utils_set_individual_property (FolksIndividual* individual,
+                                             const gchar* property_name,
+                                             GValue* value,
+                                             GAsyncReadyCallback _callback_,
+                                             gpointer _user_data_);
+void contacts_utils_set_individual_property_finish (GAsyncResult* _res_,
+                                                    GError** error);
+void contacts_utils_set_persona_property (FolksPersona* persona,
+                                          const gchar* property_name,
+                                          GValue* new_value,
+                                          GAsyncReadyCallback _callback_,
+                                          gpointer _user_data_);
+void contacts_utils_set_persona_property_finish (GAsyncResult* _res_,
+                                                 GError** error);
+GdkPixbuf* contacts_avatar_utils_generate_user_picture (const gchar* name,
+                                                        gint size,
+                                                        gboolean label);
+GdkPixbuf* contacts_avatar_utils_round_image (GdkPixbuf* source);
+gchar* contacts_avatar_utils_extract_initials_from_name (const gchar* name);
+void contacts_avatar_utils_get_color_for_name (const gchar* name,
+                                               GdkRGBA* result);
+
+G_END_DECLS
+
+#endif
diff --git a/_build/src/contacts.vapi b/_build/src/contacts.vapi
new file mode 100644
index 0000000..0f5f43c
--- /dev/null
+++ b/_build/src/contacts.vapi
@@ -0,0 +1,159 @@
+/* contacts.vapi generated by valac 0.47.2.1-ce69, do not modify. */
+
+namespace Contacts {
+       namespace AvatarUtils {
+               [CCode (cheader_filename = "contacts.h")]
+               public static string? extract_initials_from_name (string name);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Gdk.Pixbuf generate_user_picture (string name, int size, bool label = true);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Gdk.RGBA get_color_for_name (string name);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Gdk.Pixbuf round_image (Gdk.Pixbuf source);
+       }
+       namespace Utils {
+               [CCode (cheader_filename = "contacts.h")]
+               public static bool can_remove_personas (Folks.Individual individual);
+               [CCode (cheader_filename = "contacts.h")]
+               public static int compare_fields (void* _a, void* _b);
+               [CCode (cheader_filename = "contacts.h")]
+               public static void compose_mail (string email);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Folks.Persona? find_persona_from_uid (Folks.Individual individual, string uid);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Folks.Persona? find_primary_persona (Folks.Individual individual);
+               [CCode (cheader_filename = "contacts.h")]
+               public static string[] format_address (Folks.PostalAddress addr);
+               [CCode (cheader_filename = "contacts.h")]
+               public static string format_persona_store_name (Folks.PersonaStore store);
+               [CCode (cheader_filename = "contacts.h")]
+               public static string format_persona_store_name_for_contact (Folks.Persona persona);
+               [CCode (cheader_filename = "contacts.h")]
+               public static string format_persona_stores (Folks.Individual individual);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Folks.PersonaStore[] get_eds_address_books (Contacts.Store contacts_store);
+               [CCode (cheader_filename = "contacts.h")]
+               public static T get_first<T> (Gee.Collection<T> collection);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Gee.List<Folks.Persona> get_personas_for_display (Folks.Individual individual);
+               [CCode (cheader_filename = "contacts.h")]
+               public static string[] get_stock_avatars ();
+               [CCode (cheader_filename = "contacts.h")]
+               public static void grab_entry_focus_no_select (Gtk.Entry entry);
+               [CCode (cheader_filename = "contacts.h")]
+               public static bool has_main_persona (Folks.Individual individual);
+               [CCode (cheader_filename = "contacts.h")]
+               public static bool is_ignorable (Folks.Individual individual);
+               [CCode (cheader_filename = "contacts.h")]
+               public static bool persona_is_google_other (Folks.Persona persona);
+               [CCode (cheader_filename = "contacts.h")]
+               public static bool persona_is_google_profile (Folks.Persona persona);
+               [CCode (cheader_filename = "contacts.h")]
+               public static async void set_individual_property (Folks.Individual individual, string 
property_name, GLib.Value value) throws GLib.Error, Folks.PropertyError;
+               [CCode (cheader_filename = "contacts.h")]
+               public static async void set_persona_property (Folks.Persona persona, string property_name, 
GLib.Value new_value) throws Folks.PropertyError, Folks.IndividualAggregatorError;
+               [CCode (cheader_filename = "contacts.h")]
+               public static void show_error_dialog (string error, Gtk.Window toplevel);
+               [CCode (cheader_filename = "contacts.h")]
+               public static Gee.List<T> sort_fields<T> (Gee.Collection<T> fields);
+               [CCode (cheader_filename = "contacts.h")]
+               public static bool suggest_link_to (Contacts.Store store, Folks.Individual self, 
Folks.Individual other);
+       }
+       [CCode (cheader_filename = "contacts.h")]
+       public class FakePersona : Folks.Persona, Folks.AvatarDetails, Folks.BirthdayDetails, 
Folks.EmailDetails, Folks.ImDetails, Folks.NameDetails, Folks.NoteDetails, Folks.PhoneDetails, 
Folks.UrlDetails, Folks.PostalAddressDetails {
+               public FakePersona (Folks.PersonaStore store, GLib.HashTable<string,GLib.Value?> details);
+               public override string[] linkable_properties { get; }
+               public override string[] writeable_properties { get; }
+       }
+       [CCode (cheader_filename = "contacts.h")]
+       public class FakePersonaStore : Folks.PersonaStore {
+               public static Contacts.FakePersonaStore _the_store;
+               public FakePersonaStore ();
+               public override async Folks.Persona? add_persona_from_details 
(GLib.HashTable<string,GLib.Value?> details) throws Folks.PersonaStoreError;
+               public override async void prepare () throws GLib.Error;
+               public override async void remove_persona (Folks.Persona persona) throws 
Folks.PersonaStoreError;
+               public static Contacts.FakePersonaStore the_store ();
+               public override string[] always_writeable_properties { get; }
+               public override Folks.MaybeBool can_add_personas { get; }
+               public override Folks.MaybeBool can_alias_personas { get; }
+               public override Folks.MaybeBool can_group_personas { get; }
+               public override Folks.MaybeBool can_remove_personas { get; }
+               public override bool is_prepared { get; }
+               public override bool is_quiescent { get; }
+               public override Gee.Map<string,Folks.Persona> personas { get; }
+               public override string type_id { get; }
+       }
+       [CCode (cheader_filename = "contacts.h")]
+       public class Store : GLib.Object {
+               public Gee.HashMultiMap<string,string> dont_suggest_link;
+               public Store ();
+               public void add_no_suggest_link (Folks.Individual a, Folks.Individual b);
+               public async Folks.Individual? find_contact (Folks.Query query);
+               public Gee.Collection<Folks.Individual> get_contacts ();
+               public bool may_suggest_link (Folks.Individual a, Folks.Individual b);
+               public Folks.IndividualAggregator aggregator { get; private set; }
+               public Folks.BackendStore backend_store { get; }
+               public bool is_prepared { get; }
+               public bool is_quiescent { get; }
+               public signal void added (Folks.Individual c);
+               public signal void prepared ();
+               public signal void quiescent ();
+               public signal void removed (Folks.Individual c);
+       }
+       [CCode (cheader_filename = "contacts.h")]
+       public class TypeDescriptor : GLib.Object {
+               public Gtk.TreeIter iter;
+               public string? name;
+               public string[]? vcard_types;
+               public const string X_GOOGLE_LABEL;
+               public TypeDescriptor ();
+               public TypeDescriptor.custom (string name);
+               public bool is_custom ();
+               public TypeDescriptor.other ();
+               public void save_to_field_details (Folks.AbstractFieldDetails details);
+               public string to_string ();
+               public TypeDescriptor.vcard (string untranslated_name, string[] types);
+               public string display_name { get; }
+       }
+       [CCode (cheader_filename = "contacts.h")]
+       public class TypeSet : GLib.Object {
+               public string format_type (Folks.AbstractFieldDetails detail);
+               public unowned Contacts.TypeDescriptor? get_descriptor_for_custom_label (string label);
+               public void get_iter_for_custom_label (string label, out Gtk.TreeIter iter);
+               public void get_iter_for_field_details (Folks.AbstractFieldDetails detail, out Gtk.TreeIter 
iter);
+               public void get_iter_for_vcard_type (string type, out Gtk.TreeIter iter);
+               public Contacts.TypeDescriptor lookup_descriptor_for_field_details 
(Folks.AbstractFieldDetails detail);
+               public unowned Contacts.TypeDescriptor? lookup_descriptor_in_store (string display_name);
+               public string category { get; set construct; }
+               public static Contacts.TypeSet email { get; }
+               public static Contacts.TypeSet general { get; }
+               public static Contacts.TypeSet phone { get; }
+               public Gtk.ListStore store { get; private set; }
+       }
+       [CCode (cheader_filename = "contacts.h")]
+       public struct ImService {
+               public weak string service_name;
+               public weak string display_name;
+               public static string get_display_name (string service_name);
+       }
+       [CCode (cheader_filename = "contacts.h")]
+       public static E.SourceRegistry? eds_source_registry;
+       [CCode (cheader_filename = "contacts.h")]
+       public static void activate_action (string app_id, string action, GLib.Variant? parameter, uint32 
timestamp);
+       [CCode (cheader_filename = "contacts.h")]
+       public static void add_separator (Gtk.ListBoxRow row, Gtk.ListBoxRow? before_row);
+       [CCode (cheader_filename = "contacts.h")]
+       public static bool ensure_eds_accounts (bool allow_interaction);
+       [CCode (cheader_filename = "contacts.h")]
+       public static bool esource_uid_is_google (string uid);
+       [CCode (cheader_filename = "contacts.h")]
+       public static Gtk.Image? get_icon_for_goa_account (string goa_id);
+       [CCode (cheader_filename = "contacts.h")]
+       public static bool has_goa_account ();
+       [CCode (cheader_filename = "contacts.h")]
+       public static bool is_set (string? str);
+       [CCode (cheader_filename = "contacts.h")]
+       public static string? lookup_esource_name_by_uid (string uid);
+       [CCode (cheader_filename = "contacts.h")]
+       public static string? lookup_esource_name_by_uid_for_contact (string uid);
+}
diff --git a/_build/src/gnome-contacts b/_build/src/gnome-contacts
new file mode 100755
index 0000000..0a4c2a1
Binary files /dev/null and b/_build/src/gnome-contacts differ
diff --git a/_build/src/gnome-contacts-search-provider b/_build/src/gnome-contacts-search-provider
new file mode 100755
index 0000000..a776249
Binary files /dev/null and b/_build/src/gnome-contacts-search-provider differ
diff --git a/_build/src/libcontacts.a b/_build/src/libcontacts.a
new file mode 100644
index 0000000..60a8e76
Binary files /dev/null and b/_build/src/libcontacts.a differ
diff --git a/_build/tests/59830eb@@basic-test@exe/basic-test.c 
b/_build/tests/59830eb@@basic-test@exe/basic-test.c
new file mode 100644
index 0000000..258a6ce
--- /dev/null
+++ b/_build/tests/59830eb@@basic-test@exe/basic-test.c
@@ -0,0 +1,90 @@
+/* basic-test.c generated by valac 0.47.2.1-ce69, the Vala compiler
+ * generated from basic-test.vala, do not modify */
+
+/*
+ * Copyright (C) 2018 Niels De Graef <nielsdegraef gmail com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <gee.h>
+#include <glib-object.h>
+#include "contacts.h"
+
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+void _vala_main (gchar** args,
+                 gint args_length1);
+void contacts_utils_tests_get_first (void);
+static void _contacts_utils_tests_get_first_gtest_func (void);
+
+static void
+_contacts_utils_tests_get_first_gtest_func (void)
+{
+#line 22 "../tests/basic-test.vala"
+       contacts_utils_tests_get_first ();
+#line 41 "basic-test.c"
+}
+
+void
+_vala_main (gchar** args,
+            gint args_length1)
+{
+#line 21 "../tests/basic-test.vala"
+       g_test_init ((gint*) (&args_length1), &args, NULL);
+#line 22 "../tests/basic-test.vala"
+       g_test_add_func ("/utils/get_first", _contacts_utils_tests_get_first_gtest_func);
+#line 23 "../tests/basic-test.vala"
+       g_test_run ();
+#line 54 "basic-test.c"
+}
+
+int
+main (int argc,
+      char ** argv)
+{
+#line 20 "../tests/basic-test.vala"
+       _vala_main (argv, argc);
+#line 20 "../tests/basic-test.vala"
+       return 0;
+#line 65 "basic-test.c"
+}
+
+void
+contacts_utils_tests_get_first (void)
+{
+       GeeCollection* empty = NULL;
+       GeeCollection* _tmp0_;
+       gpointer _tmp1_;
+       GObject* _tmp2_;
+#line 28 "../tests/basic-test.vala"
+       _tmp0_ = gee_collection_empty (G_TYPE_OBJECT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 
g_object_unref);
+#line 28 "../tests/basic-test.vala"
+       empty = _tmp0_;
+#line 29 "../tests/basic-test.vala"
+       _tmp1_ = contacts_utils_get_first (G_TYPE_OBJECT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 
g_object_unref, empty);
+#line 29 "../tests/basic-test.vala"
+       _tmp2_ = (GObject*) _tmp1_;
+#line 29 "../tests/basic-test.vala"
+       g_assert_true (_tmp2_ == NULL);
+#line 29 "../tests/basic-test.vala"
+       _g_object_unref0 (_tmp2_);
+#line 27 "../tests/basic-test.vala"
+       _g_object_unref0 (empty);
+#line 89 "basic-test.c"
+}
+
diff --git a/_build/tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o 
b/_build/tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o
new file mode 100644
index 0000000..06c6768
Binary files /dev/null and b/_build/tests/59830eb@@basic-test@exe/meson-generated_basic-test.c.o differ
diff --git a/_build/tests/basic-test b/_build/tests/basic-test
new file mode 100755
index 0000000..4933ef0
Binary files /dev/null and b/_build/tests/basic-test differ
diff --git a/data/flatpak/org.gnome.Contacts.Devel.json b/data/flatpak/org.gnome.Contacts.Devel.json
index 8179847..a2c83d3 100644
--- a/data/flatpak/org.gnome.Contacts.Devel.json
+++ b/data/flatpak/org.gnome.Contacts.Devel.json
@@ -4,7 +4,10 @@
     "runtime-version": "master",
     "sdk": "org.gnome.Sdk",
     "command": "gnome-contacts",
-    "desktop-file-name-prefix": "(Development) ",
+    "tags" : [
+      "Development",
+      "Nightly"
+    ],
     "finish-args": [
         /* X11 + XShm access */
         "--share=ipc", "--socket=x11",



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]