<mxfile host="app.diagrams.net" modified="2026-04-22T10:45:00.000Z" agent="Codex" version="25.0.2">
  <diagram id="hris-database-core-erd" name="HRIS Database Core ERD Detail">
    <mxGraphModel dx="1788" dy="980" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="2000" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="title" value="HRIS Database Core ERD Detail" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="620" height="30" as="geometry" />
        </mxCell>
        <mxCell id="sub" value="Detailed core tables used by employee, attendance, payroll, BPJS, THR, and approval engine." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=12;fontColor=#475569;" vertex="1" parent="1">
          <mxGeometry x="40" y="52" width="1100" height="20" as="geometry" />
        </mxCell>

        <mxCell id="lane1" value="A. Foundation &amp; Structure" style="swimlane;html=1;rounded=1;fillColor=#f8fafc;strokeColor=#cbd5e1;fontSize=16;fontStyle=1;startSize=32;" vertex="1" parent="1">
          <mxGeometry x="40" y="100" width="440" height="1700" as="geometry" />
        </mxCell>
        <mxCell id="lane2" value="B. Employee &amp; HR Documents" style="swimlane;html=1;rounded=1;fillColor=#eff6ff;strokeColor=#bfdbfe;fontSize=16;fontStyle=1;startSize=32;" vertex="1" parent="1">
          <mxGeometry x="510" y="100" width="520" height="1700" as="geometry" />
        </mxCell>
        <mxCell id="lane3" value="C. Assignment &amp; Operational Transactions" style="swimlane;html=1;rounded=1;fillColor=#f0fdf4;strokeColor=#bbf7d0;fontSize=16;fontStyle=1;startSize=32;" vertex="1" parent="1">
          <mxGeometry x="1060" y="100" width="560" height="1700" as="geometry" />
        </mxCell>
        <mxCell id="lane4" value="D. Approval Engine" style="swimlane;html=1;rounded=1;fillColor=#fffbeb;strokeColor=#fde68a;fontSize=16;fontStyle=1;startSize=32;" vertex="1" parent="1">
          <mxGeometry x="1650" y="100" width="370" height="680" as="geometry" />
        </mxCell>
        <mxCell id="lane5" value="E. Payroll, BPJS &amp; THR" style="swimlane;html=1;rounded=1;fillColor=#faf5ff;strokeColor=#d8b4fe;fontSize=16;fontStyle=1;startSize=32;" vertex="1" parent="1">
          <mxGeometry x="1650" y="810" width="860" height="990" as="geometry" />
        </mxCell>

        <mxCell id="a1" value="master_clients&#xa;id&#xa;name&#xa;is_active" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="160" width="170" height="84" as="geometry" />
        </mxCell>
        <mxCell id="a2" value="master_areas&#xa;id&#xa;client_id&#xa;parent_id&#xa;name&#xa;is_active" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="270" width="190" height="110" as="geometry" />
        </mxCell>
        <mxCell id="a3" value="master_jabatans&#xa;id&#xa;code&#xa;name&#xa;is_active" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="410" width="170" height="95" as="geometry" />
        </mxCell>
        <mxCell id="a4" value="master_komponen_pendapatans&#xa;id&#xa;code&#xa;name&#xa;component_type&#xa;is_taxable" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="540" width="200" height="120" as="geometry" />
        </mxCell>
        <mxCell id="a5" value="master_komponen_potongans&#xa;id&#xa;code&#xa;name&#xa;component_type&#xa;is_mandatory" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="690" width="200" height="120" as="geometry" />
        </mxCell>
        <mxCell id="a6" value="master_profil_gajis&#xa;id&#xa;code&#xa;name&#xa;salary policy cols" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="840" width="190" height="100" as="geometry" />
        </mxCell>
        <mxCell id="a7" value="master_profil_gaji_details&#xa;id&#xa;profil_gaji_id&#xa;group&#xa;komponen pendapatan/potongan&#xa;calc_type&#xa;amount/percent" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="970" width="220" height="150" as="geometry" />
        </mxCell>
        <mxCell id="a8" value="master_bpjs&#xa;id&#xa;component_code&#xa;basis_type&#xa;uses_ceiling&#xa;default_enrollment_mode&#xa;rate company/employee" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="1160" width="220" height="150" as="geometry" />
        </mxCell>
        <mxCell id="a9" value="master_bpjs_rate_histories&#xa;id&#xa;bpjs_id&#xa;effective_start/end&#xa;rate_company_percent&#xa;rate_employee_percent" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="1340" width="220" height="140" as="geometry" />
        </mxCell>
        <mxCell id="a10" value="master_bpjs_ceiling_histories&#xa;id&#xa;bpjs_id&#xa;effective_start/end&#xa;ceiling_nominal" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="1510" width="220" height="120" as="geometry" />
        </mxCell>
        <mxCell id="a11" value="master_profil_bulans&#xa;id&#xa;code&#xa;start_date / end_date&#xa;status&#xa;payroll_settings" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#64748b;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="90" y="1660" width="210" height="120" as="geometry" />
        </mxCell>

        <mxCell id="b1" value="master_karyawans&#xa;id&#xa;employee_code&#xa;nik&#xa;finger_id&#xa;jabatan_id&#xa;area_id&#xa;employment_status&#xa;phone / emergency&#xa;ktp &amp; domisili&#xa;npwp / religion" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#dbeafe;strokeColor=#2563eb;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="560" y="160" width="250" height="220" as="geometry" />
        </mxCell>
        <mxCell id="b2" value="master_karyawan_bank_accounts&#xa;id&#xa;karyawan_id&#xa;bank_name&#xa;account_no&#xa;is_default" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="410" width="220" height="120" as="geometry" />
        </mxCell>
        <mxCell id="b3" value="karyawan_area_histories&#xa;id&#xa;karyawan_id&#xa;area_id&#xa;effective_start/end&#xa;is_current" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="560" width="220" height="120" as="geometry" />
        </mxCell>
        <mxCell id="b4" value="master_karyawan_offering_letters&#xa;id&#xa;karyawan_id&#xa;effective_date&#xa;base_salary&#xa;allowance fields&#xa;incentive_amount" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="710" width="240" height="150" as="geometry" />
        </mxCell>
        <mxCell id="b5" value="master_karyawan_contract_documents&#xa;id&#xa;karyawan_id&#xa;document_type&#xa;reference_no&#xa;file_path" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="890" width="220" height="120" as="geometry" />
        </mxCell>
        <mxCell id="b6" value="master_karyawan_supporting_documents&#xa;id&#xa;karyawan_id&#xa;document_category&#xa;title&#xa;file_path" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="1040" width="230" height="120" as="geometry" />
        </mxCell>
        <mxCell id="b7" value="master_karyawan_signature_requests&#xa;id&#xa;karyawan_id&#xa;request_type&#xa;reference_type / id&#xa;token&#xa;status&#xa;payload&#xa;expires_at&#xa;signed_at" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="1190" width="250" height="180" as="geometry" />
        </mxCell>
        <mxCell id="b8" value="master_karyawan_bpjs_profiles&#xa;id&#xa;karyawan_id&#xa;effective_start/end&#xa;basis_general_nominal&#xa;basis_jp_nominal&#xa;basis_health_nominal" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="1400" width="250" height="170" as="geometry" />
        </mxCell>
        <mxCell id="b9" value="master_karyawan_bpjs_profile_components&#xa;id&#xa;profile_id&#xa;bpjs_id&#xa;is_enrolled" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#3b82f6;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="560" y="1600" width="220" height="110" as="geometry" />
        </mxCell>

        <mxCell id="c1" value="master_profil_bulan_karyawans&#xa;id&#xa;profil_bulan_id&#xa;karyawan_id&#xa;profil_gaji_id&#xa;profil_perkalian_jam_id&#xa;salary_cycle_type&#xa;salary_cycle_anchor_date&#xa;komponen ids json&#xa;is_active" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#15803d;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="1110" y="160" width="280" height="220" as="geometry" />
        </mxCell>
        <mxCell id="c2" value="payroll_karyawan_component_overrides&#xa;id&#xa;profil_bulan_karyawan_id&#xa;component_group&#xa;komponen_id&#xa;calc_type&#xa;amount/percent&#xa;effective_start/end" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1110" y="410" width="260" height="180" as="geometry" />
        </mxCell>
        <mxCell id="c3" value="attendance_logs&#xa;id&#xa;employee identity&#xa;device/source&#xa;check time" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1110" y="620" width="210" height="110" as="geometry" />
        </mxCell>
        <mxCell id="c4" value="attendance_daily_reviews&#xa;id&#xa;karyawan_id&#xa;profil_bulan_id&#xa;work_date&#xa;status&#xa;approved hours&#xa;late / alpha / ot" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#15803d;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="1110" y="760" width="250" height="170" as="geometry" />
        </mxCell>
        <mxCell id="c5" value="attendance_daily_review_histories&#xa;id&#xa;attendance_daily_review_id&#xa;action&#xa;notes&#xa;actor" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1110" y="960" width="230" height="130" as="geometry" />
        </mxCell>
        <mxCell id="c6" value="surat_perintah_lemburs&#xa;id&#xa;document_no&#xa;karyawan_id&#xa;approval_flow_id&#xa;approval_request_id&#xa;work_date&#xa;status&#xa;overtime_type&#xa;separate payout cols" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#dcfce7;strokeColor=#15803d;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="1110" y="1120" width="270" height="210" as="geometry" />
        </mxCell>
        <mxCell id="c7" value="leave / reimbursement / forgetting clock&#xa;operational request tables&#xa;many of them create approval request linkage" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#16a34a;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1110" y="1360" width="260" height="110" as="geometry" />
        </mxCell>

        <mxCell id="d1" value="master_approval_flows&#xa;id&#xa;module_key&#xa;name" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#fef3c7;strokeColor=#d97706;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1700" y="180" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="d2" value="master_approval_flow_steps&#xa;id&#xa;flow_id&#xa;step_order&#xa;approver_user_id" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#fef3c7;strokeColor=#d97706;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1700" y="300" width="200" height="110" as="geometry" />
        </mxCell>
        <mxCell id="d3" value="approval_requests&#xa;id&#xa;flow_id&#xa;module_key&#xa;reference_type&#xa;reference_id&#xa;status&#xa;current_step_order" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#fde68a;strokeColor=#d97706;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="1700" y="450" width="220" height="170" as="geometry" />
        </mxCell>
        <mxCell id="d4" value="approval_request_steps&#xa;id&#xa;approval_request_id&#xa;step_order&#xa;approver_user_id&#xa;status&#xa;acted_at" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#d97706;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1700" y="650" width="220" height="150" as="geometry" />
        </mxCell>

        <mxCell id="e1" value="payroll_payment_histories&#xa;id&#xa;profil_bulan_karyawan_id&#xa;profil_bulan_id&#xa;karyawan_id&#xa;pay_date&#xa;period_start/end&#xa;gross / pph21 / bpjs / reimburse / net&#xa;bank_account_id&#xa;tax_proof_no" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ede9fe;strokeColor=#7c3aed;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="1710" y="890" width="280" height="220" as="geometry" />
        </mxCell>
        <mxCell id="e2" value="payroll_payment_bpjs_details&#xa;id&#xa;payment_history_id&#xa;karyawan_id&#xa;bpjs_id&#xa;component_code&#xa;basis_type&#xa;basis / ceiling&#xa;company_nominal&#xa;employee_nominal&#xa;deduct_to_payroll" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#7c3aed;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="2020" y="890" width="270" height="220" as="geometry" />
        </mxCell>
        <mxCell id="e3" value="payroll_slip_profiles&#xa;id&#xa;name&#xa;layout_json&#xa;show_signature" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#7c3aed;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="2320" y="890" width="170" height="110" as="geometry" />
        </mxCell>
        <mxCell id="e4" value="thr_requests&#xa;id&#xa;request_no&#xa;year&#xa;profil_bulan_id&#xa;status&#xa;total / approved / paid / outstanding" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ede9fe;strokeColor=#7c3aed;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="1710" y="1160" width="240" height="170" as="geometry" />
        </mxCell>
        <mxCell id="e5" value="thr_request_details&#xa;id&#xa;thr_request_id&#xa;profil_bulan_karyawan_id&#xa;karyawan_id&#xa;base_salary_monthly&#xa;prorate factor&#xa;thr / approved / paid / outstanding&#xa;status" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#7c3aed;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="1980" y="1160" width="260" height="200" as="geometry" />
        </mxCell>
        <mxCell id="e6" value="thr_payment_histories&#xa;id&#xa;thr_request_id&#xa;thr_request_detail_id&#xa;karyawan_id&#xa;pay_date&#xa;amount&#xa;payment_method&#xa;tax_no" style="shape=rectangle;rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#7c3aed;fontSize=12;" vertex="1" parent="1">
          <mxGeometry x="2270" y="1160" width="220" height="170" as="geometry" />
        </mxCell>
        <mxCell id="e7" value="Note: assignment bulanan = pivot utama payroll. BPJS detail dan THR detail disimpan terpisah agar audit per payment/per request tetap stabil." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8fafc;strokeColor=#94a3b8;fontSize=12;fontColor=#334155;" vertex="1" parent="1">
          <mxGeometry x="1710" y="1390" width="780" height="70" as="geometry" />
        </mxCell>

        <mxCell id="r1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#64748b;" edge="1" parent="1" source="a1" target="a2"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#64748b;" edge="1" parent="1" source="a6" target="a7"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#64748b;" edge="1" parent="1" source="a4" target="a7"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#64748b;" edge="1" parent="1" source="a5" target="a7"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#64748b;" edge="1" parent="1" source="a8" target="a9"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#64748b;" edge="1" parent="1" source="a8" target="a10"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="r7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;" edge="1" parent="1" source="a2" target="b1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#2563eb;" edge="1" parent="1" source="a3" target="b1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b1" target="b2"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b1" target="b3"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b1" target="b4"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b1" target="b5"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b1" target="b6"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b1" target="b7"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b1" target="b8"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="a8" target="b9"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#3b82f6;" edge="1" parent="1" source="b8" target="b9"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="r18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#15803d;" edge="1" parent="1" source="a11" target="c1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#15803d;" edge="1" parent="1" source="b1" target="c1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#15803d;" edge="1" parent="1" source="a6" target="c1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="c1" target="c2"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="c1" target="c4"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="b1" target="c3"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="c3" target="c4"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="c4" target="c5"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="b1" target="c6"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="c7" target="d3"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#16a34a;" edge="1" parent="1" source="c6" target="d3"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="r29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#d97706;" edge="1" parent="1" source="d1" target="d2"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#d97706;" edge="1" parent="1" source="d1" target="d3"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#d97706;" edge="1" parent="1" source="d3" target="d4"><mxGeometry relative="1" as="geometry" /></mxCell>

        <mxCell id="r32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="c1" target="e1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="b1" target="e1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="b2" target="e1"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="e1" target="e2"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="a8" target="e2"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="b8" target="e2"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="a11" target="e4"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="e4" target="e5"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="c1" target="e5"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="b1" target="e5"><mxGeometry relative="1" as="geometry" /></mxCell>
        <mxCell id="r42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#7c3aed;" edge="1" parent="1" source="e5" target="e6"><mxGeometry relative="1" as="geometry" /></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
